2017-02-26 26 views
1

我需要找到所有用戶所做的功能(之類的東西對用戶函數導數)與位置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:我想查找和替換d/dt(theta(t))theta_t的符號omega

dydt = y.diff(t) 

theta。例如代後,我想dydt是:

dydt_new = cos(theta)*omega 

所以現在我可以用這最後一個表達式工作數值,例如,與lambdify

回答

1

您可以像其他任何東西一樣替代衍生物。在實際功能之前,您必須小心謹慎地更換導數。以下適用於我:

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 

請注意,如果交換替換順序,這將失敗。

相關問題