如何使用 SymPy 替换模式
How to use SymPy to substitute a pattern
在我的代码中,我需要将 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
或不存在的内容添加额外变量更简单的方法?
这是你想要做的吗?
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
在我的代码中,我需要将 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
或不存在的内容添加额外变量更简单的方法?
这是你想要做的吗?
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