見出し画像

60度または120度の角度を持つ三角形の列挙は可能

恒等式

$${3(\tfrac{-3x-2y+2z}{3})^2+(\tfrac{-6x+y+2z}{3})^2-(\tfrac{-6x-2y+5z}{3})^2 =3x^2+y^2-z^2}$$

を利用すれば、$${3x^2+y^2=z^2}$$の解を次々と見つけ出すことができます。ここでは、互いに素な整数解に限っているため、次のようにします。

$${x_0'=-3x-2y+2z,y_0'=-6x+y+2z,z_0'=-6x-2y+5z   (1)'}$$
$${x_0=x_0'/g_0,y_0=y_0'/g_0,z_0=z_0'/g_0 但し、g_0=gcm(x_0',y_0',z_0')  (1)}$$  

$${x_1からz_3}$$も、同様です。割る前の形を表示しておきます。

$${x_1'=3x-2y+2z,y_1'=6x+y+2z,z_1'=6x-2y+5z            (2)'}$$  
$${x_2'=-3x+2y+2z,y_2'=-6x-y+2z,z_2'=-6x+2y+5z  (3)'}$$  
$${x_3'=3x+2y+2z,y_3'=6x-y+2z,z_3'=6x+2y+5z            (4)'}$$  


解の隣接関係を調べるために、次のようなプログラムを書いてみました。

 #include <stdio.h> #include <stdlib.h>
int _gcm(int a,int b){return (b==0)?a:_gcm(b,a%b);}
int gcm(int a,int b){
    if(a<0)a=-a;if(b<0)b=-b;if(a==b) return a==0?1:a;
	return (a>b)?_gcm(a,b):_gcm(b,a);
}

int main(int argc,char *argv[]){
    int i,j,k,m[3000][6],i_max,flag,a,b,c,p,q,r,d,s1,s2;

	m[0][0]=1;m[0][1]=1;m[0][2]=2;

	for(i=0,i_max=1;i<300;i++){
		a=m[i][0];b=m[i][1];c=m[i][2];
        for(j=0;j<4;j++){
            s1=(j&1)?-1:1;s2=(j&2)?-1:1;
    		p = (-3*s1*a -2*s2*b + 2*c);if(p<0)p=-p;
	    	q = (-6*s1*a +  s2*b + 2*c);if(q<0)q=-q;
		    r = (-6*s1*a -2*s2*b + 5*c);if(r<0)r=-r;
            d=gcm(p,gcm(r,q));
            p=p/d;q=q/d;r=r/d;
            for(k=0,flag=1;k<i_max && flag;k++)if(m[k][0]==p && m[k][1]==q && m[k][2]==r)flag=0;
            if(flag){m[i_max][0]=p;m[i_max][1]=q;m[i_max][2]=r;m[i_max][3]=i;m[i_max][4]=j;m[i_max][5]=d;i_max++;}
        }
	}
	
	for(i=0;i<i_max;i++){
		a=m[i][0],b=m[i][1],c=m[i][2],d=3*a*a+b*b-c*c;
		printf("%d <%d.%d.%d>: (%d,%d,%d)%s\n",i,m[i][3],m[i][4],m[i][5],a,b,c,d?"err":"");
	}
    printf("end\n");
    return 0;
}

そして、実行結果が次です。

0 <0.0.0>: (1,1,2)
1 <0.1.1>: (5,11,14)
2 <1.1.3>: (7,23,26)
3 <1.2.1>: (35,13,62)
4 <1.3.1>: (65,47,122)
5 <2.1.9>: (3,13,14)
6 <2.2.1>: (77,13,134)
7 <2.3.1>: (119,71,218)
8 <3.0.1>: (7,73,74)
9 <3.1.1>: (203,347,494)
10 <3.3.3>: (85,107,182)
11 <4.1.3>: (115,227,302)
12 <4.2.1>: (143,193,314)
13 <4.3.1>: (533,587,1094)
14 <5.1.1>: (11,59,62)
15 <5.2.3>: (15,1,26)
16 <5.3.3>: (21,11,38)
17 <6.0.1>: (11,181,182)
18 <6.1.1>: (473,743,1106)
19 <6.3.3>: (175,239,386)
20 <7.1.3>: (217,407,554)
21 <7.2.1>: (221,349,518)
22 <7.3.1>: (935,1079,1946)
23 <8.0.1>: (19,179,182)
24 <8.1.1>: (23,263,266)
25 <8.2.3>: (91,11,158)
26 <9.1.3>: (301,851,998)
27 <9.2.1>: (1073,577,1946)
28 <9.3.1>: (2291,1859,4382)
29 <10.1.9>: (45,109,134)
30 <10.2.1>: (323,253,614)
31 <10.3.1>: (833,767,1634)
32 <11.1.9>: (55,169,194)
33 <11.2.1>: (713,313,1274)
34 <11.3.1>: (1403,1067,2654)
....(以降省略)

番号 <親番号、タイプ、最大公約数>: (「非負整数解」)
と表示しています。
タイプというのは、隣接解を作る時、(1)から(4)の変換のうちどれを用いて生成したかを示すラベルです。


困りました。説明のために、同様のものをピタゴラス数生成式で作ってみたので、見比べて下さい。


0 <0.0.0>: (1,0,1)
1 <0.1.1>: (3,4,5)
2 <1.1.1>: (5,12,13)
3 <1.2.1>: (15,8,17)
4 <1.3.1>: (21,20,29)
5 <2.1.1>: (7,24,25)
6 <2.2.1>: (45,28,53)
7 <2.3.1>: (55,48,73)
8 <3.1.1>: (33,56,65)
9 <3.2.1>: (35,12,37)
10 <3.3.1>: (65,72,97)
11 <4.1.1>: (39,80,89)
12 <4.2.1>: (77,36,85)
13 <4.3.1>: (119,120,169)
14 <5.1.1>: (9,40,41)
15 <5.2.1>: (91,60,109)
16 <5.3.1>: (105,88,137)
17 <6.1.1>: (95,168,193)
18 <6.2.1>: (117,44,125)
19 <6.3.1>: (207,224,305)
20 <7.1.1>: (105,208,233)
21 <7.2.1>: (187,84,205)
22 <7.3.1>: (297,304,425)
23 <8.1.1>: (51,140,149)
24 <8.2.1>: (209,120,241)
25 <8.3.1>: (275,252,373)
26 <9.1.1>: (85,132,157)
27 <9.2.1>: (63,16,65)
28 <9.3.1>: (133,156,205)
29 <10.1.1>: (115,252,277)
30 <10.2.1>: (273,136,305)
31 <10.3.1>: (403,396,565)
32 <11.1.1>: (57,176,185)
33 <11.2.1>: (299,180,349)
34 <11.3.1>: (377,336,505)
35 <12.1.1>: (175,288,337)
36 <12.2.1>: (165,52,173)
37 <12.3.1>: (319,360,481)
38 <13.1.1>: (217,456,505)
39 <13.2.1>: (459,220,509)
40 <13.3.1>: (697,696,985)

タイプは常に1,2,3の繰り返しです。ピタゴラス数の場合、変換(1)が親を見つけるための変換として使えたので、見られる性質です。
しかし、今度の式では、どれが親への変換なのか、定まっていません。
さらに、致命的なものが、...。


$${(65,47,122)---(115,227,302)---(55,169,194)---(187,37,326)---(143,193,314)---(65,47,122)}$$というループが見つかってしまいました。
タイトル画面、三分木構造と思って埋めていったところ、異なるノードに$${(187,37,326)}$$が現れてしまいました。

さて、どうしましょう。

#60度 #120度 #三角形 #三分木 #完全三分木構造 #ピタゴラス数

#数学がすき

この記事が参加している募集

数学がすき

この記事が気に入ったらサポートをしてみませんか?