Replace a function by another function with SymPy, for example a partial derivative

41 Views Asked by At

I am trying to obtain the mixed derivative formula for fun with SymPy.

enter image description here

I am looking for a better replacement for a function f by partial derivative of f respect to y.

from sympy import symbols, Symbol, Function, Eq, solve
from sympy import Derivative as D

x, y = symbols("x y")
dx = Symbol(r"\Delta x")
dy = Symbol(r"\Delta y")
f = Function("f")

eq1 = Eq(f(x + dx, y), f(x + dx, y).series(x=dx, x0=0, n=2).removeO().simplify())
expr1 = solve(eq1, D(f(x, y), x))[0]
Eq1 = Eq(D(f(x, y), x), expr1)

Eq1.rhs.subs({f(x, y): D(f(x, y), y), f(x + dx, y): D(f(x + dx, y), y)})

enter image description here

In the cell [11], I would like replace f by other function like f_y and works fine, no matter what argument have the function to be replaced. For instance, if f --> f**2, then we will have any expression of f to square.

1

There are 1 best solutions below

0
Timo Stienstra On BEST ANSWER

You may want to look into using Wild in pattern matching. Here is some code to get you started:

from sympy import symbols, Symbol, Function, Eq, solve, Wild
from sympy import Derivative as D

x, y = symbols("x y")
dx = Symbol(r"\Delta x")
dy = Symbol(r"\Delta y")
f = Function("f")

eq1 = Eq(f(x + dx, y), f(x + dx, y).series(x=dx, x0=0, n=2).removeO().simplify())
expr1 = solve(eq1, D(f(x, y), x))[0]
Eq1 = Eq(D(f(x, y), x), expr1)

arg1, arg2 = Wild("arg1"), Wild("arg2")
Eq1.rhs.replace(f(arg1, arg2), D(f(arg1, arg2), arg2))

For more information I always refer to the sympy.core.basic.Basic API.