ボーデの法則のプログラムをJavaで作ってみました。
n=-∞が扱いにくいので、ガウス記号 [x]=floor(x)を使って、n=0,1,2,...で扱えるようにしました。
ちなみに、C言語系のfloor(x)というのは、BASIC系のINT(x)と同じです。
次の式を使って、ボーデの法則が成り立つ天王星まで表を作りました。(^_^;
それから、右側に棒グラフも付けてみました。(^_^;
for n=0,1,2,...
where [x]=floor(x)=INT(x)
●BodesLaw.java
/* * BodesLaw.java * * a/AU = 0.4+0.3×[2^(n-1)] * for n = 0,1,2,… * where [x] = floor(x) = INT(x) * */ import static java.lang.Math.*; class BodesLaw { static double Bode(int n) { return(0.4+0.3*floor(pow(2.0,(double)n-1.0))); } public static void main(String[] args) { String[] sPlanets = { "Mercury","Venus","Earth","Mars","Ceres","Jupiter","Saturn","Uranus" }; System.out.println(" Planet | n | a/AU "); System.out.println("---------+---+------"); for(int i=0; i< sPlanets.length; i++){ System.out.printf(" %-7s | %d | %4.1f ",sPlanets[i],i,Bode(i)); for(int j=0; j< (int)round(Bode(i)/0.4); j++) System.out.print("*"); System.out.println(); } System.out.println(); } }
●実行結果
Planet | n | a/AU ---------+---+------ Mercury | 0 | 0.4 * Venus | 1 | 0.7 ** Earth | 2 | 1.0 *** Mars | 3 | 1.6 **** Ceres | 4 | 2.8 ******* Jupiter | 5 | 5.2 ************* Saturn | 6 | 10.0 ************************* Uranus | 7 | 19.6 *************************************************
※参考URL
●ティティウス・ボーデの法則
●「ボーデの法則」とその見直しについて
●床関数と天井関数
- 作者: 林晴比古
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/11/29
- メディア: 単行本
- クリック: 2回
- この商品を含むブログ (1件) を見る
Java言語プログラミングレッスン 第3版(上) Java言語を始めよう
- 作者: 結城浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/11/14
- メディア: 単行本
- 購入: 1人 クリック: 7回
- この商品を含むブログ (8件) を見る
Java言語プログラミングレッスン 第3版(下) オブジェクト指向を始めよう
- 作者: 結城浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2012/11/14
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (10件) を見る