From 62d800cf97e5cce2efae8208e8df14c3a510e1df Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Sat, 18 Jul 2026 20:41:28 +1000 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=94=84=20resync=20os.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .translate/state/os.md.yml | 6 ++ lectures/os.md | 179 ++++++++++++++++++++++++++++--------- 2 files changed, 145 insertions(+), 40 deletions(-) create mode 100644 .translate/state/os.md.yml diff --git a/.translate/state/os.md.yml b/.translate/state/os.md.yml new file mode 100644 index 00000000..4b7aae81 --- /dev/null +++ b/.translate/state/os.md.yml @@ -0,0 +1,6 @@ +source-sha: b27f1eb0ae52b5e20807d516a3d2f54a586e75fa +synced-at: "2026-07-18" +model: claude-sonnet-5 +mode: RESYNC +section-count: 6 +tool-version: 0.17.0 diff --git a/lectures/os.md b/lectures/os.md index 4b8ce269..aea0739c 100644 --- a/lectures/os.md +++ b/lectures/os.md @@ -7,6 +7,22 @@ kernelspec: display_name: Python 3 language: python name: python3 +translation: + title: 吃蛋糕问题 I:最优储蓄导论 + headings: + Overview: 概述 + The model: 模型 + The model::Trade-off: 权衡 + The model::Intuition: 直观理解 + The value function: 价值函数 + The value function::The Bellman equation: 贝尔曼方程 + The value function::An analytical solution: 一个解析解 + The optimal policy: 最优策略 + The Euler equation: 欧拉方程 + The Euler equation::Statement and implications: 陈述和含义 + 'The Euler equation::Derivation I: a perturbation approach': 推导 I:扰动法 + 'The Euler equation::Derivation II: using the Bellman equation': 推导 II:使用贝尔曼方程 + Exercises: 练习 --- # 吃蛋糕问题 I:最优储蓄导论 @@ -17,17 +33,17 @@ kernelspec: ## 概述 -在本讲中,我们介绍一个简单的“吃蛋糕”问题。 +在本讲中,我们介绍一个简单的"吃蛋糕"问题。 这里的跨期问题是:今天要享受多少,为未来留下多少? -尽管这个主题听起来很平凡,但这种“当前效用与未来效用的权衡”正是许多储蓄与消费问题的核心。 +这种"当前效用与未来效用的权衡"正是许多储蓄与消费问题的核心。 -一旦我们在这个简单环境中掌握了相关思想,我们就会逐步把它们应用到更具挑战性——也更有用——的问题中。 +一旦我们在这个简单环境中掌握了相关思想,我们就会逐步把它们应用到更具挑战性的问题中。 我们用来解决吃蛋糕问题的主要工具是动态规划。 -在阅读本讲之前,读者可能会发现复习以下讲座会有帮助: +以下讲座包含动态规划的背景知识,值得回顾: * {doc}`最短路径讲座 ` * {doc}`基础McCall模型 ` @@ -47,7 +63,7 @@ import numpy as np ``` ## 模型 -我们考虑一个无限期的时间区间 $t=0, 1, 2, 3...$ +我们考虑一个具有无限时间区间的离散时间模型。 在 $t=0$ 时,决策者获得一个大小为 $\bar x$ 的完整蛋糕。 @@ -58,7 +74,7 @@ import numpy as np 如果在第 $t$ 期选择消费 $c_t$ 单位的蛋糕,那么在第 $t+1$ 期剩余的蛋糕量为 $$ -x_{t+1} = x_t - c_t + x_{t+1} = x_t - c_t $$ 消费数量为 $c$ 的蛋糕会带来当期效用 $u(c)$。 @@ -73,11 +89,12 @@ u(c) = \frac{c^{1-\gamma}}{1-\gamma} \qquad (\gamma \gt 0, \, \gamma \neq 1) 在 Python 中表示为: -```{code-cell} ipython3 +```{code-cell} python3 def u(c, γ): return c**(1 - γ) / (1 - γ) ``` + 未来的蛋糕消费效用按照折现因子 $\beta \in (0,1)$ 进行折现。 具体来说,$t$ 期后的 $c$ 单位消费的现值是 $\beta^t u(c)$。 @@ -90,17 +107,19 @@ def u(c, γ): \max_{\{c_t\}} \sum_{t=0}^\infty \beta^t u(c_t) ``` -约束条件为,对所有 $t$, +约束条件为 ```{math} :label: cake_feasible -x_{t+1} = x_t - c_t -\quad \text{和} \quad -0\leq c_t\leq x_t + x_{t+1} = x_t - c_t + \quad \text{and} \quad + 0\leq c_t\leq x_t ``` -一个满足{eq}`cake_feasible`的消费路径 ${c_t}$(其中 $x_0 = \bar{x}$)被称为**可行的**。 +对所有 $t$ 成立。 + +一个满足 {eq}`cake_feasible` 且 $x_0 = \bar x$ 的消费路径 $\{c_t\}$ 被称为**可行的**。 在这个问题中,以下术语是标准的: @@ -115,7 +134,7 @@ x_{t+1} = x_t - c_t * 推迟消费是有代价的,因为存在折现因子。 * 但推迟部分消费也具有吸引力,因为效用函数 $u$ 是凹的。 -$u$ 的凹性意味着*消费平滑*,即将消费分散在不同时期,给消费者带来价值。 +$u$ 的凹性意味着消费者能够从**消费平滑**中获得价值,即将消费分散在不同时期。 这是因为凹性意味着边际效用递减——在同一时期内,每多消费一勺蛋糕所带来的效用增加会逐渐减少。 @@ -123,13 +142,20 @@ $u$ 的凹性意味着*消费平滑*,即将消费分散在不同时期,给 上述推理表明,贴现因子 $\beta$ 和曲率参数 $\gamma$ 在决定消费率时将起到关键作用。 -我们可以合理猜测这些参数的影响: +下面是关于这些参数将产生何种影响的一个合理猜测。 -首先,较高的 $\beta$ 意味着较少的折现,因此个体更有耐心,这应该会降低消费率。 +1. 较高的 $\beta$ 意味着较少的折现,因此个体更有耐心,这应该会降低消费率。 +2. 较高的 $\gamma$ 意味着 $u$ 的曲率更大,意味着对消费平滑有更强的偏好,因此消费率会更低。 -其次,较高的 $\gamma$ 意味着边际效用 $u'(c) = c^{-\gamma}$ 随着 $c$ 的增加下降得更快。这意味着会有更多的消费平滑,因此消费率会更低。 +```{note} +更正式地说,较高的 $\gamma$ 意味着更低的跨期替代弹性,因为 IES = $1/\gamma$。 -总之,我们预期消费率会*随着这两个参数的增加而减少*。 +这意味着消费者更不愿意在不同时期之间替代消费。 + +这种对消费平滑更强的偏好会导致更低的消费率。 +``` + +总之,我们预期消费率会随着这两个参数的增加而减少。 让我们看看这是否正确。 @@ -187,24 +213,26 @@ v(x) = \max_{0\leq c \leq x} \{u(c) + \beta v(x-c)\} ```{math} :label: crra_vstar -v^*(x_t) = \left( 1-\beta^{1/\gamma} \right)^{-\gamma}u(x_t) + v^*(x) = \left( 1-\beta^{1/\gamma} \right)^{-\gamma}u(x) ``` 是贝尔曼方程的解,因此等于价值函数。 在下面的练习中,你需要验证这一点。 +```{note} 解 {eq}`crra_vstar` 严重依赖于 CRRA 效用函数。 事实上,如果我们不使用CRRA效用函数,通常就完全没有解析解。 换句话说,在CRRA效用函数之外,我们知道价值函数仍然满足贝尔曼方程,但我们无法显式地写出它,作为状态变量和参数的函数。 -在那种情况下,我们会在需要时通过数值方法来处理。 +在后续讲座中,我们会用数值方法来处理这种情况。 +``` 下面是价值函数的一个 Python 表示: -```{code-cell} ipython3 +```{code-cell} python3 def v_star(x, β, γ): return (1 - β**(1 / γ))**(-γ) * u(x, γ) @@ -212,7 +240,7 @@ def v_star(x, β, γ): 下面的图,展示了在固定参数下该函数的形状: -```{code-cell} ipython3 +```{code-cell} python3 β, γ = 0.95, 1.2 x_grid = np.linspace(0.1, 5, 100) @@ -228,21 +256,21 @@ plt.show() ## 最优策略 -既然我们已经得到了价值函数,那么在每个状态下计算最优行动就很直接了。 +既然我们已经得到了价值函数 $v^*$,那么在每个状态下计算最优行动就很直接了。 -我们应该选择一个消费水平,使得贝尔曼方程{eq}`bellman-cep`的右侧最大化: +我们应该选择消费以最大化贝尔曼方程{eq}`bellman-cep`的右侧: $$ -c^* = \arg \max_{c} \{u(c) + \beta v(x - c)\} + c^* = \arg \max_{0 \leq c \leq x} \{u(c) + \beta v^*(x - c)\} $$ -我们可以将这个最优选择视为状态 $x$ 的函数,此时称之为**最优策略** (optimal policy)。 +我们可以将这个最优选择视为状态 $x$ 的**函数**,此时称之为**最优策略**。 我们用 $\sigma^*$ 表示最优策略,因此 $$ -\sigma^*(x) := \arg \max_{c} \{u(c) + \beta v(x - c)\} -\quad \text{对所有 } x + \sigma^*(x) := \arg \max_{c} \{u(c) + \beta v^*(x - c)\} + \quad \text{对所有 } \; x \geq 0 $$ 如果我们将价值函数的解析表达式{eq}`crra_vstar`代入右侧并计算最优值,可以得到 @@ -250,7 +278,7 @@ $$ ```{math} :label: crra_opt_pol -\sigma^*(x) = \left( 1-\beta^{1/\gamma} \right) x + \sigma^*(x) = \left( 1-\beta^{1/\gamma} \right) x ``` 现在让我们回顾一下关于参数影响的直觉。 @@ -258,16 +286,18 @@ $$ 我们之前猜测,消费率会随着这两个参数的增加而减少。 从{eq}`crra_opt_pol`可以看出,事实确实如此。 + 这里有一些图表来说明。 -```{code-cell} ipython3 +```{code-cell} python3 def c_star(x, β, γ): return (1 - β ** (1/γ)) * x ``` + 继续使用前面给定的参数 $\beta$ 和 $\gamma$,绘制出的图形如下: -```{code-cell} ipython3 +```{code-cell} python3 fig, ax = plt.subplots() ax.plot(x_grid, c_star(x_grid, β, γ), label='默认参数') ax.plot(x_grid, c_star(x_grid, β + 0.02, γ), label=r'更高的$\beta$') @@ -283,7 +313,7 @@ plt.show() 在上面的讨论中,我们已经在 CRRA 效用的情形下给出了吃蛋糕问题的完整解。 -事实上,还有另一种方法可以求解最优策略,即基于所谓的**欧拉方程**(Euler equation)。 +事实上,还有另一种方法可以求解最优策略,即基于所谓的**欧拉方程**。 尽管我们已经得到了完整解,但现在正是研究欧拉方程的好时机。 @@ -299,16 +329,17 @@ plt.show() u^{\prime} (c^*_{t})=\beta u^{\prime}(c^*_{t+1}) ``` -这是最优路径的必要条件。 +这是最优消费路径 $\{c^*_t\}_{t \geq 0}$ 的必要条件。 它表明,在最优路径上,经过适当折现之后,跨期边际收益是相等的。 这很合理:最优性是通过平滑消费直到没有额外的边际收益为止得到的。 我们也可以用策略函数来表述欧拉方程。 + **可行消费策略**是一个满足 $0 \leq \sigma(x) \leq x$ 的映射 $x \mapsto \sigma(x)$。 -这里的约束条件表明,我们不能消费超过剩余蛋糕的数量。 +(这个约束条件表明,我们不能消费超过剩余蛋糕的数量。) 如果一个可行消费策略 $\sigma$ 对于所有 $x > 0$ 满足以下条件,则称其**满足欧拉方程**: @@ -329,19 +360,19 @@ u^{\prime}( \sigma(x) ) **泛函方程**是一个未知对象为函数的方程。 ``` -关于欧拉方程在更一般情况下充分性的证明,请参见{cite}`ma2020income`中的命题2.2。 +关于欧拉方程在非常一般情况下充分性的证明,请参见{cite}`ma2020income`中的命题2.2。 -下面的论证将聚焦于必要性,解释为什么任何最优路径或最优策略都必须满足欧拉方程。S +下面的论证将聚焦于必要性,解释为什么最优路径或最优策略应当满足欧拉方程。 ### 推导 I:扰动法 -我们把 $c$ 作为消费路径 $\left\{{c_t}\right\}_{t=0}^\infty$ 的简写。 +我们把 $c$ 作为消费路径 $\{c_t\}_{t=0}^\infty$ 的简写。 整个吃蛋糕的最大化问题可以写作 $$ \max_{c \in F} U(c) -\quad \text{ 其中 } U(c) := \sum_{t=0}^\infty \beta^t u(c_t) +\quad \text{其中 } U(c) := \sum_{t=0}^\infty \beta^t u(c_t) $$ 其中 $F$ 是所有可行消费路径的集合。 @@ -352,7 +383,7 @@ $$ $U'(c^*) = 0$。 ```{note} -如果你想确切了解导数 $U'(c^*)$ 是如何定义的,考虑到参自变量 $c^*$ 是一个无限长的向量,你可以从学习[加托导数](https://baike.baidu.com/item/%E5%8A%A0%E6%89%98%E5%AF%BC%E6%95%B0)开始。不过,下文并不假定需要这些知识。 +如果你想确切了解导数 $U'(c^*)$ 是如何定义的,考虑到自变量 $c^*$ 是一个无限长的向量,你可以从学习[加托导数](https://baike.baidu.com/item/%E5%8A%A0%E6%89%98%E5%AF%BC%E6%95%B0)开始。不过,下文并不假定需要这些知识。 ``` 换句话说,对于任何无穷小的(且可行的)偏离最优路径的扰动,$U$ 的变化率必须为零。 @@ -398,6 +429,11 @@ $$ 另一种推导欧拉方程的方法是使用贝尔曼方程{eq}`bellman-cep`。 +```{note} +以下论证假定价值函数是可微的。 +关于价值函数可微性的证明,可参见[EDTC](https://johnstachurski.net/edtc.html)的定理10.1.13。 +``` + 对贝尔曼方程右侧关于 $c$ 求导并令其等于零,我们得到 ```{math} @@ -437,7 +473,7 @@ v' (x) = ``` (这个推导是[包络定理](https://blog.csdn.net/qq_25018077/article/details/123295394)的一个例子。) -结合{eq}`bellman_FOC`得到 +但现在应用{eq}`bellman_FOC`得到 ```{math} :label: bellman_v_prime @@ -460,7 +496,7 @@ u^{\prime}(c) = v^{\prime}(x) 假设我们不知道解,并从一个假设出发:最优策略是线性的。 -换句话说,我们猜测存在一个正的 $\theta$,使得令使得对所有 $t$,设定$c_t^*=\theta x_t$会产生一个最优路径。 +换句话说,我们猜测存在一个正的 $\theta$,使得对所有 $t$,设定 $c_t^*=\theta x_t$ 会产生一个最优路径。 从这个猜想出发,尝试获得解 {eq}`crra_vstar` 和 {eq}`crra_opt_pol`。 @@ -553,3 +589,66 @@ $$ 我们的论述现已得到验证。 ``` + +```{exercise} +:label: cep_ex2 + +验证最优策略{eq}`crra_opt_pol`满足欧拉方程{eq}`euler_pol`。 +``` + +```{solution} cep_ex2 +:class: dropdown + +回顾一下,最优策略为 + +$$ + \sigma^*(x) = (1 - \beta^{1/\gamma})x +$$ + +而策略形式下的欧拉方程为 + +$$ + u'(\sigma(x)) = \beta u'(\sigma(x - \sigma(x))) +$$ + +对于CRRA效用函数 $u(c) = \frac{c^{1-\gamma}}{1-\gamma}$,边际效用为 + +$$ + u'(c) = c^{-\gamma} +$$ + +现在让我们来验证欧拉方程。左边为 + +$$ + u'(\sigma^*(x)) + = [\sigma^*(x)]^{-\gamma} + = [(1 - \beta^{1/\gamma})x]^{-\gamma} + = (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} +$$ + +对于右边,我们首先计算下一期的状态: + +$$ + x - \sigma^*(x) = x - (1 - \beta^{1/\gamma})x = x\beta^{1/\gamma} +$$ + +在最优策略下,下一期的消费为 + +$$ + \sigma^*(x - \sigma^*(x)) = \sigma^*(x\beta^{1/\gamma}) = (1 - \beta^{1/\gamma}) \cdot x\beta^{1/\gamma} +$$ + +因此,欧拉方程的右边为 + +$$ +\begin{aligned} +\beta u'(\sigma^*(x - \sigma^*(x))) + &= \beta [(1 - \beta^{1/\gamma}) \cdot x\beta^{1/\gamma}]^{-\gamma} \\ + &= \beta (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} (\beta^{1/\gamma})^{-\gamma} \\ + &= \beta (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} \beta^{-1} \\ + &= (1 - \beta^{1/\gamma})^{-\gamma} x^{-\gamma} +\end{aligned} +$$ + +由于左边等于右边,最优策略 $\sigma^*$ 满足欧拉方程。 +``` \ No newline at end of file From 609e49569c768e84798647c9d7a452748541ba61 Mon Sep 17 00:00:00 2001 From: Matt McKay Date: Sun, 19 Jul 2026 14:04:58 +1000 Subject: [PATCH 2/2] Restore trailing newline (engine issue tracked in QuantEcon/action-translation#116) Co-Authored-By: Claude Fable 5 --- lectures/os.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lectures/os.md b/lectures/os.md index aea0739c..7ef10f88 100644 --- a/lectures/os.md +++ b/lectures/os.md @@ -651,4 +651,4 @@ $$ $$ 由于左边等于右边,最优策略 $\sigma^*$ 满足欧拉方程。 -``` \ No newline at end of file +```