簡體   English   中英

在 Python 中獲取 Legendre 多項式的導數

[英]Getting the derivatives of Legendre polynomials in Python

我有一個引力勢表達式(此處的方程式 15),要計算軌道,我需要評估引力,即局部梯度,對我來說,這意味着評估勒讓德多項式P2、P4 和P6單值數萬次。

在此處輸入圖像描述

我可以使用這個問題中的表達式來計算它,但我想知道是否有一種方法可以向 python 詢問未明確涉及我將導數評估為有限差分的導數。

我在 SciPy 中找不到任何可以自動執行此操作的東西。 numpy.polynomial.legendre.Legendre中有一個deriv()方法,但我沒有使用多項式類的經驗。

評估低階勒讓德多項式的一階導數的最快方法是什么,一次一個值適合數值積分?

我知道這是一個老問題,但仍然沒有關於如何使用 numpy/scipy 計算導數的答案。

這就是它僅適用於 numpy 和 scipy 的方式:

from scipy.special import legendre
import numpy as np
n = 2               # degree of Legendre polynomial
poly = legendre(n)  # coefficients of n^th degree Legendre polynomial 
polyd= poly.deriv() # coefficients of derivative of n^th degree Legendre Polynomial
x = np.linspace(0,1,10000)  # arbitrary coordinates
evald = np.polyval(polyd,x) # evaluate derivative at desired coordinates(s)

上面接受的答案也包含一個小錯誤(我無法評論但也許有人可以編輯答案):導數應該讀作P2' = 3*x

如果您只需要P2P4P6的導數,那很容易用手計算然后寫下來作為代碼......例如

P2 = .5 * (3 * x^2 - 1)

所以:

P2' = .75 * x

您可以在 python 中將其編寫為:

def P2_deriv(x):
    return .75 * x

事情並沒有比這快很多;-)。 如果你需要任意勒讓德多項式,那么......事情開始變得有點棘手......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM