一、矩陣的表示
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還可以用於簡單的數學分析工具,比如線性迴歸/擬合/繪圖等。