ボーデの法則 【Bode's law】

 ボーデの法則のプログラムをJavaで作ってみました。
 n=-∞が扱いにくいので、ガウス記号 [x]=floor(x)を使って、n=0,1,2,...で扱えるようにしました。
 ちなみに、C言語系のfloor(x)というのは、BASIC系のINT(x)と同じです。
 次の式を使って、ボーデの法則が成り立つ天王星まで表を作りました。(^_^;
 それから、右側に棒グラフも付けてみました。(^_^;

 a/AU=0.4+0.3\times [2^{n-1}]
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
ティティウス・ボーデの法則
「ボーデの法則」とその見直しについて
床関数と天井関数

明快入門 Java (林晴比古実用マスターシリーズ)

明快入門 Java (林晴比古実用マスターシリーズ)