Как использовать SymPy для замены шаблона

#python #sympy #symbolic-math

#python #sympy #символьный-математический

Вопрос:

В моем коде мне нужно заменить ВСЕ выражения из sin(g(t)) ( g являющиеся непрерывной функцией) на g(t) (это приближение с ограниченным углом наклона). Это пример того, что я получаю из своего кода:

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

Мне нужно заменить оба sin(f(t)) и sin(2*t) . Не только один из них и sin(2*t) меняется, ( sin(f(t)) всегда один и тот же). Есть ли более простой способ, чем добавление дополнительной переменной для того, что находится внутри sin или ее там нет?

Ответ №1:

Это то, что вы пытаетесь сделать?

 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