我有一个二维函数 $f(x,y)=\exp(y-x)$。我想使用 NumPy trapz 计算二重积分 $\int_{0}^{10}\int_{0}^{10}f(x,y) dx dy$ 。经过一番阅读后,他们说我应该重复 trapz 两次,但它不起作用。我尝试过以下方法
import numpy as np
def distFunc(x,y):
f = np.exp(-x+y)
return f
# Values in x to evaluate the integral.
x = np.linspace(.1, 10, 100)
y = np.linspace(.1, 10, 100)
list1=distFunc(x,y)
int_exp2d = np.trapz(np.trapz(list1, y, axis=0), x, axis=0)
代码总是报错
IndexError: list assignment index out of range
我不知道如何解决这个问题以便代码可以工作。我认为内部 trapz 是首先沿 y 积分,然后我们以第二个沿 x 积分结束。谢谢。
你需要转换x
and y
到 2D 数组,可以在 numpy 中方便地完成np.meshgrid
。这样,当你打电话时distfunc
它将返回一个二维数组,该数组可以先沿一个轴积分,然后再沿另一个轴积分。正如您现在的代码所示,您将一维列表传递给第一个积分(这很好),然后第二个积分接收标量值。
import numpy as np
def distFunc(x,y):
f = np.exp(-x+y)
return f
# Values in x to evaluate the integral.
x = np.linspace(.1, 10, 100)
y = np.linspace(.1, 10, 100)
X, Y = np.meshgrid(x, y)
list1=distFunc(X, Y)
int_exp2d = np.trapz(np.trapz(list1, y, axis=0), x, axis=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)