前言:
利用Python中的3D绘图模块,将微观经济学中的效用函数进行可视化呈现。这里主要针对三种最普通的效用函数:
无差异曲线凸向原点的一般效用函数:
无差异曲线为向右下方倾斜直线的完全替代品效用函数:
无差异曲线为直角折线的完全互补品效用函数:
同一条无差异曲线上的点所代表的产品组合拥有相同的效用水平,这与地理中等高线的概念如出一辙,因此可以运用contour来模拟无差异曲线的绘制。
代码实现:
import matplotlib.pyplot as plt import numpy as np fig = plt.figure(1) #定义新的三维坐标轴,用以绘制效用曲面 ax1 = plt.axes(projection='3d') #定义三维数据与效用函数参数 n =100 a = 3 b = 2 x = np.linspace(0,30,n) y = np.linspace(0,30,n) X, Y = np.meshgrid(x,y) #一般效用曲面 Z = np.sqrt(X*Y) #完全替代品效用曲面 # Z = a*X+b*Y #完全互补品效用曲面 # Z = np.minimum(a*X,b*Y) #曲面图 Utility = ax1.plot_surface(X,Y,Z,cmap='coolwarm',alpha=0.8) #叠加等高(无差异)线 ax1.contour(X,Y,Z,zdir='z',offset=0,cmap='rainbow') #设置坐标轴标签 ax1.set_xlabel('Good X') ax1.set_ylabel('Good Y') ax1.set_zlabel('Utility') #图例色条 fig.colorbar(Utility, shrink=0.5, aspect=20) # plt.savefig('Utility Surface.png') #第二个图单独绘制等高(无差异)线 fig = plt.figure(2) ax2 = plt.subplot(111) Indiff = ax2.contour(X,Y,Z,cmap='rainbow') ax2.set_xlabel('Good X') ax2.set_ylabel('Good Y') #显示等高线(效用)值 plt.clabel(Indiff,inline=True,fontsize=12) # plt.savefig('Indifference Curve.png') plt.show()
可视化效果:
一般效用函数曲面
一般无差异曲线
完全替代品效用曲面
完全替代品无差异曲线
完全互补品效用曲面
完全互补品无差异曲线
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)