こんにちは。
今回は、数値積分2回目ということで、台形則について書いていきたいと思います。
前回書いた長方形近似のものと、考え方がほぼ一緒なので、わかりやすいかなと思います。
前回の長方形近似のものは、以下から見ることができるので、興味のある方はご覧ください。
それでは書いていきます。
台形則の考え方
以下の図を用いて考えていきます。
上の図の から まで積分する場合について、考えます。
台形則では、図の緑の部分のように積分する場所を台形に近似して、その面積を求めることで値を出していきます。
例えば、図の一番左側の台形の面積を とすると、
台形の面積の公式を用いて、
となります。
ここで、
とすると、
であるので、
同様に、左から二番目の台形の面積を 三番目を とすると、
求める積分値 は、
として、求めることができます。
C言語でコードを書いてみる
今回は、前回と同様、以下の式の定積分を0.0~1.0の範囲で積分していきたいと思います。
コードは以下のように書くことができます。
#include<stdio.h> double func(double x); void main(){ // 積分範囲 double a = 0.0; double b = 1.0; // 分割数 double n = 10; double step = (b - a) / n; double sum = 0.0; for(int i = 0; i < n; i++){ double s = ((func(a + step*i) + func(a + step*(i+1))) / 2.0) * step; sum = sum +s; } printf("計算結果 = %lf\n",sum); } double func(double x){ return x*x + x + 1.0; }
これを実行してみると、以下のような出力となります。
計算結果 = 1.835000
今回求めたものの厳密解が1.83333333であるので、
かなり近い値が出ていることがわかります。
前回の長方形近似で出した値の1.735に比べるとかなり近づきました。
今回は以上で終わります。
また、数値計算系の記事は書くと思うので、気になる方は見ていただけると嬉しいです。