【发布时间】:2022-03-16 19:31:54
【问题描述】:
我想在 3D 中绘制一个这样定义的函数
from scipy.integrate import quad
from scipy.special import jn
integrand = lambda x, r: np.exp(-x**2) * jn(0, r*x) * x
intensity = lambda r: quad(lambda x: integrand(x, r), 0, 5)
这样
intensity(1)
给我 r = 1 的值。
我想在 3D 中将其绘制为极坐标中半径的函数,因此我定义了一个这样的网格:
rho = np.linspace(0, 1.25, 50)
p = np.linspace(0, 2*np.pi, 50)
R, P = np.meshgrid(rho, p)
Z = intensity(R)
然后通过更改坐标以 3D 笛卡尔坐标绘制它:
X, Y = R*np.cos(P), R*np.sin(P)
surf = ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)
但是,当我将intensity 作为不是单个数字而是数组的参数时,它会抱怨
quadpack.error: 提供的函数没有返回有效的浮点数。
如何将 lambda 函数与网格网格相结合?
【问题讨论】: