使用Python SciPy计算Rodrigues公式P_n(x)(Legendre多项式)

2024-06-17 15:31:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用Python来计算罗德里格斯公式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提供了一种标准的方法来实现这一点吗?在

编辑:我希望输入参数是数组,而不仅仅是单个输入值。在


Tags: 模块函数org功能httpdocs参数wiki
1条回答
网友
1楼 · 发布于 2024-06-17 15:31:22

如果您只需要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在某种意义上是罗德里格斯公式的“输出”:它是一个所需阶数的多项式,它可以在给定的值x下求值。如果您想要一个接受nx的函数,可以使用^{}

^{pr2}$

the docs中所述,对于大的ish 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])

相关问题 更多 >