C LANGUAGE TECHNOLOGY

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

悩んでいる人

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にオープンソースとして公開

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

数値微分

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

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

数値微分を利用することで,微分を解析的に求めることが困難な場合に,その近似値を数値的に求めることが可能になります.

数値微分のニュートン法と二分法を知りたいあなたはこちらからどうぞ.

C言語 二分法 ニュートン法
【C言語】二分法とニュートン法の違い

こういった悩みにお答えします. こういった私から学べます. 目次1 二分法とニュートン法の違い2 C言語による二分法のコード3 C言語によるニュートン法のコード4 まとめ 二分法とニュートン法の違い ...

続きを見る

C言語で数値微分:前進差分,後退差分,中心差分

C言語で数値微分の前進差分,後退差分,中心差分の解法を紹介していきます.

前進差分は,一つ前の値との差分を利用して下式になります.

$$f'(x) = \frac{f(x + h) - f(x)}{h}$$

後退差分は下式になります.

$$f'(x) = \frac{f(x) - f(x - h)}{h}$$

中心差分は下式になります.

$$f'(x) = \frac{f(x + h) - f(x - h)}{2h}$$

C言語で解く数式は下式になります.

\begin{eqnarray} f(x) &=& x^2 \\ f'(x) &=& 2x \end{eqnarray}

前進差分,後退差分,中心差分を利用するコードは以下になります.

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

\(f'(x)\)で\(x = 3\)の時の真の値\(f'(3) = 2 * 3 = 6\)と比較すると,前進差分は6.000100,後退差分は5.999900と誤差が発生していますが,中心差分は6.000000と誤差がほとんどないことがわかります.

※Hの値(0.0001)を小さくすると,その誤差が小さくなります.

常微分方程式

常微分方程式とは,数学において未知関数とその導関数からなる等式で定義される方程式である微分方程式の一種で,未知関数が一つの変数を持つもののことを言います.

本記事では,常微分方程式の解法として,オイラー法3次テイラー展開4次ルンゲクッタ法を紹介していきます.

オイラー法と4次ルンゲクッタ法は,keisanの常微分方程式で解答を計算できますので,参考にして下さい.

各々のリンクは以下になります.

C言語で常微分方程式:オイラー法,3次テイラー展開,4次ルンゲクッタ法

C言語で常微分方程式のオイラー法,3次テイラー展開,4次ルンゲクッタ法を解法を紹介していきます.

解く常微分方程式は下式になります.

\begin{eqnarray*} F(x, y) &=& 1 - y^2 \\ x_0 &=& 0 \\ y_0 &=& 0 \\ x_n &=& 1 \end{eqnarray*}

オイラー法,3次テイラー展開,4次ルンゲクッタ法を利用するコードは以下になります.

上式の常微分方程式の解答の\(y = f(x) = \tanh x\)と比較します.

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

オイラー法が一番誤差が大きく,3次テイラー展開が中間,4次ルンゲクッタ法が一番誤差が小さいことがわかります.

まとめ

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

具体的には,前進差分,後退差分,中心差分,常微分方程式,オイラー法,3次テイラー展開,4次ルンゲクッタ法を解説しました.

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

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

こういった悩みにお答えします. こういった私から学べます. 目次1 数値積分2 区分求積法とリーマン和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
-, , , , , , , , , , ,