关于python:勒让德多项式导数

Legendre polynomials derivative

我用这段代码来创建勒让德多项式,从1阶到7阶。

1
2
3
4
5
6
7
8
9
10
11
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来做这个,但是描述得很糟糕,我坚持这个问题。

代码如下:

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

更新:感谢@james c。

我采纳了他的建议:

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

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

我得到的是这样的东西:

1
2
3
4
5
6
7
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.polynomy.legendre.legendre.derivi.html numpy.polynomy.legendre.legendre.derival.


它看起来类似于以下内容:

python未绑定方法类型错误

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

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

刚刚测试过:

1
2
3
4
5
6
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)