Получение ошибки «невозможно назначить функцию для вызова» при вычислении производных с SymPy - PullRequest
0 голосов
/ 10 ноября 2018

Этот код является производным кодом для расширения Тейлора длиной 5 производных. Таким образом, ds(i) должен заменить свои переменные с нулевым значением на новые значения x (производные значения). Я получаю сообщение об ошибке "не могу назначить функцию для вызова"

def derivatives(f, x, a, n):
    f = f(x)
    x = var
    a = 1.0
    n = 5
    ds = np.zeros(n)
    exp = f(x)
    for i in range(n):
        exp = sp.diff(exp,x)
        ds(i) = exp.replace(x, a)
    return ds

1 Ответ

0 голосов
/ 10 ноября 2018

Вы, вероятно, имели в виду ds[i], а не ds(i). Квадратные скобки для индексации и круглые скобки для вызовов функций. Тем не менее, у кода есть другие проблемы, от неопределенного var до использования массива NumPy (?) Для хранения объектов SymPy. В общем, желательно иметь в виду, что SymPy работает в основном с выражениями , а не с функциями . Выражения не «принимают аргументы», они не похожи на вызываемые функции в Python.

И все это не нужно, поскольку SymPy самостоятельно вычисляет n-ю производную. Пример, 5-я производная exp (2 * x) в 0:

x = sp.symbols('x')
f = sp.exp(2*x)     # an expression, not a function
n = 5
a = 0
print(f.diff(x, n).subs(x, a))    # take derivative n times, then plug a for x

печатает 32. Или, если вы хотите расширение Тейлора вплоть до x**n:

print(f.series(x, a, n + 1))

отпечатки 1 + 2*x + 2*x**2 + 4*x**3/3 + 2*x**4/3 + 4*x**5/15 + O(x**6).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...