本リポジトリは、北尾早霧・砂川武貴・山田知明『定量的マクロ経済学と数値計算』(日本評論社)の付録に対応するサポートコードを収録しています。
appendix/
├── Julia/
│ ├── B1_Chebyshev_polynomials/
│ │ └── how_to_interpolation_cheb.ipynb # 付録B.1:チェビシェフ多項式近似
│ └── C1_Tauchen_approximation/
│ └── 5_Tauchen_approximation.ipynb # 付録C.1:Tauchen 法
├── MATLAB/
│ ├── B1_Chebyshev_polynomials/
│ │ ├── how_to_interpolate_cheb.m # チェビシェフ近似のメイン
│ │ ├── polygrid.m # チェビシェフ格子の生成
│ │ ├── polybas.m # チェビシェフ基底関数の評価
│ │ ├── cheb_demo.m # デモ用スクリプト
│ │ └── f.m # 近似対象の関数
│ ├── B2_Optimization/
│ │ ├── bisection.m # 二分法
│ │ ├── gss.m # 黄金分割探索法
│ │ └── newton.m # ニュートン法
│ └── C1_Tauchen_approximation/
│ ├── tauchen.m # Tauchen 法の実装
│ ├── tauchen_demo.m # Tauchen 法のデモ
│ ├── tauchen_simulation.m # Tauchen 近似後のシミュレーション
│ └── Rouwenhorst.m # Rouwenhorst 法の実装
└── Python/
├── B1_Chebyshev_polynomials/
│ └── how_to_interpolation_cheb.ipynb
└── C1_Tauchen_approximation/
└── 5_Tauchen_approximation.ipynb
- 各節の番号に対応したフォルダにコードが格納されています。
- 付録 B2(最適化アルゴリズム)については Julia・Python のコードはなく、MATLAB のみの収録です。
チェビシェフ多項式を用いた関数近似の手法を解説します。等間隔グリッドと比較してリンギング(Runge 現象)を抑制できる点が特徴です。第4章の TI・Chebyshev コードの基礎となる知識を提供します。
- チェビシェフ格子(コサイン格子、$T$ のゼロ点)の生成と
$[-1, 1]$ への変数変換 -
$n$ 次チェビシェフ多項式$T_n(x)$ の漸化式による評価 - チェビシェフ係数の最小二乗推定と近似誤差の確認
- 次数
$n$ を変えたときの近似精度の変化をプロット(高次多項式での精度向上を確認) - 通常の多項式近似(等間隔グリッド)とのRunge 現象の比較
数値最適化・求根の基礎的なアルゴリズムを実装したスクリプト群です。
bisection.m ― 二分法:関数のゼロ点を区間を半分ずつ縮小することで探索します。収束は遅いが確実性が高く、初期値の設定が容易です。
gss.m ― 黄金分割探索法(Golden Section Search):単峰性の関数の最大値(最小値)を区間を黄金比で縮小しながら探索します。微分を必要としない効率的な方法です。
newton.m ― ニュートン法:関数のゼロ点を接線の x 切片で繰り返し近似します。収束が二次的で高速ですが、良い初期値が必要です。
AR(1) 過程
- グリッドの設定:$[-m\sigma_z, m\sigma_z]$ を
$N$ 等分(標準的には$m = 3$ ) - 正規分布の CDF を使った各グリッド間の遷移確率の計算
- 近似の精度:$N$ が大きいほど連続分布に近づくことをシミュレーションで確認
- Rouwenhorst 法(
Rouwenhorst.m):永続性$\rho$ が高い AR(1) 過程での代替的な離散化手法。Tauchen 法より$\rho \to 1$ の場合に精度が高いとされる - 離散化後のマルコフ連鎖のシミュレーションと、元の連続 AR(1) 過程との分布の比較
- Juliaではいくつかのパッケージを利用しています(
Plots、LinearAlgebra、Distributions等)。もし実行できない場合はREPLで]を押したのち、add パッケージ名を実行してインストールしてください。 - 付録B.1の MATLAB 版では文字コードが UTF-8 のため、Windowsで日本語が正しく表示されない場合があります。
how_to_interpolate_cheb_utf8.mがその対応版です。
Julia と Jupyter Notebook のインストール・環境設定については、インストールと環境構築のガイド を参照してください。