我有一个结论是这样的:
from sympy import *
Vin,Vc,C1,Cs,R1,Rs,t=symbols(r'V_{in},V_{C},C_1,C_S,R_1,R_S,t')
k1=Symbol('k_1')
eqVc=Eq(Vc(t),(Rs*(exp(t*(R1+Rs)/(R1*Rs*(C1+Cs))) - 1)*Heaviside(t) +
k1*(R1+Rs))*exp(-t*(R1+Rs)/(R1*Rs*(C1+Cs)))/(R1+Rs))
表达式eqVc
如下所示:
我知道这个函数的形式是:
我的目标是获得Vcinit、Vcfinal和tau的值,但特别是tau。在
有没有办法让Sympy提取这些值?cse()并不是我想要的那样——我可以让它代替C1+Cs,例如通过使用cse([C1+Cs,eqVc]),它确实认识到e的指数是一个公共子表达式,但它倾向于在子表达式中包含t。在
一种简单的方法是求解参数,这些参数将导致表达式在若干时间点上相等。鉴于表格实际上是相同的,这将很好地发挥作用:
^{1}$我得到的答案是
^{pr2}$由于变量的定义方式,
log(exp())
没有被简化。将所有内容都定义为实的(V_Ci, tau, V_Cf = symbols('V_Ci, tau, V_Cf', real=True)
以及在代码中进行类似的修改)可以简化解决方案相关问题 更多 >
编程相关推荐