C LANGUAGE TECHNOLOGY

【C言語】数値積分とは【区分求積法,リーマン和,リーマン積分,台形公式,シンプソンの公式】

悩んでいる人

C言語の数値積分を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

数値積分

数値積分とは,数値解析の分野の一つで,与えられる関数の定積分の値を解析的にではなく数値的に求める求積法のことです.

数値積分は,数学的な積分(アナログ)の解析手法をコンピュータ(デジタル)の数値解析に変換する手法とも言えます.

また,数学では無理数のπの真の値を表現できますが,コンピュータでは精度の限界により無理数を正確に表現できず,誤差が発生してしまいます.

なので,その誤差をいかに小さくするのかが数値解析の重要なポイントです.

本記事では,数値積分の手法として,区分求積法とその応用を説明していきます.

区分求積法とリーマン和

区分求積法は,リーマン和(Riemann Sum)による数値積分の極限として定積分を求める方法です.

また,区分求積法は,リーマン積分(Riemann integral)と似ています.

区分求積法とリーマン積分の違いは,区分求積法は区分を有理数のみで分割可能ですが,リーマン積分は区分を有理数と無理数で分割可能なことです.

区分求積法,リーマン和,リーマン積分の説明は,こちらの資料が詳しいのであわせて読むことをおすすめします.

リーマン和の種類には以下があります.

  • 左側リーマン和(Left Riemann Sum)
  • 右側リーマン和(Right Riemann Sum)
  • 中点則(Midpoint Rule)

リーマン和で数値積分するコードは以下になります.

9~12行目のf関数では,下式を計算します.

$$\int_0^1 \frac{4}{1 + x^2}dx = \pi$$

区間[0, 1]で分割する区分(この場合は長方形)の個数を1,2,4,8,…,8192と変化させた場合に,円周率\(\pi\)の真の値にどのように近づくのかを数値解析します.

実行結果は以下になります.

円周率\(\pi\)の真の値(3.141592653589793...)と比較すると,左側リーマン和と右側リーマン和は誤差が大きいですが,中点則は誤差が小さいことがわかります.

区分求積法の応用:台形公式,シンプソンの公式

区分求積法の応用として台形公式 (次数1のニュートン・コーツの公式) シンプソンの公式(次数2の閉じたニュートン・コーツの公式)を紹介していきます.

ニュートン・コーツの公式の次数が高いほど誤差が小さくなります.

台形公式(Trapezoidal Rule)とシンプソンの公式(Simpson's Rule)で数値積分するコードは以下になります.

区分求積法と同じ数式を利用しています.

実行結果は以下になります.

台形公式よりシンプソンの公式の方が次数が高いので,円周率\(\pi\)の真の値(3.141592653589793...)に近いことがわかります.

まとめ

C言語の数値積分を紹介しました.

具体的には,区分求積法,リーマン和,リーマン積分,台形公式,シンプソンの公式を解説しました.

数値積分を使いこなすと,数学とコンピュータの両方の面白さがわかります!

数値微分を知りたいあなたはこちらからどうぞ.

C言語 数値微分
【C言語】数値微分とは【前進差分,後退差分,中心差分,常微分方程式,オイラー法,3次テイラー展開,4次ルンゲクッタ法】

こういった悩みにお答えします. こういった私から学べます. 目次1 数値微分2 C言語で数値微分:前進差分,後退差分,中心差分3 常微分方程式4 C言語で常微分方程式:オイラー法,3次テイラー展開,4 ...

続きを見る

数値解析した結果をグラフで表示する時は,gnuplotがおすすめです.

C言語 gnuplot
【C言語】gnuplotでグラフ作成

こういった悩みにお答えします. こういった私から学べます. 目次1 gnuplot2 C言語からgnuplotでグラフ作成3 gnuplotでsin関数のグラフ作成3.1 gnuplotの標準関数にあ ...

続きを見る

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール4社で自分に合うスクールを見つけましょう.

-C LANGUAGE, TECHNOLOGY
-, , , , , , , , ,