数値解析 課題2 ( 11月16日出題 )

課題

  1. 定積分 $\displaystyle \int_a^b f(x)\,dx$ の近似値を 以下の設定で計算するプログラムをそれぞれ作成せよ。
    1. 積分区間をまず $N$ 等分し、各小区間に対してシンプソンの公式を用いる
    2. 積分区間をまず $N$ 等分し、各小区間に対して4次のガウスの積分公式を用いる
    ただし
    • $f(x)$ は  double f(double x)   のように関数宣言して用いる
    • $a$, $b$, $N$ はプログラム内で設定しても良いし、入力させても良い
  2. (1) のプログラムの動作確認をせよ。( たとえば $a=0$, $b=1$, $N=4$, $f(x) = x$ に対して実行してみる。)
  3. (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;
}