[英]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.