模型描述
经济模型描述
- 符号说明
符号 | 意义 |
---|---|
k k k | 表示第k个时段(把时间离散化为时段,1个时段相当于商品的1个生产周期) |
x k x_k xk | 第 k k k时段商品的数量为 x k x_k xk |
y k y_k yk | 第 k k k时段商品的价格为 y k y_k yk |
f f f | 需求曲线 |
h h h | 供应曲线 |
- 模型假设
- 商品的本期产量决定于前一期的价格。
- 商品本期的需求量决定于本期的价格。
- 商品生产周期较长,供给变动存在时滞,而需求不存在时滞。
- 模型建立
同一时段商品的价格 y y y取决于数量 x p x_p xp,设 y k = f ( x k ) y_k =f(x_k) yk=f(xk)它反映消费者对这种商品的需求关系,称需求函数。因为商品的数量越多价格越低,所以用一条下降曲线 f f f表示,称需求曲线。
下一时段商品的数量 x x x,由上一时段价格 y y y决定,设 x k + 1 = h ( y k ) x_{k+1} =h(y_k) xk+1=h(yk)或 y k = g ( x k + 1 ) y_k=g(x_{k+1}) yk=g(xk+1)这里 g g g是 h h h的反函数, h h h或 g g g反映生产者的供应关系,称供应函数。因为价格越高,生产量(即下一时段的商品数量)越大,所以在图中供应曲线 g g g是一条上升曲线。
图中两条曲线相交于 P ( x 0 , y 0 ) P(x_0,y_0) P(x0,y0),即点 P P P是平衡点,意味着一旦在某一时段 k k k有 x = x 0 x =x_0 x=x0,则 y k = y 0 y_k =y_0 yk=y0, x k + 1 = x 0 x_{k+1} =x_0 xk+1=x0, Y k + 1 = y 0 Y_{k+1} =y_0 Yk+1=y0…即 k k k以后各时段商品的数量和价格将永远保持在 P P P点。但是实际生活中的种种干扰使得数量和价格不可能停止在 P P P点,不妨设 x x x,偏离 x 0 x_0 x0。我们下面分三种情况分析随着 h h h的增加, x x x和 y k y_k yk的变化。
情形一:收敛型蛛网
供给弹性小于需求弹性,波动趋于稳定,靠近P点。
情形二:发散型蛛网
供给弹性大于需求弹性。
情形三:封闭型蛛网
供给弹性等于需求弹性。
差分方程模型:
差分方程模型在 P 0 P_0 P0点附近可以用直线来近似曲线 f f f和 h h h,
{ y k − y 0 = − α ( x k − x 0 ) x k + 1 − x 0 = − β ( y k − y 0 ) \left\{ \begin{gathered} {y_k} - {y_0} = - \alpha ({x_k} - {x_0}) \\ {x_{k + 1}} - {x_0} = - \beta ({y_k} - {y_0})\\ \end{gathered} \right. {yk−y0=−α(xk−x0)xk+1−x0=−β(yk−y0)
⇒ x k + 1 − x 0 = − α β ( x 1 − x 0 ) \begin{gathered} \Rightarrow {x_{k + 1}} - x_0= -\alpha \beta(x_1- x_0)\\ \end{gathered} ⇒xk+1−x0=−αβ(x1−x0)
对k递推得到
x k + 1 − x 0 = ( − α β ) k ( x 1 − x 0 ) x_{k+1}-x_0=(-\alpha \beta)^{k} (x_1- x_0) xk+1−x0=(−αβ)k(x1−x0)
容易看出,当 k → ∞ k \to \infty k→∞ P 0 P_0 P0点稳定的条件是 a β < 1 aβ<1 aβ<1;不稳定条件是 a β > 1 aβ>1 aβ>1。
该模型可以看做是两条相交曲线斜率绝对值比较的可视化。该模型可以拓展为辅助证明数列的单调有界、收敛性。
画图代码
#示例
import matplotlib.pyplot as plt
import numpy as np
from pynverse import inversefunc
import math
x=np.linspace(0.05,2.6,100)
h=x**2
hh=lambda x:x**2
d=inversefunc(hh)
f=pow(x,-0.7)
ff=lambda x:pow(x,-5)
xx=[]
yy=[]
a=6
for i in range(4):yy.append(a)b=d(a)xx.append(b)a=pow(b,-0.7)
xx.insert(0,xx[0])
xx.insert(2,xx[2])
xx.insert(4,xx[4])
yy.insert(1,yy[1])
yy.insert(3,yy[3])
yy.insert(5,yy[5])
print(xx,yy)plt.figure()
plt.plot(x,h,'b')
plt.plot(x,f,'c')
plt.plot(xx,yy,"--")
plt.annotate('start',xy=(xx[0],yy[0]))
plt.quiver(xx[0],yy[0],0,-1,color='c')
plt.annotate('end',xy=(xx[-1],yy[-1]))
plt.xlabel("number")
plt.ylabel("price")
plt.show()