MATLAB符號數學筆記(一)

Jack•Zhang發表於2020-12-05

問題描述:做考研電路運算電路部分的題目時,列寫了節點電壓方程後運算化簡遇到了困難,想到用matlab的來讓計算變簡單,實現我的思路。待整理的方程是這樣的
( 1 2 + 1 1 + 0.1 s + s 2 ) U 1 ( s ) = 12 s − 1 1 + 0.1 s + 5 ( \frac{1}{2} + \frac{1}{1+0.1s} + \frac{s}{2} ) U_1(s) = \frac{12}{s} - \frac1{1+0.1s} +5 (21+1+0.1s1+2s)U1(s)=s121+0.1s1+5

解得: U 1 ( s ) = 8 s + 6 s + 5 − 4 s + 6 U_1(s) = \frac8s + \frac6{s+5} - \frac4{s+6} U1(s)=s8+s+56s+64
這一步思路簡單,但是硬算很費勁。

趕緊開啟MATLAB,寫了幾行程式碼:

clear
syms s
f1=1/2+1/(1+0.1*s)+s/2
f2=12/s-1/(1+0.1*s)+5
U1(s)=f2/f1
U(s)=simplify(U1(s))
ilaplace(U(s))

使用符號數學首先要定義變數,我們這裡只用到一個變數 s s s ,直接用右邊除以左邊得到下面這樣的式子。

U 1 ( s ) = 12 s − 1 s 10 + 1 + 5 s 2 + 1 s 10 + 1 + 1 2 U_1(s) = \frac{\frac{12}{s}-\frac{1}{\frac{s}{10}+1}+5}{\frac{s}{2}+\frac{1}{\frac{s}{10}+1}+\frac{1}{2}} U1(s)=2s+10s+11+21s1210s+11+5

顯然,這並不是我們想要的結果,於是我們整理了一下得到:

U ( s ) = 10   s 2 + 104   s + 240 s   ( s 2 + 11   s + 30 ) U(s)=\frac{10\,s^2+104\,s+240}{s\,\left(s^2+11\,s+30\right)} U(s)=s(s2+11s+30)10s2+104s+240

對上式求拉普拉斯反變換得到電容上的響應為:

u ( t ) = 6   e − 5   t − 4   e − 6   t + 8 u(t) = 6\,{\mathrm{e}}^{-5\,t}-4\,{\mathrm{e}}^{-6\,t}+8 u(t)=6e5t4e6t+8

在手動演算過程中,我們常用部分分式展開法求拉普拉斯反變換,如何用matlab體現這一過程呢?下面考慮使用部分分式展開法求 u ( t ) u(t) u(t)
用部分分式展開法求解的關鍵是求出留數和極點,在matlab中執行下面的程式碼,得到下面的結果,其中r是留數,p是極點,k是餘項:

num=[10 104 240];
den=[1 11 30 0];
[r,p,k]=residue(num,den)
printsys(num,den,'s');
u(t)=-4/(s+6)+6/(s+5)+8/s
latex(u(t))

r =
-4.0000
6.0000
8.0000
p =
-6.0000
-5.0000
0
k =
[]


我們根據留數和極點的一一對應關係可以寫出,部分分式展開式為:
U ( s ) = − 4 s + 6 + 6 s + 5 + 8 s U(s)=\frac{-4}{s+6}+\frac6{s+5}+\frac8s U(s)=s+64+s+56+s8
把它輸入到matlab中得到下面這個式子,就是整理了一下而已。
U ( s ) = 6 s + 5 − 4 s + 6 + 8 s U(s)=\frac{6}{s+5}-\frac{4}{s+6}+\frac{8}{s} U(s)=s+56s+64+s8
U ( s ) U(s) U(s)求拉普拉斯反變換得:
u ( t ) = 6   e − 5   t − 4   e − 6   t + 8 u(t) = 6\,{\mathrm{e}}^{-5\,t}-4\,{\mathrm{e}}^{-6\,t}+8 u(t)=6e5t4e6t+8
完成。

相關文章