ネムネコは、隠さないにゃ [ひとこと言わねば]
なのですが、ネムネコは隠さないにゃ。数値計算の記事で使用したプログラムや表計算ソフトのスプレッドシートは全て公開するにゃ。
そして、このポリシーに従って、今日もスプレッドシートを2つ公開したにゃ。
オモチャみたいなものですが、すこしでもお前らの便益につながるように公開したにゃ。
https://goo.gl/eTqu83
でも、こんなものをいくら利用したところで、こんなものは数値計算の勉強には役に立たない。ブラックボックス化されているので、実際にどのように計算しているのかがわからないからだにゃ。
数値計算の勉強をするときに最も重要なことは、最終的な計算結果ではなく、計算法の仕組みを理解し、そして、その計算法を使って計算できるようになることだから。
ネムネコの手は猫の手なので猫パンチを繰り出すのには適しているけれど、手計算には向かないから、仕方なくコンピュータを使って計算するけれど(^^)
今日のアニソン、「七星のスバル」から『360°星のオーケストラ』 [今日のアニソン]
課題の解答例 [数値解析]
課題の解答例
課題 中心差分を用いて次の微分方程式の初期値問題を解く方法を考えなさい。
その方法を用い、Δx=0.1としてx=1まで計算し、厳密解と数値解とを比較しなさい。
【解答例】
の両辺を微分すると、
①式を用いて②式からを消去すると、
①式がx=0においても成立するとすると、
したがって、この初期値問題は
となり、
差分法を用いた微分方程式の初期値問題の解法の計算結果を流用できる\(^o^)/
(解答例終)
一階の微分方程式のままだと中心差分はうまく使えないので、中心差分を使えるように、この微分方程式を微分し2階の微分方程式にすればいいと言うわけなんですよ(^^)
修正オイラー方を用いたほうが精度よく計算できる。
修正オイラー法の誤差の挙動が面白いね。
x=1.8の付近で最小値をとったあと、誤差が上昇しているからね。
何故、こうなるかについてはわからない(^^ゞ
これで終わってもいいのですが、クランク・ニコルソン法をヒントに、差分法を用いた一階常微分方程式の初期値問題の新しい(?)解法を思いついたので紹介するにゃ。
微分方程式
を前進差分を用いて近似すると、
後退差分を用いて近似すると、
(1)と(2)を足すと、
これをについて解くと、
という漸化式が得られる。
x₀=0におけるyの値y₀=0を計算の起点にし、漸化式(4)を用いて前進的に微分方程式(1)の数値解を求めることができる。
なお、
ね。
この解法の誤差の程度はたぶんO(h³)で、修正オイラー法や2次のルンゲ・法と同程度の誤差をもっているものと推定される。
(4)式を用いて計算した結果は次のとおり。
誤差の点で修正オイラー法に劣るものの、グラフにしてしまえば厳密解と新しい数値解は重なっており、良好な結果が得られていることがわかる。
また、2階常微分方程式直して解いたものの最大誤差が0.0047746874であり、新しい解法のそれは0.0013790814と精度的にも向上していることがわかる。
数値解、厳密解と、その誤差の挙動が一致しているあたり、なかなかオシャレだと思うにゃ。素性がいいね、この解法は。
この記事の計算で使用したスプレッドシートはコチラ。
オイラー法、修正オイラー法との比較
エクセル版
Web版
新しい解法(?)
エクセル版
Web版