Как получить узлы и веса Гаусса-Лежандра в SymPy? - PullRequest
0 голосов
/ 31 мая 2018

SciPy имеет набор функций special.roots_*, который возвращает числовые значения корней и весов для соответствующих квадратур.

Как получить то же самое в «символической» форме SymPy?

1 Ответ

0 голосов
/ 01 июня 2018

Sympy также имеет функцию, которая вычисляет числовые веса и квадратурные точки для Гаусса-Лежандра согласно документации .Эта функция может давать результаты для любой желаемой точности.Но если вы настаиваете на символических результатах, тогда, пока n в известном целом числе, следующая функция может выполнить работу:

import sympy as sp

sp.init_printing()
x = sp.Symbol('x')

def gauss_legendre(n,x):
    Pnx = sp.legendre(n,x)
    Pp = sp.diff(Pnx,x)
    xi = sp.solve( Pnx, x )
    wi = [ sp.simplify(2/(1 - xj**2)/(Pp.subs(x,xj))**2) for xj in xi ]
    return xi, wi

В качестве теста, для n = 5 это дает

enter image description here

, что соответствует результатам Википедии .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...