SciPy有一组函数special.roots_*
,它们返回相应正交的根和权重的数值。
如何在SymPy'符号'中获得相同的效果。形成的?
答案 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
,这给出了