這一節主要分享一下利用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));