最近在上课的时候,发现一个很难化简的方程,如下:
从左化简到右,虽然能够用手写,但是太麻烦了,能不能用Maltab呢?
当然,根据高斯消元,首先得从方程组中最下面的方程化起,然后再回代到第一个方程,即可写出 dvc 和 diL 的表达式。
首先在matlab中用 syms 定义所有符号变量:
syms C iL rc R vc dvc Vin diL L rL
之后,再定义两个方程组的表达式:
>> f1 = -C*dvc + iL - vc/R -C*rc*dvc/R
f1 =
iL - C*dvc - vc/R - (C*dvc*rc)/R
>> f2 = -L*diL + Vin - rL*iL -vc - rc*C*dvc
f2 =
Vin - vc - L*diL - iL*rL - C*dvc*rc
之后,为了求解 dvc,咱们可用 solve :
>> ans1 = solve(f1,dvc)
ans1 =
-(vc - R*iL)/(C*rc + C*R)
之后,将ans1带入 dvc中,从而用 solve 求解 f1。 带入可以用 subs 函数。
>> ans2 = solve(subs(f2,dvc,ans1),diL)
ans2 =
(Vin - vc - iL*rL + (C*rc*(vc - R*iL))/(C*rc + C*R))/L
之后,再用 pretty 显示:
>> pretty(collect(ans1))
/ 1