Дискретизация производных с Sympy

Есть ли способ дискретизировать производную неизвестной функции в sympy? Я пытаюсь добиться следующего:

from sympy import *

>>> f = Function('f')
>>> x = Symbol('x')

>>> dfdx = Derivative(f(x),x).somemethod()
>>> print dfdx
    (f(x+1) - f(x-1)) / 2
>>> eq = lambdify((f,x),dfdx)
>>> w = np.array([1,5,7,9])
>>> print eq(w,1)
    -3

person memecs    schedule 09.09.2013    source источник
comment
Нет уже реализованного метода, но было бы довольно просто сделать это самостоятельно. Вероятно, вам нужно знать о subs и больше ничего. Если вы создадите такой метод, команде sympy может быть интересно получить от вас запрос на включение на github.   -  person Krastanov    schedule 10.09.2013
comment
Я согласен с Крастановым. Общая версия с производными более высокого порядка достаточно сложна, поэтому было бы полезно иметь ее в самой библиотеке.   -  person asmeurer    schedule 10.09.2013
comment
Спасибо обоим за информацию! Я посмотрю на это. Я новичок в sympy, поэтому я думаю, что это будет нетривиально реализовать.   -  person memecs    schedule 10.09.2013


Ответы (1)


Прочитав этот вопрос, я реализовал эту функцию в Sympy, и в настоящее время она доступна в:

моя ветка: https://github.com/bjodah/sympy/tree/finite_difference

sympy master (https://github.com/sympy/sympy) и будет доступен в версии 0.7. 6

Вот пример:

>>> from sympy import symbols, Function, as_finite_diff
>>> x, h = symbols('x h')
>>> f = Function('f')
>>> print(as_finite_diff(f(x).diff(x), h))
-f(-h/2 + x)/h + f(h/2 + x)/h
person Bjoern Dahlgren    schedule 07.04.2014
comment
Прохладный. Я попробую! - person memecs; 08.04.2014