天天看點

Matlab的基本應用2

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

繼續閱讀