繁体   English   中英

使用Python SciPy计算Rodrigues公式P_n(x)(勒让德多项式)

[英]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值对其求值。 如果要使用nx的单个函数,可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM