Производная многочленов Лежандра - PullRequest
0 голосов
/ 24 октября 2018

Я использую этот код для создания многочленов легенды от 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

1 Ответ

0 голосов
/ 24 октября 2018

Это выглядит примерно так:

Несвязанный метод Python 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)
...