計算情報学2 鈴木泰博

第7回

概要 前回は線形近似による求積法を学びました.今回は,ラグランジュ補間による求積法ーシンプソン法についてを学びます.次に微分方程式について,その概念を復習したあとで,線形近似による微分方程式の数値解法・オイラー法,を学びます.

注意:このコースでの演習の多くには,「唯一の模範回答」はないと思ってほしい.もっとも数学の演習問題は正答が存在するが.前回の演習,これから行ってもらう演習ともに,30名の受講者がいれば,30通りの回答があってよい(間違っていればハナシは別だが..).

課題のすすめかた:今回の課題は1問づつNUCTにいって回答するとは違った方法をとる.

  1. まず,テキストエディタ(WORD, メモ帳,emacs, vi, atom.. なんでもよい)をひらく

  2. 課題1から順に回答していく.資料を順に読み進めていくと,課題が出てくるので,その回答を書き足していく

  3. すべてが終わったら,NUCTから添付ファイルで提出する.

    ********************************************

  4. 締め切りは,原則として翌週の水曜日である(例外もある).締め切りには注意する.締め切りを過ぎたら提出できない.9割以上の受講生の方々はきちんと,フォーマットも締め切りも守っている.

  5. 締め切りが過ぎたら提出できない課題はすべて評価しC以上であればカウントする.Fの場合にはカウントにならない.

    ********************************************


シンプソンの方法

前回のつづきであるが,前回までは数値積分を「線形近似」により行い,最後に,2次関数によるラグランジュ補間で数値積分を行うのが,シンプソン法です.

kj7-0-1

「どうするか?」というと..2次のラグランジュ補間をそのまま積分してしまえばいいのです.係数を1つ計算してみれば,あとの係数は類推できます.

kj7-0-2

では,課題を行なってみましょう.


課題1:以下では積分範囲が0から??までとなっていますが,適切な積分範囲を設定してください.kj7-0-3

微分方程式

微分方程式とはなんでしょう?ビブンホウテイシキとは,つまり「微分」に関する方程式なわけです.そもそも微分とはなんであったか?というと...たとえば傾きですね.簡単な微分方程式から考えてみましょう.

このコースで最初の頃に行った「コイントスによるシミュレーション」を思い出してみましょう.そのときにつかっていたルール力学系はでした.ルール力学系では時間は「離散」,変化量も「離散」ですね?なぜ「離散」かわかりますか?... 時間が離散なのは「コイントス」をしているので離散ですね.量は1づつ動くので離散量ですね.

あのルール力学での時間を「連続」,変化量を「連続」にしたものが微分方程式です.

ルール力学系のアタマで考えると以前に課題に出した のシミュレーション(決定論版)を再び行ってみると

となります.では,このシミュレーションを「微分方程式の目線」でみてみましょう.


課題1 以上のプロセスでの「増殖率」(単位時間あたりの増加量..つまり増加の”傾き”)をもとめなさい


実際のバクテリア増殖はどんなものか?みてみましょう.ルール力学系での数理モデル化は単純にみえますが,けっこうよく実際の現象をモデル化できていることがわかりますね.

課題1で「バクテリア増加の傾き」をもとめました.単位時間をとすると

= 時間tからΔtまでに増えた量 / 時間tのバクテリア量 となりますので「傾き」..つまり微分値になります.なので,ルール力学系のモデルで,時間と量の変化を連続にすると以下のようになります.

kj7-9


課題2 ノート上で,縦軸をバクテリア量,横軸を時間として,この微分方程式での振る舞いを図示してください.

ヒント

  1. バクテリアの個体数(縦軸)が1,dt=1のときの傾きはいくつになりますか?
  2. 横軸を0から10とするとき,つまり,0,1,2,3,...,10の各々のときの傾きはいくつになりますか?
t123...
傾き1/11/11/1 

となります.

ここで初期の個体数を決めましょうか.

  1. 始点を1とする
  2. 1+dtのバクテリア個体数を求める. dtが1増えると,個体数が1だったので2になります.

以下,これを繰り返していくと..微分方程式が解けます.


以上の「課題2」が常微分方程式の数値解法そのものです.

いままで,

・補間(線形補間からラグランジュ補間)

・数値積分(矩形による線形近似での積分から,ラグランジュ補間をつかった積分)

とまず線形,精度をあげるために,近似を工夫していくことになります.では,まず線形近似による微分方程式の数値解法,オイラー法です.

kj7-1

どっかで見たことがある方法がでてきました.覚えていますか?ニュートン法ですね.ニュートン法は非線形方程式の解をもとめるために行ってました.こんどは上の演習問題を解いてください.


課題3 上の演習を行って,オイラー法のスキームを導出してください.スキームといっているので,この課題を解いてみると「漸化式」得られます.この漸化式に繰り返し値を代入していくと,微分方程式が解けるから,スキームといっています.


kj7-2


課題4 上に挙げた演習 ①,② を行ってください.yの初期値を1, hを0.1のときに,①と②を2ステップ目まで計算しなさい.


これは,実際に手を動かさないとわからないので,やってみてください.

答えは①は2ステップ目で 0.72575, ②は2ステップ目で 1.020201 となります.

では,今回のまとめとしての課題をやってみましょう.


課題5

1) バクテリアが個体数に比例して増加する微分方程式を示しなさい

2) バクテリアが個体数 x の2乗に比例して減少する微分方程式を示しなさい 

3) バクテリアが個体数に比例して増加し,個体数の2乗に比例して減少する微分方程式を示しなさい(これは 1)と2)の組み合わせですね)

4) 得られた3)の微分方程式をオイラー法により解いてみてください.手で解くのは大変なので,エクセルをつかったり,プログラミングをしてもよいです.

今回はここまでです.

締め切りに注意してNUCTから提出してください.

おつかれさまでした