コメント:Matlab関数fsolveについて
12月最後の授業で言ったように、Matlabのoptimization toolboxを持っている場合、この中の関数fsolveを用いることによって非線形の連立方程式の解を求めることができます。しかし、その後調べたところ、数値計算に関する教科書を著しているKenn Juddは彼のホームページでこの関数はイマイチ(”poor”)であると述べ(リンク先参照)、それよりもChristopher Simsの書いた関数コードであるcsolve.mの利用を推奨しています。このコードは次のページからダウンロードすることができます。
http://sims.princeton.edu/yftp/optimize/mfiles/
このコードをダウンロードして他のファイルと同じディレクトリに入れておけば、optimization toolboxなしでも非線形連立方程式の解を数値的に求めることができます。全ての学生がこのtoolboxをいつも持っているとは限らない、ということも考えると、このcsolveを使って例を作っていったほうがいいかもしれませんね。そこで、加藤氏の教科書第3章のモデルを解くプログラムをcsolveを使う形に書き換えました。Csolveはfsolveと使い方が似ていますが、全く同じではありません。
kato3_model.m (以前と同じ) kato3_others.m (以前と同じ)
これらの他、上記のcsolve.mと、授業ホームページ(メイン)からダウンロードできるfdjac_japan.mが必要です。
ただ、このモデルの定常状態を求めるという問題に関して言えば、fsolveとcsolveの差はあまりないようです。このモデルの難しさは、ショックに一様分布が仮定されているため、解が存在しうる領域が非常に狭くなっていることにあります。したがって、あらかじめ解がどのへんにありそうかあたりをつけておいてその辺で初期値を与えてやらないと、まず解に到達できません。例えばqの定常値を計算するときの初期値を少し変えただけで、永遠に解が見つからないことになってしまいます。
塩路(2008年1月2日)