@@ -27,16 +27,16 @@ kernelspec:
2727
2828在之前,我们使用以下方法求解了随机最优增长模型:
2929
30- 1 . {doc}` 值函数迭代 <optgrowth_fast>`
30+ 1 . {doc}` 价值函数迭代 <optgrowth_fast>`
31311 . {doc}` 基于欧拉方程的时间迭代 <coleman_policy_iter> `
3232
3333我们发现时间迭代在准确性和效率方面都明显更好。
3434
35- 在本讲中,我们将学习一种对时间迭代的巧妙变形 ,称为** 内生网格方法 ** (EGM)。
35+ 在本讲义中,我们将介绍时间迭代的一种巧妙变体 ,称为** 内生网格法 ** (EGM)。
3636
37- EGM是由[ Chris Carroll] ( http://www.econ2.jhu.edu/people/ccarroll/ ) 发明的一种实现政策迭代的数值方法 。
37+ EGM是由[ Chris Carroll] ( http://www.econ2.jhu.edu/people/ccarroll/ ) 发明的一种用于实现政策迭代的数值方法 。
3838
39- 原始参考文献是 {cite}` Carroll2006 ` 。
39+ 该方法的原始参考文献是 {cite}` Carroll2006 ` 。
4040
4141让我们从一些标准导入开始:
4242
@@ -53,13 +53,13 @@ from numba import jit
5353
5454## 核心思想
5555
56- 让我们先回顾一下理论,然后看看数值计算如何配合 。
56+ 我们首先回顾理论背景,然后说明数值方法如何融入其中 。
5757
5858### 理论
5959
60- 采用 {doc}` 时间迭代讲座 <coleman_policy_iter>` 中设定的模型 ,遵循相同的术语和符号。
60+ 我们沿用 {doc}` 时间迭代 <coleman_policy_iter>` 中的模型设定 ,遵循相同的术语和符号。
6161
62- 欧拉方程为
62+ 欧拉方程为:
6363
6464``` {math}
6565:label: egm_euler
@@ -68,11 +68,11 @@ from numba import jit
6868= \beta \int (u'\circ \sigma^*)(f(y - \sigma^*(y)) z) f'(y - \sigma^*(y)) z \phi(dz)
6969```
7070
71- 如我们所见 ,Coleman-Reffett算子是一个非线性算子$K$,其设计使得$\sigma^* $是 $K$的不动点。
71+ 如前所示 ,Coleman-Reffett算子是一个非线性算子 $K$,其设计使得 $\sigma^* $ 是 $K$ 的不动点。
7272
73- 它以一个连续严格递增的消费策略 $\sigma \in \Sigma$作为参数 。
73+ 该算子以一个连续且严格递增的消费策略 $\sigma \in \Sigma$ 作为自变量 。
7474
75- 它返回一个新函数$K \sigma$,其中$(K \sigma)(y)$是满足以下方程的$c \in (0, \infty)$:
75+ 它返回一个新函数 $K \sigma$,其中 $(K \sigma)(y)$ 是满足以下方程的 $c \in (0, \infty)$:
7676
7777``` {math}
7878:label: egm_coledef
@@ -83,39 +83,39 @@ u'(c)
8383
8484### 外生网格
8585
86- 如{doc}` 时间迭代讲座 <coleman_policy_iter>` 中所讨论的,要在计算机上实现该方法,我们需要一个数值近似 。
86+ 如{doc}` 时间迭代 <coleman_policy_iter>` 中所述,为了在计算机上实现该方法,我们需要数值近似 。
8787
88- 具体来说,我们用有限网格上的一组值来表示策略函数 。
88+ 具体来说,我们通过在有限网格上取值的方式表示策略函数 。
8989
90- 在需要时,使用插值或其他方法从这种表示中重建函数本身 。
90+ 在需要时,使用插值或其他方法从该有限表示中重建原函数 。
9191
92- {doc}` 之前 <coleman_policy_iter>` ,为了获得更新后消费策略的有限表示 ,我们
92+ 在 {doc}` 时间迭代 <coleman_policy_iter>` 中,为了获得更新后的消费策略的有限表示 ,我们:
9393
94- * 固定了一个收入点网格 $\{ y_i\} $
95- * 使用{eq}` egm_coledef ` 和一个寻根程序计算对应每个 $y_i$的消费值 $c_i$
94+ * 固定一组收入点 $\{ y_i\} $;
95+ * 使用{eq}` egm_coledef ` 与求根算法,计算与每个 $y_i$ 对应的消费值 $c_i$。
9696
97- 每个$c_i$被解释为函数$K \sigma$在 $y_i$处的值。
97+ 每个 $c_i$ 被解释为函数 $K \sigma$ 在 $y_i$ 处的值。
9898
99- 因此,有了点 $\{ y_i, c_i\} $后 ,我们可以通过近似重建$K \sigma$。
99+ 因此,有了点集 $\{ y_i, c_i\} $,我们可以通过近似重建 $K \sigma$。
100100
101101然后继续迭代...
102102
103103### 内生网格
104104
105- 上述方法需要一个寻根程序来找到对应给定收入值 $y_i$的 $c_i$。
105+ 上述方法需要通过求根算法来确定与给定收入值 $y_i$ 对应的消费水平 $c_i$。
106106
107- 求根计算成本很高,因为它通常需要大量的函数求值 。
107+ 然而,求根运算的代价较高,因为其通常涉及大量函数求值 。
108108
109- 正如Carroll {cite}` Carroll2006 ` 指出的那样 ,如果$y_i$是内生选择的,我们可以避免这种情况 。
109+ 正如Carroll {cite}` Carroll2006 ` 所指出的 ,如果 $y_i$ 是内生选择的,则可避免这一过程 。
110110
111- 唯一需要的假设是$u'$在 $(0, \infty)$上是可逆的。
111+ 唯一需要的假设是: $u'$ 在 $(0, \infty)$ 上是可逆的。
112112
113- 令$(u')^{-1}$为 $u'$的反函数。
113+ 令 $(u')^{-1}$ 为 $u'$ 的反函数。
114114
115- 基本思路是 :
115+ 其核心思想如下 :
116116
117- * 首先,我们为资本 ($k = y - c$)固定一个 * 外生* 网格$\{ k_i\} $。
118- * 然后我们通过以下方式获得 $c_i$
117+ * 首先,固定一个关于资本 ($k = y - c$)的 * 外生* 网格 $\{ k_i\} $;
118+ * 接着,根据以下公式求得 $c_i$:
119119
120120``` {math}
121121:label: egm_getc
@@ -127,23 +127,23 @@ c_i =
127127\right\}
128128```
129129
130- * 最后,对于每个 $c_i$我们设定 $y_i = c_i + k_i$。
130+ * 最后,对每个 $c_i$,设定 $y_i = c_i + k_i$。
131131
132- 显然,以这种方式构造的每个 $(y_i, c_i)$对都满足 {eq}` egm_coledef ` 。
132+ 显然,每个通过上述方式构建的 $(y_i, c_i)$ 都满足 {eq}` egm_coledef ` 。
133133
134- 有了这些点 $\{ y_i, c_i\} $,我们可以像之前一样通过近似重构 $K \sigma$。
134+ 有了点集 $\{ y_i, c_i\} $,我们即可通过近似方法重建 $K \sigma$。
135135
136- EGM这个名称来源于网格 $\{ y_i\} $是** 内生** 决定的这一事实 。
136+ 新的EGM算法的关键在于:网格 $\{ y_i\} $ 是** 内生** 决定的 。
137137
138138## 实现
139139
140- 如 {doc}` 之前 <coleman_policy_iter>` ,我们将从一个简单的设定开始,其中
140+ 与 {doc}` 时间迭代 <coleman_policy_iter>` 相同,我们从一个简单设定开始:
141141
142- * $u(c) = \ln c$,
143- * 生产函数是柯布-道格拉斯形式,且
144- * 冲击是对数正态分布 。
142+ * $u(c) = \ln c$;
143+ * 生产函数是柯布-道格拉斯形式;
144+ * 冲击项服从对数正态分布 。
145145
146- 这将使我们能够与解析解进行比较
146+ 这一设定使我们能够将数值解与解析解进行对比。
147147
148148``` {code-cell} ipython3
149149:load: _static/lecture_specific/optgrowth/cd_analytical.py
@@ -157,7 +157,7 @@ EGM这个名称来源于网格$\{y_i\}$是**内生**决定的这一事实。
157157
158158### 算子
159159
160- 以下是使用EGM实现 $K$的代码,如上所述。
160+ 以下给出使用EGM方法实现算子 $K$ 的代码:
161161
162162``` {code-cell} ipython3
163163@jit
@@ -190,18 +190,18 @@ def K(σ_array, og):
190190 return c
191191```
192192
193- 注意这里没有任何求根算法 。
193+ 值得注意的是,该算法不需要求根算法 。
194194
195195### 测试
196196
197- 首先我们创建一个实例 。
197+ 首先,我们创建一个实例 。
198198
199199``` {code-cell} ipython3
200200og = OptimalGrowthModel()
201201grid = og.grid
202202```
203203
204- 这是我们的求解程序 :
204+ 下面是求解程序 :
205205
206206``` {code-cell} ipython3
207207:load: _static/lecture_specific/coleman_policy_iter/solve_time_iter.py
@@ -214,18 +214,18 @@ grid = og.grid
214214σ = solve_model_time_iter(og, σ_init)
215215```
216216
217- 以下是结果策略与真实策略的比较 :
217+ 以下是得到的策略与真实策略的比较 :
218218
219219``` {code-cell} ipython3
220220y = grid + σ # y_i = k_i + c_i
221221
222222fig, ax = plt.subplots()
223223
224224ax.plot(y, σ, lw=2,
225- alpha=0.8, label='approximate policy function ')
225+ alpha=0.8, label='近似策略函数 ')
226226
227227ax.plot(y, σ_star(y, og.α, og.β), 'k--',
228- lw=2, alpha=0.8, label='true policy function ')
228+ lw=2, alpha=0.8, label='真实策略函数 ')
229229
230230ax.legend()
231231plt.show()
@@ -237,15 +237,15 @@ plt.show()
237237np.max(np.abs(σ - σ_star(y, og.α, og.β)))
238238```
239239
240- 收敛需要多长时间?
240+ 收敛所需的时间为:
241241
242242``` {code-cell} ipython3
243243%%timeit -n 3 -r 1
244244σ = solve_model_time_iter(og, σ_init, verbose=False)
245245```
246246
247- 相对于时间迭代,EGM在没有任何数值求根步骤的情况下,仍然能够显著减少计算时间,同时保持高精度 。
247+ 相较于已被证明高度高效的时间迭代法,内生网格法(EGM)在保持精度不变的前提下,进一步显著减少了运行时间 。
248248
249- 这是因为没有数值求根步骤 。
249+ 其主要原因在于该方法不需要进行数值求根步骤 。
250250
251- 我们现在可以非常快速地求解给定参数的随机最优增长模型 。
251+ 因此,我们能够在给定参数下以极高的速度求解最优增长模型 。
0 commit comments