我在Sympy尝试使用简化方程式的标准工程方法,你知道一个变量比另一个大得多或小。例如,给出方程式
C1*R2*s+C1*R2+R1+R2
并且知道这一点
R1 >> R2
等式可以简化为
C1*R2*s+C1*R2+R1
。
你通常手工做的是除以R1,给出
C1*R2*s/R1+C1*R2/R1+1+R2/R1
然后你可以在任何地方看到R2 / R1 你可以将它设置为零,然后再乘以R1。我无法想象如何在Sympy中做到这一点。显然,分割步骤很容易,但我无法弄清楚如何进行搜索和替换步骤 - 只需使用subs给你
R1
这不是正确的答案。因素,扩展,收集,似乎没有让我到任何地方。
答案 0 :(得分:2)
使用replace
代替subs
可以在这里工作。
C1, C2, R1, R2 = sp.symbols('C1, C2, R1, R2', real = True)
s = sp.symbols('s')
expr = C1*R2*s+C1*R2+R1+R2
print('original expression:', expr)
expr_approx = (R1 * ((expr/R1).expand().replace(R2/R1,0))).simplify()
print('approximate expression:', expr_approx)
original expression: C1*R2*s + C1*R2 + R1 + R2 approximate expression: C1*R2*s + C1*R2 + R1