Python+经济学:短期生产函数与图像
写在前面:
本文灵感源于闲逛时的胡思乱想,在初级微观经济学中,边际产量函数与平均产量函数的图形都被简化为先递增后递减的倒U形,那么可以运用该图形与一元二次函数图像的相似之处,先构造出边际产量函数(Marginal Production Function),继而“逆推”出总产量函数(Total Production Function)和平均产量函数(Average Production Function)并用Python绘制相应函数图像。
PS:虽然这种图形用PPT也能简单绘制,但对手残党不太友好。
预备知识:一元二次函数图形性质回顾
一元二次函数 [公式] 的一般图形呈先递减后递增的U型,函数关于 [公式] 对称,而其关于x轴对称的函数为 [公式] ,其关于y轴对称的函数为 [公式]
本例主要讨论短期生产函数,即总产量TotalProduction仅与劳动投入量Labor相关,而资本投入量Kapital只是固定值。边际产量函数MP是本例的重点:
[公式]
通过上式可知,边际产量曲线关于L=50对称,且当L=0时,MP=0,由MP可逆向构造总产量函数与平均产量函数:
[公式]
[公式]
代码实现:
import matplotlib.pyplot as plt
import numpy as np
#生产函数的设定与计算
#设定劳动投入量参数,Labor是一个列表
n = 200
Labor = np.linspace(0,110,n)
#设定边际产量、平均产量和总产量的空列表备用
MP = []
AP = []
TP = []
for i in range(len(Labor)):
#取出Labor中的每个元素赋值给labor,参与后续计算
labor = Labor[i]
#设定资本投入量为固定值50
kapital =50
#从边际产量的表达式开始设定生产函数,MP→AP→TP
mp = -(labor ** 2) + 100 * labor
ap = -(1 / 3) * labor ** 2 + 50 * labor + (kapital / labor)
tp = -(1 / 3) * labor ** 3 + 50 * labor ** 2 + kapital
#将计算结果写入对应产量的列表
TP.append(tp)
MP.append(mp)
AP.append(ap)
#绘图环节
fig = plt.figure(1,figsize=(8,8))
#绘制第一个图,总产量曲线
ax1 = plt.subplot(111)
#下面语句可将所有产量曲线合成显示在一张图中(上下排列)
# ax1 = plt.subplot(211)
ax1.plot(Labor, TP,'r',label='Total Production')
#设定坐标轴名称
ax1.set_xlabel('Labor')
ax1.set_ylabel('Total Production')
#设定绘图区上边框与右边框不可见,且坐标轴交点设定为原点(0,0)
ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)
ax1.spines['bottom'].set_position(('data', 0))
ax1.spines['left'].set_position(('data',0))
#设定图例
plt.legend(['Total Production'])
fig = plt.figure(2,figsize=(8,8))
ax2 = plt.subplot(111)
#下面语句可将所有产量曲线合成显示在一张图中(上下排列)
# ax2 = plt.subplot(212)
ax2.plot(Labor, MP,'b',label='Marginal Production')
ax2.plot(Labor, AP,'g',label='Average Production')
ax2.set_xlabel('Labor')
ax2.set_ylabel('Marginal & Average Production')
ax2.spines['top'].set_visible(False)
ax2.spines['right'].set_visible(False)
ax2.spines['bottom'].set_position(('data', 0))
ax2.spines['left'].set_position(('data',0))
plt.legend(['Marginal Production','Average Production'])
plt.show()
劳动力投入量labor的取值大于100是为了展现边际产量为负数时,总产量递减的状态,运行中触发“divide by zero”报警,但并不影响绘图。
绘图效果:
总产量函数曲线
边际产量函数与平均产量函数曲线
曲线图上下排列合并输出
依葫芦画瓢,绘制成本函数与曲线也是可行的。