用Gauss-Legendre积分进行双积分的数值积分

时间:2016-08-07 08:42:43

标签: matlab integration numerical-integration

我已经有了一个代码来生成高斯 - 勒让德求积分求积分的权重和横坐标,但是我很难将它用于双积分。

为了生成权重和横坐标,我使用以下符号[w,x] = leg(x1,x2,n)其中w是权重,x是横坐标,x1是积分的下限,x2是上限,n是正交点的数量。

我只是给出一个简单的例子,以便它可以帮助我理解这个想法。假设我有以下整数$ \ int_0 ^ 1 \ int_0 ^ 1 x ^ 2 y ^ 2 dx dy $ 我该如何实现?

提前致谢。

1 个答案:

答案 0 :(得分:0)

双积分是矩形域上的积分。它们既可以采用专用的矩形方案,也可以采用一维正交的产品方案进行处理。你甚至可以在这里混合搭配两种不同的方案。

产品方案的要点是笛卡尔积中的1D点,即方案1中的每个x_i和方案2中的y_j(x_i, y_j)是产品方案。权重是两个相应权重的乘积。

enter image description here

如果你想让你轻松,你可以使用quadpy(我的一个项目):

import numpy
import quadpy

quadpy.quadrilateral.integrate(
    lambda x: numpy.exp(x[0]),
    [[0.0, 0.0], [0.0, 0.0], [0.0, 0.0], [0.0, 0.0]],
    quadpy.quadrilateral.Product(quadpy.line_segment.GaussLegendre(4))
    )