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

import matplotlib.pyplot as plt 
import numpy as np
fig = plt.figure(1) #定义新的三维坐标轴,用以绘制效用曲面
ax1 = plt.axes(projection='3d')
#定义三维数据与效用函数参数
n =100 
a = 1
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)
#最大效用函数
#Z = np.maximum(a*X,b*Y)
#不完全互补品
Z = np.minimum(b*X-a*Y,b*Y-a*X)
#曲面图 
Utility = ax1.plot_surface(X,Y,Z,cmap='coolwarm',alpha=0.8)
#添加题目
plt.title('U=min(2x-y,2y-x)')
#叠加等高(无差异)线 
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.title('U=min(2x-y,2y-x)')
#显示等高线(效用)值 
plt.clabel(Indiff,inline=True,fontsize=12)
plt.savefig('Indifference Curve.png')
plt.show()


代码中给出了几种效用函数,可以自己调参或更改效用函数。

以下是以U=min(2x-y,2y-x)为效用函数构造出来的图形,此外还可以根据需要调整成不同的效用函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值