使用 SymPy 将一个函数替换为另一个函数,例如偏导数

问题描述 投票:0回答:1

我正在尝试使用 SymPy 获得混合导数公式。

我正在寻找一个更好的函数 f 的替代方法,用 f 对 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)})

在单元格 [11] 中,我想用 f_y 等其他函数替换 f 并且工作正常,无论什么参数都有要替换的函数。例如,如果 f --> f**2,那么我们将得到 f 的任意平方表达式。

python sympy derivative taylor-series
1个回答
0
投票

您可能想研究在模式匹配中使用

Wild
。以下是一些可以帮助您入门的代码:

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 = symbols("arg1:3", cls=Wild)
Eq1.rhs.replace(f(arg1, arg2), D(f(arg1, arg2), arg2))
© www.soinside.com 2019 - 2024. All rights reserved.