[英]Use Python SciPy to compute the Rodrigues formula P_n(x) (Legendre polynomials)
我正在尝试使用Python计算Rodrigues公式P_n(x)。
http://en.wikipedia.org/wiki/Rodrigues%27_formula
也就是说,我想要一个函数,它接受两个输入参数n和x,并返回此公式的输出。
但是,我认为SciPy还没有此功能。 SpiPy确实提供了Legendre模块:
http://docs.scipy.org/doc/numpy/reference/routines.polynomials.legendre.html
我认为这些都不是罗德里格斯公式。 我错了吗?
SciPy提供这样做的标准方法吗?
编辑:我希望输入参数是数组,而不仅仅是单个输入值。
如果只需要P_n(x),则可以使用scipy.special.legendre
创建一个表示P_n多项式的合适对象,并使用x
的值对其进行调用:
In [1]: from scipy.special import legendre
In [2]: n = 3
In [3]: Pn = legendre(n)
In [4]: Pn(2.5)
Out[4]: 35.3125 # P_3(2.5)
从某种意义上说,对象Pn
是Rodrigues公式的“输出”:它是所需阶数的多项式,可以按提供的x
值对其求值。 如果要使用n
和x
的单个函数,可以使用eval_legendre
:
In [5]: from scipy.special import eval_legendre
In [6]: eval_legendre(3, 2.5)
Out[6]: 35.3125
如文档中所述 ,这是推荐的方法,适用于较大的n
(例如n > 20
),而不是创建具有所有系数的多项式对象,这些系数也不能处理舍入误差和数值稳定性。
编辑:两种方法都可以使用数组(至少对于x
参数而言)。 例如:
In [7]: x = np.array([0, 1, 2, 5, 10])
In [8]: Pn(x)
Out[8]:
array([ 0.00000000e+00, 1.00000000e+00, 1.70000000e+01,
3.05000000e+02, 2.48500000e+03])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.