数値解析 課題2 ( 11月16日出題 )
課題
-
定積分 $\displaystyle \int_a^b f(x)\,dx$ の近似値を
以下の設定で計算するプログラムをそれぞれ作成せよ。
-
積分区間をまず $N$ 等分し、各小区間に対してシンプソンの公式を用いる
-
積分区間をまず $N$ 等分し、各小区間に対して4次のガウスの積分公式を用いる
ただし
- $f(x)$ は double f(double x) のように関数宣言して用いる
- $a$, $b$, $N$ はプログラム内で設定しても良いし、入力させても良い
- (1) のプログラムの動作確認をせよ。( たとえば $a=0$, $b=1$, $N=4$, $f(x) = x$ に対して実行してみる。)
-
(1) のプログラムを用いて定積分
$\;\displaystyle{\int_{0}^{\pi}\,e^{\sin(x)}\,dx}\;$
の値を小数点以下12桁まで推定せよ。
注意
- ガウスの積分公式の定数は LegendrePolData.html 参照
- $\pi$ の値は次の定数名で定義されている。
- C言語では M_PI ( math.h 内 )
- java では Math.PI
- python では math.pi ( math モジュール内 )
- プログラムを共同製作した場合はその旨を必ず明記すること。
- レポートには以下の項目を含めること :
- プログラムリスト
- 実行結果
( 出力を全て載せるのではなく適切にまとめること )
- (3) の推定の根拠
提出方法
- メールにて shiota@is.kochi-u.ac.jp 宛て。
- 件名は [自分の学籍番号] 数値解析課題2
- テキストでも、WORD, PDF 等のドキュメントでも可。
提出期限
- 11月30日(水) 10:20
- 原則として締め切り厳守
課題プリント ( このページと同じ内容の pdf です。)
今回の課題のヒント
今回の課題のプログラムは、たとえばこんな感じに書けばできます。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double f(double x){
return $f(x)$ の式 ;
}
int main( void ){
変数宣言
$a$, $b$, $N$ 等を設定する部分
小区間での積分値を計算するループ
小区間での積分値の総和の出力
return 0;
}