谁能帮我为等式f(x,y) = (x-y)^2
绘制3D表面图
Z轴应表示函数f(x,y)
我有以下功能:
def fnc(X):
return (X[0] - X[1]) ** 2
这里X是一个numpy数组,第一个参数为X,第二个参数为Y。
我特别需要它是这种方式。因此,请不要建议我更改签名。 ;)
我从this解决方案尝试了以下方法:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc1([np.linspace(-5,5,100) , np.linspace(-6,6,100)])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
但是我得到了错误的情节。
最佳答案
要绘制的数组Z
应该是2D数组,就像X
和Y
是2D数组一样,这样对于X
和Y
的每一对值,您在。因此,将那些数组Z
和X
用作Y
函数fnc
的输入是有意义的
完整的代码如下所示
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
def fnc(X):
return (X[0] - X[1]) ** 2
fig = plt.figure()
ax = fig.add_subplot(111, projection=Axes3D.name)
x = y = np.linspace(-5,5,100)
X, Y = np.meshgrid(x, y)
Z = fnc([X,Y])
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.view_init(elev=15, azim=-118)
plt.show()
关于python - (x-y)^ 2的matplotlib表面图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43010068/