MATLAB解決數學模型基礎

                      一、矩陣的表示
  MATLAB的強大功能在於能夠處理向量或矩陣,這項功能是c語言,c++等不能比擬的。比如線性規劃問題,多方程組求解問題。如果把方程直接用代碼表示出來是十分麻煩的,如果運用線性代數中的思想,用矩陣的方式表示,不論求解速度,還是寫代碼速度將會大大提升。
1.矩陣的輸入
  本文列舉了三種矩陣的輸入,一般簡單的矩陣,可直接安航方式輸入每個元素;同行中的元素用逗號或空格符分隔,且空格數不限;不同的行的用分號。

 T=[11 12 1 2 3 4 5 6 7 8 9]

T =

    11    12     1     2     3     4     5     6     7     8     9

 X=[1,2,3;4,5,6;7,8,9]%三行三列的矩陣

X =

     1     2     3
     4     5     6
     7     8     9

>> U=[]%空矩陣

U =

     []

2.複數矩陣的輸入
  注意方法一中矩陣c中可以做數學運算

 %方法一
 a=1;b=2;
 c=[1,3*a+i*b,b*sqrt(a);sin(pi/5),a+7*b,3.9+1]

c =

   1.0000 + 0.0000i   3.0000 + 2.0000i   2.0000 + 0.0000i
   0.5878 + 0.0000i  15.0000 + 0.0000i   4.9000 + 0.0000i
 %方法二
R=[1 2 3;4 5 6];M=[7 8 9;10 11 12];
>> RM=R+i*M

RM =

   1.0000 + 7.0000i   2.0000 + 8.0000i   3.0000 + 9.0000i
   4.0000 +10.0000i   5.0000 +11.0000i   6.0000 +12.0000i

3.字符矩陣的輸入
sym:符號矩陣定義函數,定義一個符號或者表達式,長度沒有限制,使用方法如下所示。
syms:符號定義函數,適用範圍沒有sym廣
輸入字符矩陣限定一些字符變量,再像定義普通矩陣一樣輸入字符矩陣。

>> m1=sym('class');
>> m2=sym('yello2');
>> m3=sym('green');
>> m123=[a,b,c;m1,m2,m3;1,2,3]

m123 =

[     a,      b,     c]
[ class, yello2, green]
[     1,      2,     3]

%sym還可以將數值型轉化爲符號型。
>> digit_ma=[0.3 sqrt(3) 3.1;exp(0.3) log(10) 23^.5];
>> syms_ma=sym(digit_ma)

syms_ma =

[                              3/10,                           3^(1/2),    31/10]
[ 3039611811401035/2251799813685248, 2592480341699211/1125899906842624, 23^(1/2)]

>> digit_ma
digit_ma =
    0.3000    1.7321    3.1000
    1.3499    2.3026    4.7958

4.特殊矩陣的使用
有些特殊矩陣,可用matlab中的函數生成,例如:
全零陣函數zeros

 a=zeros(3)

a =

     0     0     0
     0     0     0
     0     0     0

>> zeros(3,4)

ans =

     0     0     0     0
     0     0     0     0
     0     0     0     0

還有單位矩陣函數eye,全1陣函數ones,均勻分佈隨即矩陣函數rand,正態分佈隨機矩陣函數randn,產生隨即排列函數randperm,計算矩陣中元素個數numel等等,其用法大同小異,需要用時網上都有。

                  二、複雜數學函數的求解
1.函數求導

 syms H C K x
T=(H/C)*((1/cos(x))+[1+(K-tan(x))^2]^(1/2));
dfdx=diff(T,x)

dfdx =

(H*(sin(x)/cos(x)^2 - ((tan(x)^2 + 1)*(K - tan(x)))/((K - tan(x))^2 + 1)^(1/2)))/C

其中T函數爲所需求導的函數,diff函數用於求解函數導數和矩陣差分的。

  matlab在求解複雜數學函數方面功能是非常強大的,不論求導還是積分,還是更復雜的函數,均可用matlab中已經封裝好的函數求解,在此,本文不再詳細敘述,日常用到時可以網上搜集方法。

                  三、線性方程組的求解
1.齊次方程組通解

>> A=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3];
>> format rat  %指定有理式格式
>> B=null(A,'r')%求解空間的有理基

B =

       2              5/3     
      -2             -4/3     
       1              0       
       0              1       

>> b=rref(A)%通過最簡行得到基

b =

       1              0             -2             -5/3     
       0              1              2              4/3     
       0              0              0              0   

2、非齊次方程組通解
matlab中求解該方程組的方法有很多,本文只列舉了一種最簡便地方法。

>> A=[1 1 -3 -1; 3 -1 -3 4;1 5 -9 -8];
>> b=[1 4 0]';
>> B=[A b];
>> C=rref(B)
C =
       1              0             -3/2            3/4            5/4     
       0              1             -3/2           -7/4           -1/4     
       0              0              0              0              0     

                  四·、簡單的分析
matlab還可以用於簡單的數學分析工具,比如線性迴歸/擬合/繪圖等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章