こんにちは。
久しぶりに記事を書きます。
今回は、数値計算系を書こうと思って、数値積分をやっていきます。
今回やるのは、長方形近似なので、たぶん一番簡単な方法です。
それでは書いていきます。
長方形近似の考え方
以下の画像を用いて考えていきます。
上の画像の青色の線の関数を
として、から
までの定積分を求めたいとします。
そのとき、上の画像のように長方形の面積を考えて、
それを足し合わせていくことで、定積分の値を求めます。
上の画像の例だと、三分割なので、
というように、求めることができます。
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) * step; sum = sum +s; } printf("計算結果 = %lf\n",sum); } double func(double x){ return x*x + x + 1.0; }
これを実行すると、以下のようになります。
計算結果 = 1.735000
厳密解が1.83くらいなので、それなりに誤差があることがわかります。
次は、もっと誤差の少ない方法を試していくので、興味がある方は見てください。