Я пытаюсь использовать sympy
, чтобы начать с PDE, манипулировать им символически, чтобы получить формулировку конечного элемента, а затем применить генерацию кода, чтобы получить фрагмент кода для применения результатов в приложении.
Как таковой, я хочу начать с производных объектов, но в какой-то момент заменим простую функцию вместо этих производных, так как базовые функции и производные этих базовых функций будут храниться в коде.В простых ситуациях это работает:
>>> from sympy import *
>>> init_printing()
>>> i = Idx('i')
>>> x = Symbol('x')
>>> phi = Function('phi')(i,x)
>>> expr = Derivative(phi,x) + phi
>>> expr
d
φ(i, x) + ──(φ(i, x))
dx
>>> phi_x = Function('phi_x')(i,x)
>>> expr.subs(Derivative(phi,x), phi_x)
φ(i, x) + φₓ(i, x)
Но если производные появляются внутри суммирования, замена завершается неудачно:
>>> N = Symbol('N', integer=True)
>>> expr = summation(Derivative(phi,x) + phi, (i,0,N-1))
>>> expr
N - 1
____
╲
╲ ⎛ d ⎞
╲ ⎜φ(i, x) + ──(φ(i, x))⎟
╱ ⎝ dx ⎠
╱
╱
‾‾‾‾
i = 0
>>> expr.subs(Derivative(phi,x), phi_x)
N - 1
____
╲
╲ ⎛ d ⎞
╲ ⎜φ(i, x) + ──(φ(i, x))⎟
╱ ⎝ dx ⎠
╱
╱
‾‾‾‾
i = 0
У кого-нибудь есть идея, почему это может быть, или чтоОбходной путь может быть?ТИА!