如何使用SymPy替换模式

ziv*_*ivo 2 python symbolic-math sympy

在我的代码中,我需要将sin(g(t))(g作为连续函数)的所有表达式替换为g(t)(它是紧密角度近似).这是我从代码中获得的一个示例:

-29.4*sin(2*t) - 19.6*sin(f(t)) + 4.0*Derivative(f(t), t)**2
Run Code Online (Sandbox Code Playgroud)

我需要替换这两个sin(f(t))sin(2*t).不只是其中之一和sin(2*t)变化,(sin(f(t))总是一样的).有没有比为其中的内部添加额外变量更简单的方法sin

Ste*_*ios 5

这是你想要做的吗?

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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)