計算工学I 電子情報工学科五年(前期) 5回目(7/5/2015) 担当:古山彰一

計算工学I
電子情報工学科5年(前期)
11回目(02/06/2015)
担当:古山彰一
([email protected])
微分方程式
次のような1階の微分方程式を解くことを考える。
𝑑𝑦
= 𝑓(𝑥)
𝑑𝑥
真値 𝑦(𝑥1 )
誤差
𝑥 = 𝑥0 と𝑥0 + ℎにおける関数値を𝑦0 , 𝑦1 とすると、
𝑑𝑦 𝑦1 − 𝑦0
=
𝑑𝑥
ℎ
と書くことができる。
以上より、
𝑦1 = 𝑦0 + ℎ𝑓 𝑥0
となる。𝑦1 が求まったら(𝑥0 + ℎ, 𝑦1 )を新たな出発点とし
て、同様に(𝑥0 + 2ℎ, 𝑦2 )が求められる。
一般的には以下のように書くことができる。
𝑦𝑖+1 = 𝑦𝑖 + ℎ𝑓 𝑥𝑖 , 𝑦𝑖
𝑥𝑖+1 = 𝑥𝑖 + ℎ
(𝑖 = 0, 1, 2, ⋯ )
y0
接線
予測値
𝑦1 = 𝑦0 + ℎ𝑓(𝑥0 )
h
x0
x1
オイラーの前進公式(forward Euler method)と
呼ばれる解法だけど、なんか、すごく誤差が大
きそうじゃね??
誤差を調べてみよう。
𝑦(𝑥0 + ℎ)をテーラー展開してみる。
′
𝑦 𝑥0 + ℎ = 𝑦 𝑥0 + ℎ𝑦 𝑥0
1 2 ′′
+ ℎ 𝑦 𝑥0 + ⋯
2
この式を見ると、オイラーの前進公式は右辺第2項目までを考慮しており、ℎ2 程度の誤差が蓄積することがわかる。
課題1:
𝑑𝑦
= 2𝑥, 𝑦 0 = 0とする。この微分方程式を手計算で解き、その解をグラフに書きなさい。
𝑑𝑥
※まず一般解を導出して、初期条件を入れて任意定数を求め、特殊解を得る。
課題2:
オイラーの前進公式のプログラムを作成し課題1の問題を解きなさい。プログラムでは、𝑥 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10のと
きの𝑦を導出し、課題1で書いたグラフにその値をプロットしなさい。
課題3:
𝑑𝑦
= 𝑦 − 12𝑥 + 3, 𝑦 0 = 1について、課題1、課題2と同様に計算しなさい。
𝑑𝑥
ただし、 𝑥 = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0とする。
上記課題をレポートにまとめてpdfファイルにしたうえで、本日23:59までに古山にメールで提出([email protected])しなさい。
なおファイル名は、11i5??.pdf とする。??は二桁の出席番号。