gpt4 book ai didi

python-3.x - numpy中的双梯形积分

转载 作者:行者123 更新时间:2023-12-05 02:55:59 26 4
gpt4 key购买 nike

我有一个二维函数 $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 结束。谢谢你。

最佳答案

您需要将 xy 转换为二维数组,这可以在 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)

关于python-3.x - numpy中的双梯形积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60893049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com