2014/07/29(火)数値解析セミナー

昨日は、数値解析セミナーに出席して宮路さんの講演を聞いてきました。
力学系の解析に常微分方程式の精度保証を使っている話で、いろいろ勉強になると思ったからです。

講演の前半で、
http://www.sciencedirect.com/science/article/pii/S016727890200372X
の論文の7章で数値的に捉えられた周期解を精度保証した例が出てきました。
微分方程式

\dot{x} = yz - y
\dot{y} = -zx + z
\dot{z} = xy - x

の周期解をx+z-1=0というポアンカレ断面を用いたポアンカレマップの不動点として精度保証するものです。

講演を聞きながら手を動かして精度保証してみようということで頑張ったら、何とか出来ました。

craik.zip

これが聞きながら作ったファイルです。これとkvライブラリがあれば動くはずです。実行すると、

x: [8.0430011130278842,8.0430011130790487]
y: [0.49999999999907257,0.50000000000095291]
z: [-7.0430011130790469,-7.043001113027886]
t: [2.5356798931197284,2.5356798931353897])

が精度保証された解として見つかりました。(x,y,z)はポアンカレ断面上の点で、tが周期です。
Taylor展開の次数は30次ほど必要で、結構難しめの問題でした。

ポアンカレマップに対してKrawczyk法を用いて周期解を精度保証するライブラリは出来ているのですが、
これに関するドキュメントが未整備で自分しか使えない状態になっているのが問題。早く書かないとなあ。

2014/07/20(日)kv-0.4.7

kvライブラリを0.4.7にversion upしました。

autodifで x *= 2; みたいなコードがコンパイル出来ないバグが見つかったので、アップデートしました。
偶然この形 (*=演算子で定数倍) は使って無かったので気づいていませんでした。

それ以外には、allsolの引数順序がx,fだったのをf, xに変えたとか、allsolやodeのドキュメントを書いたくらい。

ところで、本ライブラリはC++03の機能の範囲で書いているのですが、C++11の機能が使えると嬉しい箇所が何箇所もあって気になっています。まとまった時間があったらC++11に移行したいなあ。その場合C++03は切り捨てるつもり。
OK キャンセル 確認 その他