出展:パーソナルソフトウェア技法 Watts S. Humphrey 著 ISBN4-320-02929-1
PSP課題 05A : 数値積分
前提条件
6章までと A5 節
要求
引数に double 1つをとる関数オブジェクトをシンプソン則で積分する関数を作成せよ。
template <typename T> double Simpson(T func,double lo,double up)
正規分布を−∞から、適当な値まで積分し出力せよ。 正規分布の関数は、NormDist(x) := exp(-x*x/2) / sqrt(2*PI) を用いよ。 シンプソン則は、n 分割した n+1 個の位置での値に 1,4,2,4,2,...,1 を掛けて和をとり、 (up-lo) を掛けて 3*n で割ったものが積分値となる。分割数は偶数でなければいけない。 無限ループにならないようにチェックせよ。 ベースは
TEMPLATE とせよ。 const double pi = 3.141592653589793; を用いてよい。 あるいは、
../Lib/gamma.h
を用いてよい。
テスト
出力が以下のようになること
テスト値
結果
2.5
0.9938
0.2
0.5793
-1.1
0.1357
参考
A5 節をよく読むこと。