簡體   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