numpy 如何在网格上应用积分函数

vbkedwbf  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(106)

为了简单起见,假设我有一个函数的形式:
x1c 0d1x的数据
我想在x-y网格上计算这个函数:

x = np.linspace(0,1,50)
y = np.linspace(0,1,50)
xx, yy = np.meshgrid(x, y)

字符串
其中xx被用作积分的上限(x_2),但是我不确定最好的方法。我想我正在寻找合适的积分函数来允许我这样做。我知道这个例子可以很容易地解析求解,然后在整个meshgrid上执行,但我的真实的例子更复杂,我想学习适当的数值方法。2我真的很感激任何建议。3提前感谢!
我尝试使用scipy.integrate中的quad函数,但这只允许我计算一个定积分,而不是对整个meshgrid进行积分。

0wi1tuuw

0wi1tuuw1#

我能够弄清楚它!使用@np.vectorize我可以启动一个函数,接受meshgrid作为输入:

# vectorize, to implement function over xy meshgrid
@np.vectorize

# define function
def z(x,y):
    
    # define function to be integrated
    def integrand(x):
         return x**3
        
    # integrate function
    ans,error = quad(integrand,0,x)

    # calculate full function, with integrated terms
    z = ans + y
    
    # return solution
    return(G)

# define meshgrid
x = np.linspace(0,1,50)
y = np.linspace(0,1,50)

XX, YY = np.meshgrid(T,P)

# implement function across meshgrid
z_out = z(XX,YY)

字符串
谢谢你,谢谢

相关问题