這一節主要分享一下利用MATLAB進行相關計算。MATLAB內置了很多計算方法及其函數實現,即使不懂數值方法,也可以進行一些複雜的計算,例如有求解矩陣的逆,求解積分、微分,進行傅里葉變化及其逆變換,進行最小二乘法的直線擬合等等。
例1、求解一個矩陣的逆矩陣,並進行矩陣的乘計算。
首先是輸入(或者說是定義)一個矩陣a,那麼則應輸入的是:
>> a=[1 2;3 4]
若無分號,直接回車,則會輸出a矩陣。
求a矩陣的逆矩陣,求解利用的函數如下:
>> b=inv(a)
計算矩陣相乘,在這裏計算a矩陣乘以b矩陣的轉置,而矩陣的轉置則只需加一撇即可:
>> c=a*b'
最後輸出的結果有:
a =
1 2
3 4
b =
-2.0000 1.0000
1.5000 -0.5000
c =
0 0.5000
-2.0000 2.5000
b' =
-2.0000 1.5000
1.0000 -0.5000
例2、符號運算的定義,主要有syms,sym的應用,如下:
這兩種皆爲定義符號,但又有些許區別。syms是在運用符號之前,將所用的符號全部定義,下面則可以直接運用;而sym則是在運算中定義,用到每一個符號需要定義一次,相對而言沒有syms方便,下面有具體例子。
如:syms x(t) a
就等於
a = sym('a');
t = sym('t');
x = symfun(sym('x'), {t});
syms x beta real
就等於
x = sym('x','real');
beta = sym('beta','real');
上面的syms先定義了幾個是函數符號,下面就可以直接運用,公式中不用再出現sums或者sym,而sym則是在下面的公式中出現的。
例3、求積分及微分,運用MATLAB函數int以及diff,由於牽涉到符號運算,所以在運用之前,需要利用syms做一下符號的定義,如下:
syms x
int(x) 按回車後,得到
ans =
x^2/2
也可以直接輸入int(sym(x)) 按回車後得到
ans =
x^2/2
當然,也可以進行比較複雜積分計算,因爲可能會牽涉到較多的符號,所以建議大家利用syms先將用到的符號定義好,在利用int函數,進行積分計算。
微分計算函數diff,運用方式和int基本類似,例如
>> syms x y
>> y=diff(sin(x))
y =
cos(x)
真正靈活運用這些MATLAB函數,還是需要大家不斷嘗試和運用的。
例4、solve和dsolve函數的應用
這兩個函數均可以用於解函數方程或者方程組,solve主要用於解一般的方程及方程組,而dsolve則一般用於求解微分方程組,具體例子如下:
如求解方程sin(x)*pi=8,求x
>> solve('sin(x)*pi=8')
ans =
asin(8/pi)
pi - asin(8/pi)
這裏默認求解的是x,如果是>> solve('sin(x)*pi*y=8'),那麼依舊默認求解的是x,那如果想輸出y呢?則需要>> solve('sin(x)*pi*y=8','y'),那麼會輸出ans =8/(pi*sin(x));