如何在SymPy中获得Gauss-Legendre节点和权重?

时间:2018-05-31 15:25:40

标签: python-3.x sympy

SciPy有一组函数special.roots_*,它们返回相应正交的根和权重的数值。

如何在SymPy'符号'中获得相同的效果。形成的?

1 个答案:

答案 0 :(得分:2)

Sympy还具有计算Gauss-Legendre as per the documentation的数字权重和正交点的函数。此功能可以提供任何所需精度的结果。但是如果你坚持使用已知整数中的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

匹配Wikipedia results