Python 在表达式树中查找和替换函数
我需要在SymPy表达式树中找到所有用户创建的函数(以及用户函数的导数),并将其位置替换为标准的用户定义符号Python 在表达式树中查找和替换函数,python,sympy,Python,Sympy,我需要在SymPy表达式树中找到所有用户创建的函数(以及用户函数的导数),并将其位置替换为标准的用户定义符号 from sympy import * t=symbols('t') 现在创建用户自制的SymPy函数: theta_t = Function(r'\theta')(t) 此外,我还创建了要用以下符号替换的符号theta\t: theta = Symbol(r'\theta') 我想使用的表达式是: y = sin(theta_t) 这是它对t的导数: dydt = y.diff
from sympy import *
t=symbols('t')
现在创建用户自制的SymPy函数:
theta_t = Function(r'\theta')(t)
此外,我还创建了要用以下符号替换的符号theta\t
:
theta = Symbol(r'\theta')
我想使用的表达式是:
y = sin(theta_t)
这是它对t
的导数:
dydt = y.diff(t)
我想用符号omega
,theta
查找并替换d/dt(theta(t))
和theta_t
。例如,在替换后,我希望dydt
为:
dydt_new = cos(theta)*omega
现在我可以用数字来处理最后一个表达式,例如,用
lambdify
你可以像其他任何东西一样替换导数。在实际函数之前,只需小心替换导数即可。以下是我的作品:
from sympy import *
t = symbols('t')
theta_t = Function('theta')(t)
theta = Symbol('theta')
omega = Symbol('omega')
y = sin(theta_t)
dydt = y.diff(t)
dydt_new = dydt.subs([
( diff(theta_t,t), omega ),
( theta_t, theta ),
])
assert dydt_new==cos(theta)*omega
请注意,如果交换替换顺序,该操作将失败