Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 67 additions & 61 deletions lectures/scalar_dynam.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,19 @@ kernelspec:
在经济学中,许多变量依赖于它们的过去值。

例如,我们有理由相信去年的通货膨胀会影响今年的通货膨胀。
也许去年的高通胀会导致人们要求更高的工资作为补偿,这将导致今年的价格进一步上涨。)
比如去年的高通胀会导致人们要求更高的工资作为补偿,导致今年的价格进一步上涨。)

$\pi_t$表示今年的通货膨胀率,$\pi_{t-1}$表示去年的通货膨胀率,我们可以用一般形式将这种关系写成:
$\pi_t$表示今年的通货膨胀率,$\pi_{t-1}$表示去年的通货膨胀率,我们可以用一般形式将这种关系写成:

$$ \pi_t = f(\pi_{t-1}) $$

其中$f$是描述变量之间关系的某个函数。

这个方程是一维离散时间动态系统的一个例子
这个方程是一维离散时间动力系统的典型例子

在本讲座中,我们将介绍一维离散时间动力学的基础知识
在本讲中,我们将探讨一维离散时间动力学的基本原理

虽然大多数定量模型有两个或更多的状态变量,但一维设置是学习基础知识和理解关键概念的好地方。)
虽然实际经济模型通常包含两个或更多状态变量,但一维框架为我们理解基础理论和掌握核心概念提供了绝佳的起点。)

让我们从一些标准导入开始:

Expand All @@ -47,44 +47,45 @@ import numpy as np
```
## 一些定义

本节阐述了我们关注的对象和研究的属性类型
本节将介绍我们要研究的对象和关键概念

### 函数组合

对于本讲座,您应该了解以下内容
首先,让我们回顾一下函数组合的概念

如果

* $g$ 是从 $A$ 到 $B$ 的函数,且

* $f$ 是从 $B$ 到 $C$ 的函数,
* $g$ 是从集合 $A$ 到集合 $B$ 的函数,且
* $f$ 是从集合 $B$ 到集合 $C$ 的函数

那么 $f$ 和 $g$ 的**组合** $f \circ g$ 定义为

$$
(f \circ g)(x) = f(g(x))
$$

例如,如果
举个简单的例子,如果

* $A=B=C=\mathbb R$,即实数集,
* $A=B=C=\mathbb R$(实数集)
* $g(x)=x^2$ 且 $f(x)=\sqrt{x}$

* $g(x)=x^2$ 且 $f(x)=\sqrt{x}$,那么 $(f \circ g)(x) = \sqrt{x^2} = |x|$
那么 $(f \circ g)(x) = \sqrt{x^2} = |x|$

如果 $f$ 是从 $A$ 到其自身的函数,那么 $f^2$ $f$ 与自身的组合。
当函数映射到自身的集合时,我们可以定义函数的多次组合。如果 $f$ 是从集合 $A$ 到自身的函数,那么 $f^2$ 表示 $f$ 与自身的组合。

例如,如果 $A = (0, \infty)$,即正数集,且 $f(x) = \sqrt{x}$,那么
例如, $A = (0, \infty)$(正实数集)且 $f(x) = \sqrt{x}$ 时,我们有

$$
f^2(x) = \sqrt{\sqrt{x}} = x^{1/4}
$$

同样,如果 $n$ 是正整数,那么 $f^n$ $f$ 与自身的 $n$ 次组合。
更一般地,对于任意正整数 $n$$f^n$ 表示 $f$ 与自身的 $n$ 次组合。

在上面的例子中,$f^n(x) = x^{1/(2^n)}$。

### 动态系统
**(离散时间)动态系统**是一个集合 $S$ 和一个将集合 $S$ 映射回自身的函数 $g$。

**(离散时间)动态系统**由一个集合 $S$ 和一个将 $S$ 映射到自身的函数 $g$ 组成。

动态系统的例子包括:

Expand All @@ -94,11 +95,11 @@ $$

* $S = \mathbb Z$(整数集)且 $g(x) = 2 x$

另一方面,如果 $S = (-1, 1)$ 且 $g(x) = x+1$,那么 $S$ 和 $g$ 不构成动态系统,因为 $g(1) = 2$。
如果 $S = (-1, 1)$ 且 $g(x) = x+1$,那么 $S$ 和 $g$ 不构成动态系统,因为 $g(1) = 2$。

* $g$ 并不总是将 $S$ 中的点映射回 $S$。
* $g$ 并不总是将 $S$ 中的点映射回 $S$。

我们关心动态系统是因为我们可以用它们来研究动态!
研究动态系统的重要性在于它们能帮助我们理解和分析动态过程的基本特性。

给定由集合 $S$ 和函数 $g$ 组成的动态系统,我们可以通过设定

Expand All @@ -110,7 +111,7 @@ $$
x_0 \text{给定}
```

来创建 $S$ 中点的序列 $\{x_t\}$。
来创建由 $S$ 中点组成的序列 $\{x_t\}$。

这意味着我们选择 $S$ 中的某个数 $x_0$,然后取

Expand All @@ -124,10 +125,11 @@ $$

这个序列 $\{x_t\}$ 被称为 $x_0$ 在 $g$ 下的**轨迹**。

在这种情况下,$S$ 被称为**状态空间**,$x_t$ 被称为**状态变量**。
在这个理论框架下,$S$ 被称为**状态空间**,$x_t$ 被称为**状态变量**。

回想一下 $g^n$ 是 $g$ 与自身的 $n$ 次组合,
我们可以更简单地将轨迹写为

$$
x_t = g^t(x_0) \quad \text{对于} t = 0, 1, 2, \ldots
$$
Expand All @@ -136,19 +138,21 @@ $$

方程 {eq}`sdsod` 有时被称为**一阶差分方程**

* 一阶意味着只依赖于一个滞后(即,像 $x_{t-1}$ 这样的早期状态不会出现在 {eq}`sdsod` 中)。
* 一阶意味着只依赖于一个滞后(即,像 $x_{t-1}$ 这样的更早期的状态不会出现在 {eq}`sdsod` 中)。

### 示例:线性模型

动态系统的一个简单例子是当 $S=\mathbb R$ 且 $g(x)=ax + b$ 时,其中 $a, b$ 是常数(有时称为"参数")。
动态系统的一个典型例子是状态空间 $S=\mathbb R$ 与映射函数 $g(x)=ax + b$ ,其中 $a, b$ 是常数(有时称为"参数")。

由此可得**线性差分方程**

这导致了**线性差分方程**
$$
x_{t+1} = a x_t + b
\quad \text{其中}
x_0 \text{已给定}。
$$
$x_0$ 的轨迹是

其中$x_0$ 的轨迹是

```{math}
:label: sdslinmodpath
Expand All @@ -164,32 +168,31 @@ a^2 x_0 + a b + b, \quad \text{等等}
:label: sdslinmod

x_t = a^t x_0 + b \frac{1 - a^t}{1 - a}

```

我们得到了所有非负整数 $t$ $x_t$ 的精确表达式,从而完全理解了其动态
我们可以对任意非负整数 $t$ 求出 $x_t$ 的精确表达式,这让我们能够完全理解系统的动态特性

特别注意,如果 $|a| < 1$,那么根据上式,我们有
值得注意的是,当 $|a| < 1$ 时,根据上面的公式,我们得到

```{math}
:label: sdslinmodc

x_t \to \frac{b}{1 - a} \text{ 当 } t \to \infty
```

无论 $x_0$ 为何值。
无论起点 $x_0$ 为何值。

这是所谓全局稳定性的一个例子,我们将在后面再次讨论这个话题。
这是被称为全局稳定性的一个例子,我们将在后面再次讨论这个话题。

### 示例:非线性模型

在上面的线性例子中,我们得到了 $x_t$ 关于任意非负整数 $t$ 和 $x_0$ 的精确解析表达式
在上面的线性例子中,我们得到了 $x_t$ 关于任意非负整数 $t$ 和 $x_0$ 的精确解析式

这使得动态分析变得非常容易
这使得动力学分析变得轻而易举

然而,当模型是非线性时,情况可能会大不相同。

例如,在后面的索洛讲座中,我们将研究索洛-斯旺增长模型,其动态为
以索洛-斯旺增长模型为例(后续章节将深入分析),其动态规律由以下方程给出

```{math}
:label: solow_lom2
Expand All @@ -198,19 +201,18 @@ k_{t+1} = s A k_t^{\alpha} + (1 - \delta) k_t

```

这里 $k=K/L$ 是人均资本存量,$s$ 是储蓄率,$A$ 是全要素生产率,$\alpha$ 是资本份额,$\delta$ 是折旧率
这里 $k=K/L$ 表示人均资本存量,$s$ 为储蓄率,$A$ 表示全要素生产率,$\alpha$ 为资本份额,$\delta$ 为折旧率

所有这些参数都是正数,且 $0 < \alpha, \delta < 1$。

如果你尝试像我们在线性模型中那样迭代,你会发现代数运算很快就变得复杂。
如果你尝试像我们在线性模型中做的那样迭代,你会发现代数运算很快就变得复杂。

分析这个模型的动态需要一种不同的方法(见下文)。

## 稳定性

考虑一个动态系统,由集合 $S \subset \mathbb R$ 和将 $S$ 映射到 $S$ 的函数 $g$ 组成。
考虑这样一个动态系统,其由集合 $S \subset \mathbb R$ 和将 $S$ 映射到 $S$ 的函数 $g$ 组成。

(scalar-dynam:steady-state)=
### 稳态

该系统的**稳态**是 $S$ 中的一个点 $x^*$,满足 $x^* = g(x^*)$。
Expand All @@ -225,7 +227,6 @@ k_{t+1} = s A k_t^{\alpha} + (1 - \delta) k_t

* 如果 $a = 1$ 且 $b \not= 0$,那么这个线性模型在 $\mathbb R$ 中没有稳态。

(scalar-dynam:global-stability)=
### 全局稳定性

如果对于所有的 $x_0 \in S$,都有
Expand All @@ -242,7 +243,7 @@ $$

* 否则不是全局稳定的。

这直接从方程 {eq}`sdslinmod` 得出。
以上可以直接从方程 {eq}`sdslinmod` 得出。

### 局部稳定性

Expand Down Expand Up @@ -276,15 +277,15 @@ $$

没有一种单一的方法可以处理所有的非线性模型。

然而,对于一维模型,有一种技术可以提供大量的直观理解
然而,对于一维模型,有一种技巧可以提供大量的直观理解

这是一种基于**45度图**的图形方法。

让我们看一个例子:索洛-斯旺模型,其动态由{eq}`solow_lom2`给出。

我们首先从一些绘图代码开始,你可以在第一次阅读时忽略这些代码。

这段代码的功能是生成45度图和时间序列图
这段代码的功能是生成45度图和时序图

```{code-cell} ipython
---
Expand Down Expand Up @@ -384,17 +385,17 @@ def g(k, A = 2, s = 0.3, alpha = 0.3, delta = 0.4):
return A * s * k**alpha + (1 - delta) * k
```

这里是一个45度图
以下是一个45度图

```{code-cell} ipython
xmin, xmax = 0, 4 # 适合的绘图区域

plot45(g, xmin, xmax, 0, num_arrows=0)
```

图表显示了函数 $g$ 和45度线。
这张图显示了函数 $g$ 和45度线。

$k_t$ 视为横轴上的一个值。
可以将 $k_t$ 视为横轴上的一个值。

要计算 $k_{t+1}$,我们可以使用 $g$ 的图像来查看其在纵轴上的值。

Expand All @@ -412,7 +413,7 @@ plot45(g, xmin, xmax, 0, num_arrows=0)

* 唯一的正数,使得 $k = s z k^{\alpha} + (1 - \delta) k$。

通过一些代数运算,我们可以证明在第二种情况下,稳态是
通过一些代数运算,我们可以证明在第二种情况下,其稳态是

$$
k^* = \left( \frac{sz}{\delta} \right)^{1/(1-\alpha)}
Expand All @@ -432,13 +433,13 @@ k0 = 0.25
plot45(g, xmin, xmax, k0, num_arrows=5, var='k')
```

我们可以按照上图所示,绘制人均资本随时间变化的时间序列图,具体如下:
我们可以按照上图所示,绘制人均资本随时间变化的时序图,具体如下:

```{code-cell} ipython
ts_plot(g, xmin, xmax, k0, var='k')
```

这里是一个稍长一些的视角
这里是一个稍长期一些的视角

```{code-cell} ipython
ts_plot(g, xmin, xmax, k0, ts_length=20, var='k')
Expand All @@ -460,9 +461,10 @@ ts_plot(g, xmin, xmax, k0, var='k')

### 复杂动态

索洛-斯旺模型是非线性的,但仍然产生非常规律的动态。
尽管索洛-斯旺模型是非线性的,它仍然能生成非常规律的动态。

**二次映射**是一个能生成不规则动态的模型

一个能产生不规则动态的模型是**二次映射**
$$
g(x) = 4 x (1 - x),
\qquad x \in [0, 1]
Expand All @@ -478,14 +480,16 @@ g = lambda x: 4 * x * (1 - x)
x0 = 0.3
plot45(g, xmin, xmax, x0, num_arrows=0)
```
现在让我们来看一个典型的轨迹。

现在让我们来看一个特定的轨迹。

```{code-cell} ipython
plot45(g, xmin, xmax, x0, num_arrows=6)
```
注意它是多么不规则。

这是相应的时间序列图。
注意这个轨迹的不规则性。这种混沌行为是二次映射的典型特征。

这是相应的时序图。

```{code-cell} ipython
ts_plot(g, xmin, xmax, x0, ts_length=6)
Expand All @@ -503,15 +507,15 @@ ts_plot(g, xmin, xmax, x0, ts_length=20)

再次考虑线性模型 $x_{t+1} = a x_t + b$,其中 $a \not=1$。

唯一的稳态为 $b / (1 - a)$。
其唯一的稳态为 $b / (1 - a)$。

当 $|a| < 1$ 时,该稳态是全局稳定的。

尝试通过观察一系列初始条件来图形化地说明这一点
请通过选择不同的初始条件并绘制相应的图像来验证这一性质

在 $a \in (-1, 0)$ 和 $a \in (0, 1)$ 的情况下,你注意到了什么区别?

使用 $a=0.5$ 然后使用 $a=-0.5$ 并研究轨迹
使用 $a=0.5$ $a=-0.5$ 并分别研究轨迹

在整个过程中设置 $b=1$。

Expand All @@ -522,6 +526,7 @@ ts_plot(g, xmin, xmax, x0, ts_length=20)
```

我们将从 $a=0.5$ 的情况开始。

让我们设置模型和绘图区域:

```{code-cell} ipython
Expand All @@ -545,7 +550,7 @@ ts_plot(g, xmin, xmax, x0, ts_length=10)

现在让我们尝试 $a=-0.5$ 并观察有什么不同。

让我们设置模型和绘图区域
我们设置模型和绘图区域为

```{code-cell} ipython
a, b = -0.5, 1
Expand All @@ -559,17 +564,18 @@ g = lambda x: a * x + b
x0 = -0.5
plot45(g, xmin, xmax, x0, num_arrows=5)
```
这是相应的时间序列,它收敛于稳态。

以上是相应的时间序列,它收敛于稳态。

```{code-cell} ipython
ts_plot(g, xmin, xmax, x0, ts_length=10)
```

我们再次观察到收敛于稳态的情况,但收敛的性质有所不同
我们同样观察到序列收敛到稳态,但收敛方式明显不同

特别是,时间序列在稳态上方和下方来回跳跃
这次时间序列不是单调收敛,而是在稳态值的上下来回波动,逐渐接近稳态

在当前的语境中,这个序列被称为呈现**阻尼振荡**。
这种在接近稳态过程中振幅逐渐减小的波动模式,在动力系统中被称为**阻尼振荡**。

```{solution-end}
```
Loading
Loading