- 締切済み
シンプソン法の出力結果について
シンプソン法の区間分割数nを10~100まで10ずつ増やして計算値と計算誤差を求めるプログラムを書きに作成したのですが、出力結果に-7.341865999405491E-5などとあります。この「E-数字」とはJavaではどういうこと示しているのですか? また、計算誤差の求め方は下記のプログラムでいいのですか? public class Simpson { static double f(double x) { // ここに任意の被積分関数を記述 double y = Math.exp(- x * x / 2) / Math.sqrt(2.0 * Math.PI); return y; } public static void main(String[] args) { double a = - 1.0, b = 1.0; // 積分範囲 int n = 100; // 区間分割数 for(n=10; n <=100; n+=10){ double h = (b - a) / (double)n; // 分割幅 double s, s1 = 0.0, s2 = 0.0; for (int i = 1; i <= n / 2; i++) { s1 += f(a + (2 * i - 1) * h); } for (int i = 1; i <= n / 2 - 1; i++) { s2 += f(a + 2 * i * h); } s = h / 3.0 * (f(a) + 4.0 * s1 + 2.0 * s2 + f(b)); double suti = (s-0.68269)/0.68269*100; //計算誤差=(計算値ー真値)/真 値×100 System.out.println("区間分割数 =" + n); System.out.println("シンプソン法による計算値 =" + s); System.out.println("シンプソン法による計算誤差 ="+suti+"\n"); } } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- f272
- ベストアンサー率46% (8477/18146)
> この「E-数字」とはJavaではどういうこと示しているのですか? 掛ける10の-数字乗という意味です。 > また、計算誤差の求め方は下記のプログラムでいいのですか? プログラムはいいけど真値が0.68269では精度が悪すぎです。 0.682689492137086 くらいじゃないの?最後の桁はあってるかどうか未確認です。