Re: [问题] 如何求解方程式"符号运算"与"简化"

楼主: jurian0101 (Hysterisis)   2012-12-22 02:42:05
直接贴到Mathematica读
(*成功的重点1,符号必须完全一致。 有[t]的变量全部要有[t]。尤其是D[f[t],t] 处,
若f不明确指定[t]会 直接Evaluate得出0喔
*)
line1=L*D[i[L][t],t]==V[g][t]-r[L]*i[i][t]-v[0][t];
line2=i[i][t]==(L*D[i[L][t],t])/R[S]+i[L][t];
line3=v[0][t]==c*r[c]*D[v[c][t],t]+v[c];
ANS1=Eliminate[{line1,line2,line3},{i[i][t],v[0][t]}]
ANS2=Solve[ANS1,{D[i[L][t],t]}]
(*用Eliminate消掉 (2)(3)式的变量,我觉得这边调整成D[i[L][t],t]在前太麻烦也不必
要,索性 用Solve的方式*)
line4=L*D[i[L][t],t]==-(((r[c]*R[S])*(c*D[v[c][t],t]))/(r[L]+R[S]))+
(R[S]*V[g][t])/(r[L]+R[S])-(v[c]*R[S])/(r[L]+R[S])+
(i[L][t]*((-r[L])*R[S]))/(r[L]+R[S]);
ANS3=Solve[line4,D[i[L][t],t]]
SameQ[Simplify@ANS2,Simplify@ANS3]
(*这边是要证明直接输入的 (4)式与消去法得到的等价,Simplify不可少*)
line5=c D[v[c][t],t]==R[L]/(r[c]+R[L])(1/R[S]*L*D[i[L][t],t]+i[L][t])
-v[c]/(r[c]+R[L])
(*(5)式兼DeBug单元,前面提过变量的输入要完全一致,问题除了用眼睛很累的金金看
有没有办法很快核对?有,就是利用Variables函数将你打的1~5式中的变量名 一览比较,
一定要完全重合啊
*)
Sort@Flatten[Variables/@{line1,line2,line3,line4,line5}[[All,2]]]
(*这边偷懒不由 (4)式做,而是 (1)(2)(3)(5)一次做消去,结果相同*)
ANS4=Eliminate[{line1,line2,line3,line5},{i[i][t],v[0][t],D[v[c][t],t]}]
(*不同的是这次硬是要把它转成和你写的一致*)
ANS5=L D[i[L][t],t]==L (D[i[L][t],t]/.Solve[ANS4,D[i[L][t],t]][[1]])
(*利用Collect可以把混乱的表达式按照需求拆开*)
ANS6=Collect[ANS5,{D[i[L][t],t],i[L][t],v[c],V[g][t]}]
(*最后利用Coefficient可以取出系数,ANS6[[2]]的[[2]]不可少*)
ANS7=Coefficient[ANS6[[2]],#]&/@{i[L][t],v[c],V[g][t]}
※ 编辑: jurian0101 来自: 140.112.213.88 (12/22 03:29)
作者: s0310388 (没人要兄弟)   2012-02-22 14:58:00
谢谢jurian0101大大,我先试试看,光是看到这些程式码我快要哭出来了,感谢,有疑问再请教!!
楼主: jurian0101 (Hysterisis)   2012-02-22 15:25:00
我都不敢用上下标,贴BBS再贴回ntoebook会崩坏掉
作者: s0310388 (没人要兄弟)   2012-02-22 20:59:00
嗯,因为太多Ctrl+-的关系吧,再看一次,我又感动一次

Links booklink

Contact Us: admin [ a t ] ucptt.com