欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转Python与经济学:轻松探索无差异曲线与效用函数的可视化世界

最编程 2024-02-05 18:49:20
...

Python+经济学:无差异曲线与效用函数可视化

前言:

利用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()

可视化效果: