mathematica軟件的常用操作2——解微分方程、表達(dá)式、函數(shù)、控制理論相關(guān)操作


解微分方程:
解一元微分方程:
DSolve[y''[x] + a y'[x] + b y[x] == u, y[x], x],其中y''[x] + a y'[x] + b y[x] == u表示待求解的微分方程,y[x]表示因變量,就是待求解的自變量為x的函數(shù),x表示自變量,求出結(jié)果如下:

DSolve[y''[x] + 3 y'[x] + 3 y[x] == 0, y[x], x],輸出結(jié)果如下:

也可以指定原函數(shù)和一階導(dǎo)數(shù)在x=0處的初始值,這樣解出的結(jié)果就沒有c1和c2了,就是由通解變成了具體的一個(gè)解:
DSolve[y''[x] + 3 y'[x] + 3 y[x] == 0 && y[0] == 1 && y'[0] == 1,? y[x], x],其中y[0] == 1 && y'[0] == 1表示指定的初始值,輸出結(jié)果如下:

解微分方程組:
DSolve[{y1'[x] + 2 y1[x] + 2 y2[x] == u1,?y2'[x] + 3 y2[x] + 3 y1[x] == u2}, {y1, y2}, x] // FullSimplify,其中{y1'[x] + 2 y1[x] + 2 y2[x] == u1,?y2'[x] + 3 y2[x] + 3 y1[x] == u2}表示要求解的微分方程組,當(dāng)然也可以用前面那種&&表示,這里用了另一種表示方式;{y1, y2}表示要求解的函數(shù),這里沒有用y1[x]這種形式表示,當(dāng)然也可以用,輸出結(jié)果一樣的,輸出結(jié)果如下:

可以給定初始值,消去上面通式中的c1和c2:
DSolve[{y1'[x] + 2 y1[x] + 2 y2[x] == u1,?y2'[x] + 3 y2[x] + 3 y1[x] == u2, y1[0] == 1, y2[0] == 1}, {y1,?y2}, x] // FullSimplify,其中y1[0] == 1, y2[0] == 1表示給定的初始值,輸出結(jié)果如下:


表達(dá)式操作:
因?yàn)槲移綍r(shí)用到最多的表達(dá)式操作就是對(duì)傳遞函數(shù)進(jìn)行處理,下面就以一個(gè)傳遞函數(shù)為例進(jìn)行說明:
f1 = (ki + kp s)/(ki + s (kp + r + L s));這個(gè)為待處理的傳遞函數(shù)。
Numerator[f1],得到分子,輸出為:ki + kp s。
Denominator[f1],得到分母,輸出為:ki + s (kp + r + L s)。
Collect[Denominator[f1], s],合并分母的s相關(guān)的同類項(xiàng),輸出為:ki + (kp + r) s + L s^2,這樣就可以得到s不同次項(xiàng)的系數(shù)。
Expand[(a + b) (c + d)],展開表達(dá)式,輸出為:a c + b c + a d + b d。
其它使用方法可以去幫助文檔查閱。

函數(shù)的定義與使用:
一元函數(shù)定義:
f11[x_] := x^2 + 1; 其中,:= 是延時(shí)賦值,表示調(diào)用時(shí)再執(zhí)行賦值,表達(dá)式后面加分號(hào)就是不顯示輸出結(jié)果,要注意函數(shù)中括號(hào)里的自變量用x_表示,而不是x。
函數(shù)調(diào)用:
f11[1],輸出為:2。
f11[a],輸出為1 + a^2。
多元函數(shù)定義:
f2[x_, y_] := x^2 + y^2; 這里為函數(shù)定義。
f2[1, -1],函數(shù)調(diào)用,輸出結(jié)果為2。
軟件中還有些定義好的函數(shù)可以直接用,如Sin,Cos函數(shù)等,如:
ArcSin[Sqrt[3]/2],輸出為pi/3。
Sin[60 Degree],其中Degree表示以度為單位,輸出為Sqrt[3]/2。

控制理論相關(guān)操作:
拉普拉斯變換:
LaplaceTransform[Sin[2 t1], t1, s],其中Sin[2 t1]表示要變換的時(shí)域函數(shù);t1表示時(shí)域自變量,不是固定的,和前面函數(shù)一致即可;s表示變換后的自變量,輸出結(jié)果為:2/(4 + s^2)。
LaplaceTransform[E^(-2 t), t, s],E表示指數(shù)函數(shù)中的e,約為2.71828,輸出結(jié)果為1/(2 + s)。
拉普拉斯反變換:
InverseLaplaceTransform[1/(s + 2), s, t],輸出結(jié)果為:E^(-2 t)。
InverseLaplaceTransform[1/(s^2 + s + 2), s, t],輸出結(jié)果為:

可畫出上述曲線,其實(shí)就是原傳遞函數(shù)的沖擊響應(yīng):
Plot[(2 E^(-t/2) Sin[(Sqrt[7] t)/2])/Sqrt[7], {t, 0, 20},? PlotRange -> Full],其中(2 E^(-t/2) Sin[(Sqrt[7] t)/2])/Sqrt[7]就是上面那個(gè)時(shí)域函數(shù),PlotRange -> Full表示縱軸全范圍展示,輸出結(jié)果如下:

還可以畫出原傳函的單位階躍響應(yīng)對(duì)應(yīng)的曲線,相當(dāng)于在原來s域傳遞函數(shù)的基礎(chǔ)上再乘以單位階躍函數(shù)的傳遞函數(shù)1/s,求其拉式反變換即可得到階躍響應(yīng)對(duì)應(yīng)的時(shí)域函數(shù):

輸出結(jié)果如下:

畫出其曲線可得:


可見其輸出結(jié)果不能達(dá)到1,所以無法實(shí)現(xiàn)無靜差跟蹤。這里為方便大家知道如何去用,簡(jiǎn)單給大家代入到控制理論的一些內(nèi)容來介紹此軟件的使用方法。
畫伯德圖:

其中第一個(gè)表示目標(biāo)傳遞函數(shù),{0.001, 100}表示頻率范圍,單位為rad/s,不是Hz,和Hz差了個(gè)2 pi系數(shù),輸出結(jié)果如下:


未完待續(xù)。。。。。。
大家感覺有幫助的話不妨動(dòng)動(dòng)小手點(diǎn)個(gè)贊吧。