@@ -29,7 +29,7 @@ kernelspec:
2929```
3030
3131``` {seealso}
32- **GPU :** 这个讲座的一个使用 [jax](https://jax.readthedocs.io)在`GPU`上运行代码的版本[可在此处获得 ](https://jax.quantecon.org/newtons_method.html)
32+ **GPU加速 :** 本讲座有一个使用 [jax](https://jax.readthedocs.io)在GPU上运行的版本,[点击这里查看 ](https://jax.quantecon.org/newtons_method.html)
3333```
3434
3535## 概述
@@ -40,25 +40,25 @@ kernelspec:
4040
4141换句话说,均衡是超额需求函数的零点。
4242
43- 有各种计算技术可用于求解不动点和零点 。
43+ 有各种算法可用于求解不动点和零点 。
4444
4545在本讲中,我们将学习一种重要的基于梯度的技术,称为[ 牛顿法] ( https://baike.baidu.com/item/%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95?fromModule=lemma_search-box ) 。
4646
4747牛顿法并非总是有效,但在适用的情况下,其收敛速度通常比其他方法更快。
4848
49- 本讲将在一维和多维环境中应用牛顿法来解决不动点和零点查找问题 。
49+ 本讲将在一维和多维环境中应用牛顿法来解决不动点和零点计算问题 。
5050
51- * 在寻找函数$f$的不动点时,牛顿法通过求解一个函数 $f$ 的线性近似。
51+ 牛顿法的基本思路是:
5252
53- * 在寻找函数 $f$ 的零点时,牛顿法通过求解函数 $f$ 的线性近似的零点来更新
54- 现有的猜测值。
53+ * 对于不动点问题,通过对函数 $f$ 进行线性近似来寻找不动点。
5554
56- 为了建立直观认识,我们首先考虑一个简单的一维不动点问题,其中我们已知解,并使用连续
57- 近似和牛顿法来求解。
55+ * 对于零点问题,通过求解函数 $f$ 的线性近似的零点,不断更新当前的估计值,直到收敛到真实的零点。
5856
59- 然后我们将牛顿法应用到多维环境中,求解多种商品的市场均衡 。
57+ 为了建立直观认识,我们首先考虑一个简单的一维不动点问题,其中我们已知解,并使用连续近似和牛顿法来求解 。
6058
61- 在讲座最后,我们利用 [ ` autograd ` ] ( https://github.com/HIPS/autograd ) 中自动微分的强大功能来求解一个非常高维的均衡问题。
59+ 然后我们将牛顿法应用到多维环境中,求解多种商品的市场均衡问题。
60+
61+ 最后,我们将使用 [ ` autograd ` ] ( https://github.com/HIPS/autograd ) 包提供的自动微分功能来处理一个高维均衡问题。
6262
6363``` {code-cell} ipython3
6464:tags: [hide-output]
@@ -113,7 +113,7 @@ plt.rcParams["figure.figsize"] = (10, 5.7)
113113换句话说,我们要寻找一个 $k^* > 0$ 使得 $g(k^* )=k^* $。
114114
115115* 这样的 $k^* $ 被称为[ 稳态] ( https://zh.wikipedia.org/wiki/%E7%A9%A9%E6%85%8B_(%E7%B3%BB%E7%B5%B1) ) ,
116- 因为当 $k_t = k^* $ 时意味着 $k_ {t+1} = k^* $。
116+ 因为当 $k_t = k^* $ 时, $k_ {t+1} = k^* $。
117117
118118用纸笔解方程 $g(k)=k$,你可以验证
119119
@@ -205,7 +205,7 @@ plt.show()
205205
206206在这种情况下,连续近似法意味着从某个初始状态 $k_0$ 开始,使用运动规律反复更新资本。
207207
208- 这里是从特定选择的 $k_0$ 得到的时间序列 。
208+ 这里是以特定的 $k_0$ 为初始值得到的时间序列 。
209209
210210``` {code-cell} ipython3
211211def compute_iterates(k_0, f, params, n=25):
@@ -241,7 +241,6 @@ k_star_approx
241241
242242这接近真实值。
243243
244-
245244``` {code-cell} ipython3
246245k_star
247246```
@@ -282,15 +281,15 @@ g'(k) = \alpha s A k^{\alpha-1} + (1-\delta)
282281
283282```
284283
285- 让我们定义这个:
284+ 让我们定义这个函数
286285
287286``` {code-cell} ipython3
288287def Dg(k, params):
289288 A, s, α, δ = params
290289 return α * A * s * k**(α-1) + (1 - δ)
291290```
292291
293- 这里有一个函数 $q$ 表示 [ ] ( newtons_method ) 。
292+ 下面的函数 $q$ 表示 [ ] ( newtons_method ) 。
294293
295294``` {code-cell} ipython3
296295def q(k, params):
@@ -349,7 +348,6 @@ plot_trajectories(params)
349348让我们讨论这个"求根"问题,然后说明它与寻找不动点的问题是如何联系的。
350349
351350
352-
353351### 牛顿法求零点
354352
355353假设我们想要找到一个 $x$ 使得对某个光滑函数 $f$ (从实数映射到实数)有 $f(x)=0$。
@@ -430,10 +428,9 @@ k_star_approx_newton
430428结果证实了我们在上面图表中看到的收敛情况:仅需5次迭代就达到了非常精确的结果。
431429
432430
433-
434431## 多元牛顿法
435432
436- 在本节中,我们将介绍一个双商品问题,展示问题的可视化 ,并使用` SciPy ` 中的零点查找器和牛顿法来求解这个双商品市场的均衡。
433+ 在本节中,我们将介绍一个双商品问题,可视化问题 ,并使用` SciPy ` 中的零点查找器和牛顿法来求解这个双商品市场的均衡。
437434
438435然后,我们将这个概念扩展到一个包含5,000种商品的更大市场,并再次比较这两种方法的性能。
439436
@@ -550,14 +547,14 @@ print(f'商品0的超额需求为 {ex_demand[0]:.3f} \n'
550547 f'商品1的超额需求为 {ex_demand[1]:.3f}')
551548```
552549
553- 接下来我们在$(p_0, p_1)$值的网格上绘制两个函数$e_0$和$e_1$的等高线图和曲面 。
550+ 接下来我们在$(p_0, p_1)$值的网格上绘制两个函数$e_0$和$e_1$的等高线图和曲面图 。
554551
555552我们将使用以下函数来构建等高线图
556553
557554``` {code-cell} ipython3
558555def plot_excess_demand(ax, good=0, grid_size=100, grid_max=4, surface=True):
559556
560- # Create a 100x100 grid
557+ # 创建一个100x100的网格
561558 p_grid = np.linspace(0, grid_max, grid_size)
562559 z = np.empty((100, 100))
563560
@@ -572,19 +569,19 @@ def plot_excess_demand(ax, good=0, grid_size=100, grid_max=4, surface=True):
572569 ctr1 = ax.contour(p_grid, p_grid, z.T, levels=[0.0])
573570 ax.set_xlabel("$p_0$")
574571 ax.set_ylabel("$p_1$")
575- ax.set_title(f'Excess Demand for Good {good}')
572+ ax.set_title(f'超额需求函数 {good}')
576573 plt.clabel(ctr1, inline=1, fontsize=13)
577574```
578575
579- 这是我们对 $e_0$ 的绘图:
576+ 这是 $e_0$ 的图
580577
581578``` {code-cell} ipython3
582579fig, ax = plt.subplots()
583580plot_excess_demand(ax, good=0)
584581plt.show()
585582```
586583
587- 这是我们对 $e_1$ 的绘图:
584+ 这是 $e_1$ 的图
588585
589586``` {code-cell} ipython3
590587fig, ax = plt.subplots()
@@ -617,21 +614,21 @@ plt.show()
617614init_p = np.ones(2)
618615```
619616
620- 这使用 [ 改进的Powell方法] ( https://docs.scipy.org/doc/scipy/reference/optimize.root-hybr.html#optimize-root-hybr ) 来寻找零点
617+ 这个算法使用 [ 改进的Powell方法] ( https://docs.scipy.org/doc/scipy/reference/optimize.root-hybr.html#optimize-root-hybr ) 来寻找零点
621618
622619``` {code-cell} ipython3
623620%%time
624621solution = root(lambda p: e(p, A, b, c), init_p, method='hybr')
625622```
626623
627- 这是得到的值:
624+ 这是得到的值
628625
629626``` {code-cell} ipython3
630627p = solution.x
631628p
632629```
633630
634- 这个结果看起来和我们从图中观察到的猜测很接近。我们可以把它代回到 $e$ 中验证 $e(p) \approx 0$:
631+ 这个结果看起来和我们从图中观察到的猜测很接近。我们可以把它代回到 $e$ 中验证 $e(p) \approx 0$
635632
636633``` {code-cell} ipython3
637634np.max(np.abs(e(p, A, b, c)))
@@ -741,8 +738,6 @@ np.max(np.abs(e(p, A, b, c)))
741738
742739结果非常准确。
743740
744- 由于较大的开销,速度并不比优化后的 ` scipy ` 函数更好。
745-
746741### 高维问题
747742
748743我们的下一步是研究一个有3,000种商品的大型市场。
@@ -940,7 +935,7 @@ init = np.repeat(1.0, 3)
940935 tol=1e-7)
941936```
942937
943- 我们可以看到它正在朝着更精确的解决方案迈进 。
938+ 我们可以看到它正在朝着更精确的解迈进 。
944939
945940``` {solution-end}
946941```
0 commit comments