在Python中获取勒让德多项式的导数

时间:2017-02-10 06:52:45

标签: python numpy scipy numerical-methods

我有一个引力势的表达式(来自here的方程式15),并计算一个我需要评估作为局部梯度的引力的轨道,对我来说,这意味着评估它的导数Legendre polynomials P2,P4和P6单值达数万次。

enter image description here

我可以使用this question中的表达式来计算它,但是我想知道是否有办法向python询问衍生物,而这些衍生物并没有明确地让我将衍生物评估为有限差分。

我无法在SciPy中找到任何自动执行此操作的内容。在library(data.table) setDT(IData)[, as.list(quantile(numbers, seq(.1, 1, .1))), by = let] 中有一个//***The simpliest solution is:*** dialog.show(); //Only after .show() was called dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor); dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor); 方法,但我没有使用多项式类的经验。

评估低阶勒让德多项式的一阶导数的最快方法是什么,一次一个值适合数值积分?

2 个答案:

答案 0 :(得分:2)

如果您只需要P2P4P6的衍生物,那么手动计算然后记下代码就足够了......例如< / p>

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

因此:

P2' = .75 * x

你可以在python中写下:

def P2_deriv(x):
    return .75 * x

事情并没有比这快得多;-)。如果你需要任意的legendre多项式,那么...事情开始变得有点棘手...

答案 1 :(得分:2)

我知道这是一个古老的问题,但是对于如何使用numpy / scipy计算导数仍然没有答案。

这是仅适用于numpy和scipy的方式:

build

上面接受的答案还包含一个小错误(我无法发表评论,也许有人可以编辑答案): 派生词应为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)