谁能帮我为等式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()


但是我得到了错误的情节。

python - (x-y)^ 2的matplotlib表面图-LMLPHP

最佳答案

要绘制的数组Z应该是2D数组,就像XY是2D数组一样,这样对于XY的每一对值,您在。因此,将那些数组ZX用作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表面图-LMLPHP

关于python - (x-y)^ 2的matplotlib表面图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43010068/

10-12 23:05