« Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算 | トップページ | 「無限記憶」を読んだ。 »

2010年7月 4日 (日)

陰的ルンゲクッタ法(ラダウIIA)をExcel VBAに移植した。

硬い(スティフな)微分方程式を数値的に効率的に計算するには、陰的ルンゲクッタ法がいいということはよく知られている。しかーーーーし、これをVBAで計算している例を見たことがない。普通のCやFortranだって結構少ない。

このブログでは14段8次の陽的ルンゲクッタ Dormand-Prince法や、35段14次のルンゲクッタなど、普通のネットでいくらでも見られる4段4次ルンゲクッタなどとは一線を画す(うそです。単に私の暇つぶし。。。)方法でいろいろな微分方程式を計算してきたが、さらに進んで陰的ルンゲクッタに進もうと。

で、先日、連立一次方程式をLU分解をExcel VBAで計算するライブラリを移植したのでできるはず。できるはずだが、結構めんどくさかった。

陰的に計算するのに多変数のニュートン・ラフソン法を使う。なので、ヤコビアンも手で与える必要がある。方法は「常微分方程式の数値解法II」に出てきた「ラダウIIA」(Radau IIA)法を使った。3段5次でA安定。この本にはラダウIIAとか、ロバットIIICとか、マジンガーZの機械獣のような名前の手法(古すぎる。。。)がいっぱい。

で、ようやく完成。プログラムは無茶苦茶だが、参考になるかと一応ソースごと公開。実用的に使うにはちゃんと収束判定とかしてね。

「implicit-Lorenz.txt」をダウンロード

まずは硬くないけど、ローレンツ方程式。

Implicitlorenz

ふつーに計算できた。さて次は硬い方程式に進もう(続く)。

« Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算 | トップページ | 「無限記憶」を読んだ。 »

学問・資格」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 陰的ルンゲクッタ法(ラダウIIA)をExcel VBAに移植した。:

« Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算 | トップページ | 「無限記憶」を読んだ。 »

最近の記事

最近のコメント

2025年1月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
フォト
無料ブログはココログ