勒让德多项式导数

时间:2018-10-24 10:42:14

标签: python numpy polynomials

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

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

1 个答案:

答案 0 :(得分:1)

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

Python Unbound Method TypeError

您首先需要该类的实例:

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)