@@ -23,7 +23,7 @@ kernelspec:
2323:depth: 2
2424```
2525
26- 除了Anaconda中已有的库外,本讲座还需要以下库 :
26+ 除Anaconda已包含的库外,本讲义还需要安装以下库 :
2727
2828``` {code-cell} ipython
2929---
@@ -33,22 +33,23 @@ tags: [hide-output]
3333```
3434## 概述
3535
36- 在本讲中,我们将继续我们 {doc}` 之前 <optgrowth>` 对随机最优增长模型的研究 。
36+ 在本讲中,我们将继续此前对 {doc}` 随机最优增长模型 <optgrowth>` 的研究 。
3737
38- 在那节课中,我们使用值函数迭代求解了相关的动态规划问题 。
38+ 在那一讲中,我们使用价值函数迭代求解了相关的动态规划问题 。
3939
4040这种技术的优点在于其广泛的适用性。
4141
42- 然而,对于数值问题,我们通常可以通过推导专门针对具体应用的方法来获得更高的效率 。
42+ 然而,在数值问题中,我们常常可以通过推导出更贴合具体应用的算法,以获得更高的效率 。
4343
44- 随机最优增长模型有大量可供利用的结构,特别是当我们对原始函数采用一些凹性和光滑性假设时 。
44+ 随机最优增长模型具备丰富的结构可供利用,尤其当我们对原始要素施加某些凹性与光滑性假设时 。
4545
46- 我们将利用这种结构来获得一个基于欧拉方程的方法 。
46+ 我们将利用这一结构,获得基于欧拉方程的方法 。
4747
48- 这将是对我们在 {doc}` 蛋糕食用问题 <cake_eating_numerical>` 的基础讲座中考虑的时间迭代法的扩展 。
48+ 这将是我们在基础讲义 {doc}` 吃蛋糕问题 <cake_eating_numerical>` 中所考虑的时间迭代方法的扩展 。
4949
50- 在{doc}` 后续讲座 <egm_policy_iter> ` 中,我们将看到时间迭代可以进一步调整以获得更高的效率。
51- 让我们从一些导入开始:
50+ 在{doc}` 下一讲 <egm_policy_iter> ` 中,我们将看到,时间迭代可以进一步调整,以获得更高的效率。
51+
52+ 接下来,让我们从导入开始:
5253
5354``` {code-cell} ipython
5455import matplotlib.pyplot as plt
@@ -63,18 +64,18 @@ from numba import jit
6364```
6465## 欧拉方程
6566
66- 我们的第一步是推导欧拉方程,这是对我们在 {doc}` 蛋糕食用问题讲座 <cake_eating_problem>` 中得到的欧拉方程的推广。
67+ 我们的第一步是推导欧拉方程,这是此前在 {doc}` 吃蛋糕问题 <cake_eating_problem>` 中得到的欧拉方程的推广。
6768
68- 我们采用{doc}` 随机增长模型讲座 <optgrowth>` 中设定的模型,并添加以下假设 :
69+ 我们采用{doc}` 随机增长模型 <optgrowth>` 中的模型设定,并加入以下假设 :
6970
70- 1 . $u$和 $f$是连续可微且严格凹函数
71- 1 . $f(0) = 0$
72- 1 . $\lim_ {c \to 0} u'(c) = \infty$且 $\lim_ {c \to \infty} u'(c) = 0$
73- 1 . $\lim_ {k \to 0} f'(k) = \infty$且 $\lim_ {k \to \infty} f'(k) = 0$
71+ 1 . $u$ 和 $f$ 是连续可微且严格凹函数;
72+ 1 . $f(0) = 0$;
73+ 1 . $\lim_ {c \to 0} u'(c) = \infty$ 且 $\lim_ {c \to \infty} u'(c) = 0$;
74+ 1 . $\lim_ {k \to 0} f'(k) = \infty$ 且 $\lim_ {k \to \infty} f'(k) = 0$。
7475
75- 最后两个条件通常被称为** 稻田条件 ** 。
76+ 最后两个条件通常被称为** Inada条件 ** 。
7677
77- 回顾贝尔曼方程
78+ 回顾贝尔曼方程:
7879
7980``` {math}
8081:label: cpi_fpb30
@@ -83,28 +84,28 @@ v^*(y) = \max_{0 \leq c \leq y}
8384 \left\{
8485 u(c) + \beta \int v^*(f(y - c) z) \phi(dz)
8586 \right\}
86- \quad \text{for all} \quad
87- y \in \mathbb R_+
87+ \quad \forall y \in \mathbb R_+
8888```
8989
90- 让最优消费策略用$\sigma^* $表示。
90+ 令最优消费策略记为 $\sigma^* $。
91+
92+ 我们知道 $\sigma^* $ 是一个 $v^* $-逐期最优的,因此 $\sigma^* (y)$ 是{eq}` cpi_fpb30 ` 中的最大化解。
9193
92- 我们知道$\sigma^* $是一个$v^* $-贪婪策略,因此$\sigma^* (y)$是{eq}` cpi_fpb30 ` 中的最大化值。
93- 上述条件表明
94+ 上述条件表明:
9495
95- * $\sigma^* $ 是随机最优增长模型的唯一最优策略
96- * 最优策略是连续的 、严格递增的,并且是** 内部的 ** ,即对于所有严格正的 $y$,都有 $0 < \sigma^* (y) < y$,并且
97- * 值函数是严格凹的且连续可微的,满足
96+ * $\sigma^* $ 是随机最优增长模型的唯一最优策略;
97+ * 该最优策略是连续的 、严格递增的,并且是** 内部解 ** ,即对于所有严格正的 $y$,都有 $0 < \sigma^* (y) < y$;
98+ * 价值函数是严格凹的且连续可微的,并满足:
9899
99100``` {math}
100101:label: cpi_env
101102
102103(v^*)'(y) = u' (\sigma^*(y) ) := (u' \circ \sigma^*)(y)
103104```
104105
105- 最后这个结果被称为 ** 包络条件** ,因为它与[ 包络定理] ( https://en.wikipedia.org/wiki/Envelope_theorem ) 有关。
106+ 最后一个结果被称为 ** 包络条件** ,因为它与[ 包络定理] ( https://baike.baidu.com/item/%E5%8C%85%E7%BB%9C%E5%AE%9A%E7%90%86/5746200 ) 有关。
106107
107- 要理解为什么{eq}` cpi_env ` 成立,可以将贝尔曼方程写成等价形式
108+ 要理解为什么{eq}` cpi_env ` 成立,可以将贝尔曼方程写成等价形式:
108109
109110$$
110111v^*(y) = \max_{0 \leq k \leq y}
@@ -113,18 +114,19 @@ v^*(y) = \max_{0 \leq k \leq y}
113114 \right\},
114115$$
115116
116- 对 $y$ 求导,然后在最优点处求值即可得到{eq}` cpi_env ` 。
117- ([ EDTC] ( https://johnstachurski.net/edtc.html ) 第12.1节包含这些结果的完整证明,许多其他教材中也可以找到密切相关的讨论。)
117+ 对 $y$ 求导,并在最优解处求值,即可得到{eq}` cpi_env ` 。
118+
119+ ([ EDTC] ( https://johnstachurski.net/edtc.html ) 第12.1节给出了这些结果的完整证明,许多其他教材中也可找到类似讨论。)
118120
119- 价值函数的可微性和最优策略的内部性意味着最优消费满足与 {eq}` cpi_fpb30 ` 相关的一阶条件,即
121+ 价值函数的可微性和最优策略的内部性意味着,最优消费决策满足与 {eq}` cpi_fpb30 ` 相关的一阶条件,即
120122
121123``` {math}
122124:label: cpi_foc
123125
124126u'(\sigma^*(y)) = \beta \int (v^*)'(f(y - \sigma^*(y)) z) f'(y - \sigma^*(y)) z \phi(dz)
125127```
126128
127- 将{eq}` cpi_env ` 和一阶条件 {eq}` cpi_foc ` 结合得到 ** 欧拉方程**
129+ 将{eq}` cpi_env ` 和该一阶条件 {eq}` cpi_foc ` 结合,得到 ** 欧拉方程** :
128130
129131``` {math}
130132:label: cpi_euler
@@ -133,21 +135,21 @@ u'(\sigma^*(y)) = \beta \int (v^*)'(f(y - \sigma^*(y)) z) f'(y - \sigma^*(y)) z
133135= \beta \int (u'\circ \sigma^*)(f(y - \sigma^*(y)) z) f'(y - \sigma^*(y)) z \phi(dz)
134136```
135137
136- 我们可以将欧拉方程视为一个泛函方程
138+ 我们可以将欧拉方程视为一个函数方程:
137139
138140``` {math}
139141:label: cpi_euler_func
140142
141143(u'\circ \sigma)(y)
142144= \beta \int (u'\circ \sigma)(f(y - \sigma(y)) z) f'(y - \sigma(y)) z \phi(dz)
143145```
144- 对于内部消费策略 $\sigma$,其中一个解就是最优策略 $\sigma^* $。
146+ 其中 $\sigma$ 为内部消费策略,其解之一即为最优策略 $\sigma^* $。
145147
146148我们的目标是求解函数方程 {eq}` cpi_euler_func ` 从而获得 $\sigma^* $。
147149
148150### Coleman-Reffett 算子
149151
150- 回顾 Bellman 算子
152+ 回顾贝尔曼算子:
151153
152154``` {math}
153155:label: fcbell20_coleman
@@ -158,14 +160,14 @@ Tv(y) := \max_{0 \leq c \leq y}
158160\right\}
159161```
160162
161- 正如我们引入 Bellman 算子来求解 Bellman 方程一样,我们现在将引入一个作用于策略的算子来帮助我们求解欧拉方程 。
163+ 正如我们引入贝尔曼算子来求解贝尔曼方程一样,我们现在将引入一个作用于策略空间的算子,用于帮助我们求解欧拉方程 。
162164
163- 这个算子 $K$ 将作用于所有连续、严格递增且内部的 $\sigma \in \Sigma$ 的集合上 。
165+ 该算子 $K$ 将作用于所有连续、严格递增且为内部解的 $\sigma \in \Sigma$。
164166
165- 此后我们用 $\mathscr P$ 表示这个策略集合
167+ 此后我们将这类策略集合记为 $\mathscr P$。
166168
167- 1 . 算子 $K$ 以 $\sigma \in \mathscr P$ 为参数
168- 1 . 返回一个新函数 $K\sigma$,其中 $K\sigma(y)$ 是求解以下方程的 $c \in (0, y)$。
169+ 1 . 算子 $K$ 的自变量是一个 $\sigma \in \mathscr P$;
170+ 1 . 返回一个新函数 $K\sigma$,其中 $( K\sigma) (y)$ 是求解以下方程的 $c \in (0, y)$:
169171
170172``` {math}
171173:label: cpi_coledef
@@ -176,76 +178,78 @@ u'(c)
176178
177179我们称这个算子为** Coleman-Reffett算子** ,以此致敬{cite}` Coleman1990 ` 和{cite}` Reffett1996 ` 的研究工作。
178180
179- 本质上,当你的未来消费政策是$ \sigma$时,$K \sigma$是欧拉方程告诉你今天应该选择的消费政策 。
181+ 本质上,$K \sigma$ 表示在给定未来消费策略为 $ \sigma$ 时,欧拉方程指导你今天应选择的消费策略 。
180182
181- 关于 $K$需要注意的重要一点是,根据其构造,其不动点恰好与函数方程 {eq}` cpi_euler_func ` 的解coincide 。
183+ 值得注意的是:依据构造,算子 $K$ 的不动点恰好与函数方程 {eq}` cpi_euler_func ` 的解相一致 。
182184
183- 特别地,最优政策$\sigma^* $就是一个不动点 。
185+ 特别地,最优政策 $\sigma^* $ 是一个不动点 。
184186
185- 事实上,对于固定的$y$,$K\sigma^* (y)$是解决以下方程的 $c$:
187+ 事实上,对于固定的 $y$,$( K\sigma^* ) (y)$ 是满足以下方程的 $c$:
186188
187189$$
188190u'(c)
189191= \beta \int (u' \circ \sigma^*) (f(y - c) z ) f'(y - c) z \phi(dz)
190192$$
191193
192- 根据欧拉方程,这恰好就是 $\sigma^* (y)$。
194+ 根据欧拉方程,该解正是 $\sigma^* (y)$。
193195
194- ### Coleman-Reffett算子是否良定义 ?
196+ ### Coleman-Reffett算子是否定义良好 ?
195197
196- 特别地,是否总存在唯一的$c \in (0, y)$来解决 {eq}` cpi_coledef ` ?
198+ 特别地,是否总存在唯一的 $c \in (0, y)$ 使其满足 {eq}` cpi_coledef ` ?
197199
198200在我们的假设条件下,答案是肯定的。
199- 对于任何 $\sigma \in \mathscr P$,{eq}` cpi_coledef ` 右侧
200201
201- * 在 $(0, y)$ 上关于 $c$ 是连续且严格递增的
202- * 当 $c \uparrow y$ 时趋向于 $+\infty$
202+ 对于任何 $\sigma \in \mathscr P$,{eq}` cpi_coledef ` 的右侧:
203203
204- {eq}` cpi_coledef ` 左侧
204+ * 在 $(0, y)$ 上关于 $c$ 是连续且严格递增的;
205+ * 当 $c \uparrow y$ 时趋向于 $+\infty$。
205206
206- * 在 $(0, y)$ 上关于 $c$ 是连续且严格递减的
207- * 当 $c \downarrow 0$ 时趋向于 $+\infty$
207+ {eq}` cpi_coledef ` 的左侧:
208208
209- 绘制这些曲线并利用上述信息,你会确信当 $c$ 在 $(0, y)$ 范围内变化时,这些曲线恰好相交一次。
209+ * 在 $(0, y)$ 上关于 $c$ 是连续且严格递减的;
210+ * 当 $c \downarrow 0$ 时趋向于 $+\infty$。
210211
211- 通过更深入的分析,可以进一步证明当 $\sigma \in \mathscr P$ 时,$K \sigma \in \mathscr P$ 。
212+ 绘制这些曲线并利用上述信息,二者在 $c \in (0, y)$ 上恰好有且仅有一次交点 。
212213
213- ### 与值函数迭代的比较(理论)
214+ 进一步分析可得:若 $\sigma \in \mathscr P$,则 $K \sigma \in \mathscr P$。
214215
215- 可以证明 $K$ 的迭代与贝尔曼算子的迭代之间存在紧密关系。
216+ ### 与价值函数迭代的理论比较
216217
217- 从数学角度来说,这两个算子是 * 拓扑共轭的 * 。
218+ 可以证明,算子 $K$ 的迭代与贝尔曼算子的迭代之间存在紧密关系 。
218219
219- 简单来说,这意味着如果一个算子的迭代收敛,那么另一个算子的迭代也会收敛,反之亦然 。
220+ 从数学上讲,这两个算子是 * 拓扑共轭的 * 。
220221
221- 而且,至少从理论上讲,它们的收敛速度是相同的。
222- 然而,事实证明算子 $K$ 在数值计算上更加稳定,因此在我们考虑的应用中更加高效。
222+ 简单来说,这意味着:如果一个算子的迭代收敛,那么另一个算子的迭代也会收敛,反之亦然。
223223
224- 下面给出一些例子。
224+ 此外,在理论上可以认为二者的收敛速率是相同的。
225+
226+ 然而,事实证明,算子 $K$ 在数值计算上更加稳定,因此在我们考虑的应用中更加高效。
227+
228+ 下面给出若干示例。
225229
226230## 实现
227231
228- 如同我们在 {doc}` 之前的研究 <optgrowth_fast>` 中一样 ,我们继续假设
232+ 与 {doc}` 上一讲 <optgrowth_fast>` 一样 ,我们继续假设:
229233
230- * $u(c) = \ln c$
231- * $f(k) = k^{\alpha}$
232- * $\phi$ 是当 $\zeta$ 为标准正态分布时 $\ xi := \exp(\mu + s \zeta)$ 的分布
234+ * $u(c) = \ln c$;
235+ * $f(k) = k^{\alpha}$;
236+ * $\phi$ 是 $\xi := \exp(\mu + s \zeta)$ 的分布,且 $\zeta$ 服从标准正态分布。
233237
234- 这将使我们能够将结果与解析解进行比较
238+ 这一设定使我们能够将数值结果与解析解进行比较。
235239
236240``` {code-cell} ipython3
237241:load: _static/lecture_specific/optgrowth/cd_analytical.py
238242```
239- 如上所述,我们计划使用时间迭代来求解模型,这意味着要使用算子 $K$进行迭代。
243+ 如上所述,我们的目标是通过时间迭代来求解模型,即对算子 $K$ 进行迭代。
240244
241- 为此,我们需要访问函数 $u'$和$f, f'$。
245+ 为此,我们需要函数 $u', f$ 和 $ f'$。
242246
243- 这些函数在我们在 {doc}` 之前的讲座 <optgrowth_fast>` 中构建的` OptimalGrowthModel ` 类中可用 。
247+ 我们将使用 {doc}` 上一讲 <optgrowth_fast>` 中构建的` OptimalGrowthModel ` 类来实现 。
244248
245249``` {code-cell} ipython3
246250:load: _static/lecture_specific/optgrowth_fast/ogm.py
247251```
248- 现在我们实现一个名为 ` euler_diff ` 的方法,它返回
252+ 接下来我们实现一个名为 ` euler_diff ` 的方法,该方法返回:
249253
250254``` {math}
251255:label: euler_diff
@@ -272,11 +276,11 @@ def euler_diff(c, σ, y, og):
272276 vals = u_prime(σ_func(f(y - c) * shocks)) * f_prime(y - c) * shocks
273277 return u_prime(c) - β * np.mean(vals)
274278```
275- 函数` euler_diff ` 通过蒙特卡洛方法计算积分,并使用线性插值来近似函数 。
279+ 函数` euler_diff ` 通过蒙特卡洛方法计算积分,并使用线性插值对函数进行近似 。
276280
277- 我们将使用根查找算法来求解 {eq}` euler_diff ` ,在给定状态 $y$和 $σ$(当前策略猜测值)的情况下求解 $c$。
281+ 我们将使用求根算法来求解式 {eq}` euler_diff ` ,给定状态 $y$ 和 $σ$,寻找当前期消费 $c$。
278282
279- 以下是实现根查找步骤的算子 $K$。
283+ 下面是实现该求根算法的算子 $K$。
280284
281285``` {code-cell} ipython3
282286@jit
@@ -301,7 +305,7 @@ def K(σ, og):
301305```
302306### 测试
303307
304- 让我们生成一个实例并绘制 $K$的一些迭代结果,从 $σ(y) = y$开始 。
308+ 接下来,我们生成一个实例并绘制算子 $K$ 的若干次迭代结果,初始条件取 $σ(y) = y$。
305309
306310``` {code-cell} ipython3
307311og = OptimalGrowthModel()
@@ -326,9 +330,9 @@ ax.legend()
326330
327331plt.show()
328332```
329- 我们可以看到迭代过程快速收敛到一个极限值,这与我们在 {doc}` 上一讲<optgrowth_fast> ` 中得到的解相似 。
333+ 我们可以看到,迭代过程快速收敛到一个极限,该极限与我们在 {doc}` 上一讲<optgrowth_fast> ` 中得到的解非常相似 。
330334
331- 这里有一个名为 ` solve_model_time_iter ` 的函数,它接收一个` OptimalGrowthModel ` 实例作为输入,并通过时间迭代法返回最优策略的近似解。
335+ 这里给出一个名为 ` solve_model_time_iter ` 的函数,它接收一个` OptimalGrowthModel ` 实例作为输入,并通过时间迭代法返回最优策略的近似解。
332336
333337``` {code-cell} ipython3
334338:load: _static/lecture_specific/coleman_policy_iter/solve_time_iter.py
@@ -355,33 +359,33 @@ plt.show()
355359```
356360再次说明,拟合效果非常好。
357361
358- 两种策略之间的最大绝对偏差是
362+ 两种策略之间的最大绝对偏差是:
359363
360364``` {code-cell} ipython3
361365np.max(np.abs(σ - σ_star(og.grid, og.α, og.β)))
362366```
363- 需要多长时间才能收敛?
367+ 收敛所需时间如下:
364368
365369``` {code-cell} ipython3
366370%%timeit -n 3 -r 1
367371σ = solve_model_time_iter(og, σ_init, verbose=False)
368372```
369- 与我们的 {doc}` JIT编译的值函数迭代 <optgrowth_fast>` 相比,收敛速度非常快 。
373+ 收敛速度非常快,甚至优于我们 {doc}` 基于JIT编译的价值函数迭代 <optgrowth_fast>` 。
370374
371- 总的来说,我们发现时间迭代方法对于这个模型来说提供了很高的效率和准确性 。
375+ 总的来说,我们发现,至少对于该模型而言,时间迭代法在效率与准确度上均展现出高度优势 。
372376
373377## 练习
374378
375379``` {exercise}
376380:label: cpi_ex1
377381
378- 用CRRA效用函数求解模型
382+ 求解具有CRRA效用函数的模型
379383
380384$$
381385u(c) = \frac{c^{1 - \gamma}} {1 - \gamma}
382386$$
383387
384- 设定 `γ = 1.5`。
388+ 其中 `γ = 1.5`。
385389
386390计算并绘制最优策略。
387391```
390394:class: dropdown
391395```
392396
393- 我们使用{doc}` VFI讲座 <optgrowth_fast>` 中的` OptimalGrowthModel_CRRA ` 类。
397+ 我们使用{doc}` VFI讲义 <optgrowth_fast>` 中的` OptimalGrowthModel_CRRA ` 类。
394398
395399``` {code-cell} ipython3
396400:load: _static/lecture_specific/optgrowth_fast/ogm_crra.py
397401```
398402
399- 让我们创建一个实例 :
403+ 创建一个实例 :
400404
401405``` {code-cell} ipython3
402406og_crra = OptimalGrowthModel_CRRA()
403407```
404408
405- 现在我们求解并绘制策略 :
409+ 求解并绘制策略 :
406410
407411``` {code-cell} ipython3
408412%%time
@@ -412,7 +416,7 @@ og_crra = OptimalGrowthModel_CRRA()
412416fig, ax = plt.subplots()
413417
414418ax.plot(og.grid, σ, lw=2,
415- alpha=0.8, label='approximate policy function ')
419+ alpha=0.8, label='近似策略函数 ')
416420
417421ax.legend()
418422plt.show()
0 commit comments