勒让德多项式导数

Legendre polynomials derivative

我使用此代码创建从 1 阶到 7 阶的勒让德多项式。

N = 4000
xvals = np.linspace(-1, 1, N)

def Legendre(x, n):
    leg = legendre(n)
    P_n = leg(x)
    return P_n

for i in range(1, 8):
    func = Legendre(xvals, i)
    plt.plot(xvals, func, '--', label="n =" + str(i))

它运行良好,但现在我正在努力从这些函数中求导。 我决定改用 numpy 来做这件事,但它的描述很差,我坚持这个问题。

代码如下:

for i in range(1, 8):
    func = np.polynomial.legendre.Legendre.deriv(i)
    print func

更新:感谢@James C.

我采纳了他的建议:

le = np.polynomial.legendre.Legendre((1,2,3,4,5,6,7))

for i in range(1,8):
    print le.deriv(i)

我得到的是这样的:

leg([12. 45. 50. 84. 54. 77.])
leg([206. 312. 805. 378. 693.])
leg([ 690. 4494. 1890. 4851.])
leg([ 9345.  5670. 24255.])
leg([ 5670. 72765.])
leg([72765.])
leg([0.])

不幸的是我不是数学家,但这是正确的结果吗?我需要方程的那些导数,此时我不知道如何将这些数组放入。

图书馆: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.polynomial.legendre.Legendre.deriv.html#numpy.polynomial.legendre.Legendre.deriv

看起来类似于以下内容:

Python Unbound Method TypeError

您首先需要 class 的一个实例:

le = np.polynomial.legendre.Legendre((1,2,3,4,5))
le.deriv(4)

刚刚测试:

import numpy as np


for i in range(1, 8):
    le = np.polynomial.legendre.Legendre((1,2,3,4,5,6,7,8,9))
    print le.deriv(i)