今更ですが、ついでに、半整数角四角形の問題を解いてみました。(^_^;
問題を要約すると、例の四角形において、
a=(5/2)°,b=(125/2)°,c=(165/2)°,d=5°
P=(125/2+165/2)°=(290/2)°=145°
e=180°-(145+5)°=30°,f=180°-(5/2+145)°=(65/2)°
このとき、前回と同様にして、次の連立方程式(1),(2)の解を求めます。
ここで、プログラムを作って、定数部分Qの変形に役に立ちそうな公式集を生成すると、次の通りになります。
●生成した公式集
//--- 2x系 ---// sin[ 5 ]=2*sin[ 5/2]*sin[175/2] sin[ 10 ]=2*sin[ 5 ]*sin[ 85 ] sin[ 15 ]=2*sin[ 15/2]*sin[165/2] sin[ 20 ]=2*sin[ 10 ]*sin[ 80 ] sin[ 25 ]=2*sin[ 25/2]*sin[155/2] sin[ 30 ]=2*sin[ 15 ]*sin[ 75 ] sin[ 35 ]=2*sin[ 35/2]*sin[145/2] sin[ 40 ]=2*sin[ 20 ]*sin[ 70 ] sin[ 45 ]=2*sin[ 45/2]*sin[135/2] sin[ 50 ]=2*sin[ 25 ]*sin[ 65 ] sin[ 55 ]=2*sin[ 55/2]*sin[125/2] sin[ 65 ]=2*sin[ 65/2]*sin[115/2] sin[ 70 ]=2*sin[ 35 ]*sin[ 55 ] sin[ 75 ]=2*sin[ 75/2]*sin[105/2] sin[ 80 ]=2*sin[ 40 ]*sin[ 50 ] sin[ 85 ]=2*sin[ 85/2]*sin[ 95/2] sin[ 90 ]=2*sin[ 45 ]*sin[ 45 ] //--- 3x系 ---// sin[ 15/2]=4*sin[ 5/2]*sin[115/2]*sin[125/2] sin[ 15 ]=4*sin[ 5 ]*sin[ 55 ]*sin[ 65 ] sin[ 45/2]=4*sin[ 15/2]*sin[105/2]*sin[135/2] sin[ 30 ]=4*sin[ 10 ]*sin[ 50 ]*sin[ 70 ] sin[ 75/2]=4*sin[ 25/2]*sin[ 95/2]*sin[145/2] sin[105/2]=4*sin[ 35/2]*sin[ 85/2]*sin[155/2] sin[ 60 ]=4*sin[ 20 ]*sin[ 40 ]*sin[ 80 ] sin[135/2]=4*sin[ 45/2]*sin[ 75/2]*sin[165/2] sin[ 75 ]=4*sin[ 25 ]*sin[ 35 ]*sin[ 85 ] sin[165/2]=4*sin[ 55/2]*sin[ 65/2]*sin[175/2] //--- 4x系1 ---// sin[ 10 ]=4*sin[ 5/2]*sin[ 85 ]*sin[175/2] sin[ 20 ]=4*sin[ 5 ]*sin[ 80 ]*sin[ 85 ] sin[ 30 ]=4*sin[ 15/2]*sin[ 75 ]*sin[165/2] sin[ 40 ]=4*sin[ 10 ]*sin[ 70 ]*sin[ 80 ] sin[ 50 ]=4*sin[ 25/2]*sin[ 65 ]*sin[155/2] sin[ 70 ]=4*sin[ 35/2]*sin[ 55 ]*sin[145/2] sin[ 80 ]=4*sin[ 20 ]*sin[ 50 ]*sin[ 70 ] sin[ 90 ]=4*sin[ 45/2]*sin[ 45 ]*sin[135/2] //--- 4x系2 ---// sin[ 10 ]=4*sin[ 5 ]*sin[ 85/2]*sin[ 95/2] sin[ 20 ]=4*sin[ 10 ]*sin[ 40 ]*sin[ 50 ] sin[ 30 ]=4*sin[ 15 ]*sin[ 75/2]*sin[105/2] sin[ 40 ]=4*sin[ 20 ]*sin[ 35 ]*sin[ 55 ] sin[ 50 ]=4*sin[ 25 ]*sin[ 65/2]*sin[115/2] sin[ 70 ]=4*sin[ 55/2]*sin[ 35 ]*sin[125/2] sin[ 80 ]=4*sin[ 25 ]*sin[ 40 ]*sin[ 65 ] sin[ 90 ]=4*sin[ 45/2]*sin[ 45 ]*sin[135/2]
として、上の公式集から、
(3),(4),(5)から、
∴
このとき、(55/2)°+(235/2)°=(290/2)°=145°=Pを満たしているので、x=(55/2)°,y=(235/2)°は、連立方程式(1),(2)の解である。
ちなみに、公式集が多すぎると思う場合は、2x系は2倍角の公式からすぐに導けるのでわざわざ表にしなくてもいいかも知れません。
※参考プログラム
●GenTriFormula02.java
/* * GenTriFormula02.java * * //--- 2x系 ---// * sin[2x]=2sin[x]*sin[90゚-x] * //--- 3x系 ---// * sin[3x]=4sin[x]sin[60゚- x]sin[60゚+x] * //--- 4x系1 ---// * sin[4x]=4sin[x]sin[90゚-2x]sin[90゚-x] * //--- 4x系2 ---// * sin[4x]=4sin[2x]sin[45゚-x]sin[45゚+x] * */ import java.util.Arrays; public class GenTriFormula02 { static String sAngle(double x) { String result=""; int iX =(int)x; if(iX%2==0) result=String.format("%3d ",iX/2); else result=String.format("%3d/2",iX); return result; } public static void main(String[] args) { double[] a = new double[4]; double dx=2.5; System.out.println("//--- 2x系 ---//"); for(double x=0.0; 2.0*x<=90.0; x+=dx){ a[0]=2.0*x; a[1]=x; a[2]=90-x; for(int i=0; i< 3; i++) if(a[i]> 90.0) a[i]=180.0-a[i]; Arrays.sort(a,1,2); if((a[0]-a[1])*(a[0]-a[2])==0) continue; for(int i=0; i< 3; i++) a[i]*=2.0; System.out.printf("sin[%s]=2*sin[%s]*sin[%s]\n", sAngle(a[0]),sAngle(a[1]),sAngle(a[2])); } System.out.println("//--- 3x系 ---//"); for(double x=0.0; 3.0*x<=90.0; x+=dx){ a[0]=3.0*x; a[1]=x; a[2]=60.0-x; a[3]=60.0+x; for(int i=0; i< 4; i++) if(a[i]> 90.0) a[i]=180.0-a[i]; Arrays.sort(a,1,3); if((a[0]-a[1])*(a[0]-a[2])*(a[0]-a[3])==0) continue; for(int i=0; i< 4; i++) a[i]*=2.0; System.out.printf("sin[%s]=4*sin[%s]*sin[%s]*sin[%s]\n", sAngle(a[0]),sAngle(a[1]),sAngle(a[2]),sAngle(a[3])); } System.out.println("//--- 4x系1 ---//"); for(double x=0.0; 4.0*x<=90.0; x+=dx){ a[0]=4.0*x; a[1]=x; a[2]=90.0-2.0*x; a[3]=90.0-x; for(int i=0; i< 4; i++) if(a[i]> 90.0) a[i]=180.0-a[i]; Arrays.sort(a,1,3); if((a[0]-a[1])*(a[0]-a[2])*(a[0]-a[3])==0) continue; for(int i=0; i< 4; i++) a[i]*=2.0; System.out.printf("sin[%s]=4*sin[%s]*sin[%s]*sin[%s]\n", sAngle(a[0]),sAngle(a[1]),sAngle(a[2]),sAngle(a[3])); } System.out.println("//--- 4x系2 ---//"); for(double x=0.0; 4.0*x<=90.0; x+=dx){ a[0]=4.0*x; a[1]=2.0*x; a[2]=45.0-x; a[3]=45.0+x; for(int i=0; i< 4; i++) if(a[i]> 90.0) a[i]=180.0-a[i]; Arrays.sort(a,1,3); if((a[0]-a[1])*(a[0]-a[2])*(a[0]-a[3])==0) continue; for(int i=0; i< 4; i++) a[i]*=2.0; System.out.printf("sin[%s]=4*sin[%s]*sin[%s]*sin[%s]\n", sAngle(a[0]),sAngle(a[1]),sAngle(a[2]),sAngle(a[3])); } } }
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/08/08
- メディア: 単行本
- 購入: 16人 クリック: 271回
- この商品を含むブログ (55件) を見る
- 作者: 矢野健太郎,春日正文
- 出版社/メーカー: 科学新興新社
- 発売日: 1998/07/01
- メディア: 単行本
- 購入: 11人 クリック: 55回
- この商品を含むブログ (11件) を見る
大人のための数学勉強法 ― どんな問題も解ける10のアプローチ
- 作者: 永野裕之,きたみりゅうじ
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2012/08/31
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 101回
- この商品を含むブログ (14件) を見る