0

我是编码新手,但我想知道为什么这段代码不起作用。我收到错误消息:“ValueError:参数 Z 必须是二维的。”

有人可以帮助解决我的问题吗?谢谢某人

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d

ax = plt.axes(projection= '3d')

def z_function(x,y):
    return m/(4*np.pi*r**3)*(3*m*r**2-m)
x = np.linspace(-10,10,100)
y = np.linspace(-10,10,100)
r = x**2+y**2
m = 10

X, Y = np.meshgrid(x,y)
Z = z_function(X,Y)

ax.plot_surface(X,Y,Z)
plt.show()
4

1 回答 1

0

您的代码失败的原因是您将r生成为一数组。

要将其生成为二维数组,请运行:

r = x**2 + y[:, np.newaxis]**2

您的其余代码都可以。

还要考虑这样的细节:您的z_function既不使用x也不使用y。为什么要包含这些参数?

于 2022-02-18T07:42:45.807 回答