【第15回】


『内容』

<常微分方程式>

 工学系の諸問題において,常微分方程式を解くことは多い.一般に,方程式は非線形であるので数値解法を用いて解かなければならない.ここでは,代表的な数値解法であるRunge-Kutta法について学ぶ.

6.1 Runge-Kutta法(教科書p.161)

 1階常微分方程式
  
を初期条件が与えられたときに解くことを考える.からだけ増加した点における値を以下の公式で求める.
  
 このようにして求めたをを新たにを新たにとし,だけ増加したときのの値を求めることを繰り返す.これにより,各に対するの値が求められるので,常微分方程式が解けたことになる.この方法を下図に示す.

  点から傾きだけ進むとだけ変化する.
  点で傾きを求め,からだけ進むとだけ変化する.
  点から傾きだけ進み,を得る.
  点から傾きだけ進み,を得る.
  以上,点からの加重付き平均をに対するの増分とし,点を得る.


以下の節は省略する

 この範囲は,テスト範囲から除外するが,興味のある学生は一読しておくと良い.


6.4 連立常微分方程式(教科書p.166)

 元1階連立常微分方程式をベクトル表記すると
  
と書ける.ここで
  
である.これをRunge-Kutta法を用いて解くことを考える.ベクトル表記を用いれば,
  
となる.すなわち
  
である.同様にして
  

  

  
を求める.そして,これらの値より
  
が求められる.よって
  

の値が得られる.

 階常微分方程式

  
は以下のように元1階連立常微分方程式に変換することができる.
  
したがって,上記の方法を用いれば,を求めることができる.ここで,であるので,階微分方程式の解である.


<誤差>

 コンピュータによって数値計算処理を行ったとき,その実行結果と真値との差を誤差という.ここでは,丸め誤差と打ち切り誤差について学習する.

7.2 丸め誤差(教科書p.171)

 コンピュータは,10進数を2進数に変換して記憶する.その際,変換誤差が生じる.これが丸め誤差である.特に,小数点以下を含む10進数を2進数に変換する際に生じる.例えば,

 10進数:0.875 →→ 2進数:0.111

 10進数:0.6 →→ 2進数:0.100110011…

ここで,小数点以下を8ビット(8桁の2進数)で表すことにすると,0.10011001となり,下位の桁は切り捨てられる.これを10進数に戻すと

 

となり,元の値0.6との間に誤差0.00234375が生じる.これが丸め誤差である.単精度(4バイト)のfloat型より,倍精度(8バイト)のdouble型の方が,丸め誤差が小さくなる.(1バイト=8ビット)

7.3 打切り誤差(教科書p.173)

 数値計算に用いられる近似式が原因で生じる誤差である.例えば,無限級数を有限項で近似することによって生じる.


以下の節は省略する

 この範囲は,テスト範囲から除外するが,興味のある学生は一読しておくと良い.


『演習』

6.1 Runge-Kutta法

 1階常微分方程式をRunge-Kutta法を用いて,数値的に解く.

 教科書p.162の「例題6.1」を行い,その結果を確認せよ.


6.4 連立常微分方程式

 2階常微分方程式を2元1階連立常微分方程式へ変換し,それをRunge-Kutta法を用いて数値的に解く.

 教科書p.167の「例題6.4」を行い,その結果を確認せよ.


7.2 丸め誤差

 丸め誤差の影響を積分計算によって確認する.

 教科書p.172のプログラムを実行し,その結果を確認せよ.また,実数を単精度(float型)にしたときの結果と比較せよ.


7.3 打ち切り誤差

 台形公式を用いた数値積分において,刻み幅を小さくすることにより,打ち切り誤差を小さくできることを示す.

 教科書p.174の表に示すような結果が得られるプログラムを作成せよ.

 解答例 ←(まずは見ないで,自分で考えてプログラムすること)


授業評価アンケート 入力期間:平成28年7月12日(火)〜8月12日(金)

 【ログインID・パスワード:統合認証システムと同一(総合情報処理センターから配布されたもの)】

回答方法マニュアル(別タブで表示)