みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

シンプソン法の出力結果について

シンプソン法の区間分割数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");
}
}
}

投稿日時 - 2011-01-11 11:17:44

QNo.6440035

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

> この「E-数字」とはJavaではどういうこと示しているのですか?

掛ける10の-数字乗という意味です。

> また、計算誤差の求め方は下記のプログラムでいいのですか?

プログラムはいいけど真値が0.68269では精度が悪すぎです。
0.682689492137086
くらいじゃないの?最後の桁はあってるかどうか未確認です。

投稿日時 - 2011-01-11 22:30:54

あなたにオススメの質問