不定方程式の整数解

 投稿者:山中和義  投稿日:2013年 5月 1日(水)11時12分45秒
  高校数学では、「数と式」で式の展開、因数分解を学ぶ。
そこに出てくる等式を使って、不定方程式の整数解を求めてみる。


問題 ピタゴラス数、円周上の格子点
x^2+y^2=z^2の整数解を求めよ。
(考察)
(a±b)^2=(a干b)^2±4abを考える。
a=m^2、b=n^2とすると、(m^2±n^2)^2=(m^2干n^2)^2±(2mn)^2
(終り)


問題
x^2+2y^2=z^2の整数解を求めよ。
(考察)
(a±b)^2=(a干b)^2±4abを考える。
a=m^2、b=2n^2とすると、(m^2±2n^2)^2=(m^2干2n^2)^2±2(2mn)^2
(終り)

100 !x^2+2y^2=z^2
110 FOR m=-10 TO 10
120    FOR n=-10 TO 10
130       LET z=m^2+2*n^2
140       LET x=m^2-2*n^2
150       LET y=2*m*n
160       IF x^2+2*y^2=z^2 THEN PRINT m;n; x;y;z
170    NEXT n
180 NEXT m
190 END


問題
x^2±y^2=±z^3の整数解を求めよ。
・x^2+y^2=z^3の整数解を求めよ。
・x^2+y^3=z^2の整数解を求めよ。
(考察)
(a±b)^3=a^2(a±3b)±b^2(b±3a)を考える。
 a±3b=4m^2 ← 式1
 ±3a+b=4n^2 ← 式2
とすると、
式1±式2より、a±b=m^2±n^2
3*式1±式2より、b=(3m^2干n^2)/2
式1±3*式2より、a=(m^2干3n^2)/2
よって、(m^2±n^2)^3={(m^2干3n^2)*m}^2±{(3m^2干n^2)*n}^2
(終り)

100 !x^2+y^2=z^3
110 FOR m=-10 TO 10
120    FOR n=-10 TO 10
130       LET z=m^2+n^2
140       LET x=(m^2-3*n^2)*m
150       LET y=(3*m^2-n^2)*n
160       IF x^2+y^2=z^3 THEN PRINT m;n; x;y;z
170    NEXT n
180 NEXT m
190 END


100 !x^2+y^3=z^2
110 FOR m=-10 TO 10
120    FOR n=-10 TO 10
130       LET y=m^2-n^2
140       LET z=(m^2+3*n^2)*m
150       LET x=(3*m^2+n^2)*n
160       IF x^2+y^3=z^2 THEN PRINT m;n; x;y;z
170    NEXT n
180 NEXT m
190 END



次の等式も使い勝手が良い。

x^3+y^3+z^3-3xyz
=(x+y+z)(x^2+y^2+z^2-xy-yz-zx)
=(x+y+z){(x+y+z)^2-3(xy+yz+zx)}
=(1/2)(x+y+z){(x-y)^2+(y-z)^2+(z-x)^2}
=(x+y+z)(x+ωy+ω^2z)(x+ω^2y+ωz) ただし、ω=(-1+(√3)i)/2 ※1の虚数立方根


 問題
 (a-b)^3+(b-c)^3+(c-a)^3を因数分解せよ。

 問題 相加・相乗平均の関係
 a,b,cを任意の正数とするとき、(a+b+c)/3≧(abc)^(1/3)を示せ。

 問題
 3次方程式x^3+3px+q=0の解を求めよ。 →カルダノの公式、フォンタナ(タルタリア)の公式

など

 

Re: 不定方程式の整数解

 投稿者:山中和義  投稿日:2013年 5月 4日(土)20時13分49秒
  > No.3037[元記事へ]

問題
(x+y-1)(y+z-1)(z+x-1)=6xyz、1<x<y<z
を満たす自然数の組をすべて答えよ。


答え
f(x,y,z)=(x+y-1)(y+z-1)(z+x-1)-6xyz とおく。
zで偏微分すると、
fz(x,y,z)
=(x+y-1){(y+z-1)+(z+x-1)}-6xy
={x+(y-1)}{y+(z-1)+(z-1)+x}-6xy
≧2x(3y+x)-6xy=2x^2>0
よって、fはzに関して狭義単調増加となる。
f(x,y,y+1)≦f(x,y,z)<f(x,y,z+1) ← 式1

g(x,y)=f(x,y,y+1)とおくと、g(x,y)=2y^3-2(x+1)y^2+2x(x-4)y
yで偏微分すると、gy(x,y)=6y^2-4(x+1)y+2x(x-4)
さらにyで偏微分すると、gyy(x,y)=12y-4(x+1)>0
よって、gy(x,y)は、yに関して単調増加となる。
gy(x,x+1)=4x^2-4x+2=2x^2+2(x-1)^2>0 したがって、gy(x,x+1)>0
よって、g(x,y)=f(x,y,y+1)は、yに関して狭義単調増加となる。
f(x,x+1,x+2)≦f(x,y,y+1)<f(x,y+1,y+2) ← 式2

式1と式2より、f(x,x+1,x+2)≦f(x,y,z)
よって、f(x,y,z)=0とすると、f(x,x+1,x+2)≦0でなければならない。
これより、f(x,x+1,x+2)=2x(x+1)(x-4)なので x=2,3,4でなければならない。

x=2,3,4について、f(x,y,z)≧0になるまでy,zを昇順に調べる。


LET x=2
DO
   LET y=x+1
   DO
      LET z=y+1
      DO
         LET f=(x+y-1)*(y+z-1)*(z+x-1)-6*x*y*z
         PRINT x;y;z; f
         IF f>=0 THEN EXIT DO !f(x,y,z)≧0になるまで
         LET z=z+1 !昇順に調べる
      LOOP
      PRINT
      IF z=y+1 THEN EXIT DO !f(x,y,y+1)>0なら可能性がない
      LET y=y+1
   LOOP
   IF y=x+1 THEN EXIT DO !f(x,x+1,x+2)>0なら可能性がない
   LET x=x+1
LOOP

END



答え
相加・相乗平均の関係より、
 x+(y-1)≧2√{x(y-1)}
 y+(z-1)≧2√{y(z-1)}
 (z-1)+x≧2√{(z-1)x}
辺々掛け合わせて、
 (x+y-1)(y+z-1)(z+x-1)≧8x(z-1)√{(y-1)y}
∴6xyz≧8x(z-1)√{(y-1)y}
両辺を8xyz(≠0)で割って、
 3/4≧(1-1/z)√(1-1/y)
両辺を2乗して、
 9/16≧(1-1/z)^2(1-1/y)
∴9/16≧(1-1/z)^2(1-1/y)>(1-1/y)^2(1-1/y)=(1-1/y)^3
∴9/16>(1-1/y)^3
∴(9/16)^(1/3)>1-1/y
∴1-(9/16)^(1/3)<1/y
∴y<1/{1-(9/16)^(1/3)}=5.730… <6
よって、(x,y)の組は、(2,3)、(2,4)、(2,5)、(3,4)、(3,5)、(4,5)のみである。

また、zの上限は、
1<x<y<zより、
1+y-1<x+y-1 ∴y<x+y-1
1+z-1<y+z-1 ∴z<y+z-1
これより、
yz(z+x-1)<(x+y-1)(y+z-1)(z+x-1)=6xyz ∴(z+x-1)<6x ∴z<5x+1
よって、1<x<y<z≦5x


FOR x=2 TO 4
   FOR y=x+1 TO 5
      FOR z=y+1 TO 5*x
         IF (x+y-1)*(y+z-1)*(z+x-1)=6*x*y*z THEN PRINT x;y;z
      NEXT z
   NEXT y
NEXT x

END


!後半の「また、zの上限は、… 」の部分を、
! x=X,y=Yを代入すると、zの2次式なので、解の公式からzを求める。
!とする。
!(X+Y-1)(Y+z-1)(z+X-1)-6XYz=0 ∴(X+Y-1)z^2+{(X+Y-1)(X+Y-2)-6XY}z+(X+Y-1)(X-1)(Y-1)}=0


FOR x=2 TO 4
   FOR y=x+1 TO 5
      LET A=x+y-1 !2次方程式 Az^2+Bz+C=0
      LET B=(x+y-1)*(x+y-2)-6*x*y
      LET C=(x+y-1)*(x-1)*(y-1)
      LET D=B^2-4*A*C !判別式
      IF D>=0 THEN
         LET z=(-B+SQR(D))/(2*A)
         IF z>y AND z=INT(z) THEN PRINT x;y;z
         LET z=(-B-SQR(D))/(2*A)
         IF z>y AND z=INT(z) THEN PRINT x;y;z
      END IF
   NEXT y
NEXT x

END



答え グラフによる
f(x,y,z)=(x+y-1)(y+z-1)(z+x-1)-6xyzのz=Zでの断面(等高線)のグラフを描く。
1<x<y<zなので、第1象限の格子点に着目する。

参考サイト
Full BASICと十進BASICの Q&A
 関数のグラフ・曲線を描くプログラム
  基本サンプル


DEF f(x,y)=(x+y-1)*(y+ZZ-1)*(ZZ+x-1)-6*x*y*ZZ

LET left=-1 !表示範囲
LET right=8
LET bottom=-1
LET top=8
SET WINDOW left,right,bottom,top
DRAW grid
SET POINT STYLE 1

FOR ZZ=4 TO 10 !z=Zとする
   SET POINT COLOR ZZ-3

   FOR y=bottom TO top STEP (top-bottom)/2000 !y方向への走査
      LET x=left
      LET z0=f(x,y)
      FOR x=left TO right STEP (right-left)/2000 !x方向への走査
         LET z=f(x,y)
         IF z0*z<0 THEN  PLOT POINTS: x,y
         LET z0=z
      NEXT x
   NEXT y

NEXT ZZ

END


 

戻る