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) |