我试图在python中绘制一个3d方程,但我遇到了一个类型错误:只有大小为1的数组可以转换为标量。公式为:
$$z=f(x,y)=\cos(x)\cdot\cos(y)\cdot e^{(\frac{-\sqrt{(x^{2}+y^{2})}}{4})}$$
我的代码是:
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d.axes3d import Axes3D
import math
def f(x,y):
return math.cos(x)*math.cos(y)*math.e**(-math.sqrt(x**2 + y**2)/4)
x_5 = np.linspace(start=-2, stop=2, num=200)
y_5 = np.linspace(start=-2, stop=2, num=200)
x_5, y_5 = np.meshgrid(x_5, y_5)
#plotting
fig = plt.figure(figsize=(16, 15))
ax = fig.add_subplot(111, projection="3d")
ax.set_xlabel("X", fontsize=18)
ax.set_ylabel("Y", fontsize=18)
ax.set_zlabel("z=f(X,Y), Cost Function", fontsize=18)
ax.plot_surface(x_5, y_5, f(x_5,y_5), cmap=cm.coolwarm, alpha=0.5)
plt.show()
1条答案
按热度按时间olmpazwi1#
你需要使用numpy函数,因为math库不能处理数组。