2016-10-23 5 views
1

코드에서 sin (g (t)) (g는 연속 함수 임)의 표현식을 g (t)로 대체해야합니다 (꽉 조이는 각도 근사치 임). 이Sympy를 사용하여 패턴을 대체하는 방법

-29.4*sin(2*t) - 19.6*sin(f(t)) + 4.0*Derivative(f(t), t)**2 

내가 모두 죄 (F (t))과 죄 (2 * t)를 대체해야 내 코드에서 무엇을 얻을의 샘플 다만 그들 중 하나 죄 (2 * t)의 변화이다 , [sin (f (t))는 항상 동일하다]. 죄 안에있는 것을 위해 여분의 변수를 추가하는 것보다 더 간단한 방법이 있습니까?

답변

3

당신이하려는 일이 이것입니까?

import sympy as sp 

t = sp.symbols('t') 
f = sp.Function('f') 

expr_v1 = -29.4*sp.sin(2*t) - 19.6*sp.sin(f(t)) + 4.0*sp.Derivative(f(t), t)**2 
print('expr_v1 = ', expr_v1) 

expr_v2 = expr_v1.replace(sp.sin, lambda *args: args[0]) 
print('expr_v2 = ', expr_v2) 
expr_v1 = -29.4*sin(2*t) - 19.6*sin(f(t)) + 4.0*Derivative(f(t),t)**2 
expr_v2 = -58.8*t - 19.6*f(t) + 4.0*Derivative(f(t), t)**2 
관련 문제