陰的ルンゲクッタ法(ラダウ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の機械獣のような名前の手法(古すぎる。。。)がいっぱい。
で、ようやく完成。プログラムは無茶苦茶だが、参考になるかと一応ソースごと公開。実用的に使うにはちゃんと収束判定とかしてね。
まずは硬くないけど、ローレンツ方程式。
ふつーに計算できた。さて次は硬い方程式に進もう(続く)。
« Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算 | トップページ | 「無限記憶」を読んだ。 »
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール(2025.01.23)
- 高周波・RFニュース 2025年1月22日 everythingRFマガジンにMarkiの宇宙向けミリ波部品の記事、NordicのRF52810を使った太陽電池で動き暗闇でも3週間持つアセットトトラッカー、KnowlessのMRIの技術解説記事、Broadcomの3.5Dパッケージング解説(2025.01.22)
- UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(3) 3D画面に補間(Interpolate) を行って表示する。リニア、3次スプライン、有理関数などいろいろ使える。(2025.01.23)
« Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算 | トップページ | 「無限記憶」を読んだ。 »
コメント