課題1で書いた線形補間のコードを fitted value iteration で使ってみる.
- 提出方法:課題1のリポジトリにファイルを「プッシュ」する.
- 締め切り:10月3日 (月)
A Simple Optimal Growth Model の
Implementation 2
のコードで Interpolations
を使わずにそれを自分の線形補間のコードで置き換え,
この図やこの図を描いてみる.
-
quant-econ のコードを notebook にコピーして
using Interpolations
を
include("lin_interp.jl")
で置き換える. (ファイル名は自分のものに合わせて適切に書き換える.)
-
線形補間関数を定義している
Aw = scale(interpolate(w, BSpline(Linear()), OnGrid()), g.grid)
の行を
Aw = my_lin_interp(g.grid, w)
に置き換える. (これも自分の仕様に合わせる.)
-
われわれの仕様では
Aw
は[]
ではなく()
で呼び出すようにしたので,Aw[g.f(k) - c]
をAw(g.f(k) - c)
に置き換える. -
上の方にある
main
関数を参考にして,図を表示するコードを書く.GrowthModel
インスタンスはgm = GrowthModel()
で生成する (引数を空にするとデフォルトの値が使われる).grid
はgm
の中に保持されていてgm.grid
でアクセスできる.beta
はgm.bet
.alpha
は別個に定義しないといけない.
-
ついでに Exercises もやってみましょう.
Solution notebook にある
PlotlyJS
を使って nbviewer で図が表示されない場合は,using PlotlyJS
を独立した別のセルで実行すると表示されるようです (GitHub ではそもそも表示されないみたい). (参考 quantecon_nyu_2016 Issue #20) -
Julia v0.5 を使っていて
main
関数をそのまま使った人はplot!(gm.grid, ws, color=colors', label="", linewidth=2)
の行で
WARNING: the no-op `transpose` fallback is deprecated ...
という warning が出ると思います (Arraycolors
の transpose'
はもうサポートされないとのこと). これを消したい人は次のようにやるとよいです. (参考 QuantEcon.applications Issue #69)-
for
ループとその上のws
,colors
をws = Array(Array, n) colors = Array(RGBA, 1, n) for i=1:n w = bellman_operator(gm, w) ws[i] = w colors[i] = RGBA(0, 0, 0, i/n) end
に変える. (
ws
とcolors
のサイズはn
とわかっているのだから空の配列に push していくことはない.colors
の方は2次元配列にする.) -
colors'
の'
を消す.
-