2016-08-07 3 views
0

У меня уже есть код для генерации весов и абсцисс для квадратурного правила Гаусса-Лежандра для интеграции, но мне трудно использовать его для двойных интегралов.Численное интегрирование двойного интеграла с использованием квадратуры Гаусса-Лежандра

Для создания весов и абсцисс я использую следующие обозначения: [w, x] = leg (x1, x2, n), где w - веса, x - абсциссы, x1 - нижний предел интеграла, x2 - верхний предел, а n - число квадратурных точек.

Я просто приведу простой пример, чтобы он мог помочь мне понять идею. Предположим, что у меня есть следующий интеграл $ \ int_0^1 \ int_0^1 x^2 y^2 dx dy $ Как это реализовать?

Заранее спасибо.

ответ

0

Двойные интегралы являются интегралами по прямоугольной области. Их можно либо обработать выделенными прямоугольными схемами, либо - то, что вы пытаетесь сделать - с схемами продуктов от одномерной квадратуры. Вы могли бы даже смешивать и комбинировать две разные схемы здесь.

Точки схем продукта является 1D точки в декартовой продукте, то есть, для каждого x_i из схемы 1 и y_j из схемы 2, (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)) 
    )