import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #绘制3D坐标的函数
import numpy as np
import random
Q0=random.random()
Q1=random.random()
Q2=random.random()
a=0.01
#e=2.718
#E=float(10*e^(-4))
E=float(0.18)
x=np.array([[2104,3],
[1600,3],
[2400,3],
[1416,2],
[3000,4]])
t=np.array([[400],
[330],
[269],
[232],
[540]])
e0=1
e1=1
e2=1
h=0
for i in range(0,5):
if e0<=E and e1<=E and e2<=E:
Q0=Q0-a*e0
Q1=Q1-a*e1
Q2=Q2-a*e2
else:
h=Q0+Q1*x[i,0]+Q2*x[i,1]
e0=h-t[i]
e1=((h-t[i])+e0)*x[i,0]
ey=h-t[i]+e0
e2=((h-t[i])+e0+ey)*x[i,1]
print(Q0,Q1,Q2)
fig1=plt.figure()#创建一个绘图对象
ax=Axes3D(fig1)#用这个绘图对象创建一个Axes对象(有3D坐标)
X1,X2=np.mgrid[0:10000:500j, 0:50:500j] # 从0到10000生成500个房间平米数X1,从0到50生成500个房间数X2
h=Q0+(Q1*X1+Q2*X2)
plt.title("tu xiang") #图像标题
ax.plot_surface(X1, X2, h , rstride=1, cstride=1, cmap=plt.cm.coolwarm, alpha=0.5) #用取样点(x,y,z)去构建曲面
ax.set_xlabel('X1 da xiao', color='r')
ax.set_ylabel('X2 fang jian shu', color='g')
ax.set_zlabel('h jia ge', color='b')
plt.show()#显示模块中的所有绘图对象
Q0,Q1,Q2运算结果:
0.4384509805264243 0.2597911172922398 0.8375446236391644
生成图像: