1.點乘,點除,點乘方
點乘(對應元素相乘),必須同維或者其中一個是標量,a.*b
點除,a.\b表示矩陣b的每個元素除以a中對應元素或者除以常數a,a./b表示常數a除以矩陣b中每個元素或者矩陣a除以矩陣b對應元素或者常數b
點乘方a.^b,矩陣a中每個元素按b中對應元素乘方或者b是常數
2.矩陣中元素的操作
矩陣a中第r行,a(r,:),
第r列,a(:,r),
依次提取每一列組成一個列向量a(:),
提取子矩陣第i到j行和第k到t列a(i:j,k:t)
可以通過下標引用,但是元素下標從1開始, 也可通過序號引用,但是按列存儲,也就是說對於3*3的矩陣a,a(4)是a(1,2)不是a(2,1)
3.求極限
syms x;
f表達式
limit(f,0)//表示x趨於0時的極限
4.因式分解
syms x
factor(表達式)
5.求積分
syms x
y = x^2 + 2
int(y,3,4)//在區間3到4求積分
或者
quad('sin(x)',4,6) %必加引號
5 . 求n階導數
diff(函數表達式,階數n)//注意並不是在x = n時的一階導數值
6.解一元方程
syms x
y = X^3 - 1//y必須是個式子,也就是說x必須是符號變量不可是具體的數,否則一直空解
solve(y)
或者
求方程 3x4+7x3 +9x2-23=0的全部根。
p=[3,7,9,0,-23]; %建立多項式系數向量
x=roots(p) %求根
7.whos用於顯示駐留在工作區內的變量的詳細信息,采用clear 變量名把該變量清理出內存
8.linspace(a,b,n) 其中a和b是生成向量的第一個和最后一個元素,n是元素總數。 顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。
9.size(矩陣名),輸出行數和列數,比如產生和矩陣a同維的全一陣,ones(size(a))
10.常用的產生通用特殊矩陣的函數有: zeros:產生全0矩陣(零矩陣)。 ones:產生全1矩陣(幺矩陣)。 eye:產生單位矩陣。 rand:產生0~1間均勻分布的隨機矩陣。 randn:產生均值為0,方差為1的標准正態分布隨機矩陣。
一.常用特殊陣
建立隨機矩陣:
(1) 在區間[20,50]內均勻分布的5階隨機矩陣。
(2) 均值為0.6、方差為0.1的5階正態分布隨機矩陣。
命令如下: x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,常用的函數還有reshape(A,m,n),它在矩陣總元素個數保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。
例如,行向量:
a = [1 2 3 4 5 6]
執行下面語句把它變成3行2列:
b = reshape(a,3,2)
執行結果:
b =
1 4
2 5
3 6
在使用reshape時一定要注意的是變換前后矩陣的總元素個數和值不變。
二.用於專門學科的特殊矩陣
(1) 魔方矩陣
魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。
對於n階魔方陣,其元素由1,2,3,…,n2共n2個整數組成。MATLAB提供了求魔方矩陣的函數magic(n),其功能是生成一個n階魔方陣。
將101~125等25個數填入一個5行5列的表格中,使其每行每列及對角線的和均為565。
M=100+magic(5)
可知:n階普通魔方陣的常數值是n(n^2+1)/2(1加到n^2再除以n)。
(2) 范得蒙矩陣
范得蒙(Vandermonde)矩陣最后一列全為1,倒數第二列為一個指定的向量,其他各列(即從第三列開始)是其后列與倒數第二列的點乘積即倒數第二列的次方。
可以用一個指定向量生成一個范得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V為基礎向量的范得蒙矩陣。
例如,A=vander([1;2;3;5])即可得到上述范得蒙矩陣。
(3) 希爾伯特矩陣
Hilbert matrix,矩陣的一種,其元素為1/(i+j-1),ij分別為其行標和列標。
即:
[1,1/2,1/3,……,1/n]
|1/2,1/3,1/4,……,1/(n+1)|
|1/3,1/4,1/5,……,1/(n+2)|
……
[1/n,1/(n+1),1/(n+2),……,1/(2n-1)]
希爾伯特矩陣是一種數學變換矩陣,正定,且高度病態(即,任何一個元素發生一點變動,整個矩陣的值和逆矩陣都會發生巨大變化),病態程度和階數相關。
在MATLAB中,生成希爾伯特矩陣的函數是hilb(n)。 使用一般方法求逆會因為原始數據的微小擾動而產生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。
因為希爾伯特矩陣已經規定好了,因此hilb和invhilb只有一個參數即階數。
format rat %以有理形式輸出,即循環小數表示成分數
(4) 托普利茲矩陣
托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。即主對角線上的元素相等,平行於主對角線的線上的元素也相等。生成托普利茲矩陣的函數是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這里x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。例如 T=toeplitz(1:6).
(5) 伴隨矩陣
MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在后。
例如,為了求多項式的x3-7x+6的伴隨矩陣,可使用命令: p=[1,0,-7,6];
compan(p)
看了好多的書,都把compan()函數翻譯成求伴隨矩陣或友矩陣,可是你用它的時候你會
發現,compan()函數的輸入只能是一個向量(vector),而不能是一個矩陣(matrix),
所以我覺得它不能稱為真正的求伴隨矩陣的函數。不過,我們可以利用高等數學上的伴隨
矩陣和逆矩陣的關系來求逆矩陣,像這樣:
1 function J=companymatrix(A) 2 if det(A)~=0%det是求行列式的值 3 J=inv(A)*det(A); 4 else 5 fprintf('|A|=0\n'); 6 J=pinv(A)*det(A); 7 end
(6) 帕斯卡矩陣
我們知道,二次項(x+y)n展開后的系數隨n的增大組成一個三角形表,稱為楊輝三角形。
由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。
函數pascal(n)生成一個n階帕斯卡矩陣。
求(x+y)5的展開式。
在MATLAB命令窗口,輸入命令: pascal(6)
矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系數。
11.矩陣分析
11.1 對角陣 只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。
diag(a),提取矩陣a的對角線元素組成列向量。
先建立5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;... 11,18,25,2,19];
D=diag(1:5);
D*A %用D左乘A,對A的每行乘以一個指定常數
11.2三角陣
triu及tril
11.3矩陣轉置
a'共軛轉置,a.'為普通矩陣轉置(並不是順時針旋轉90),rot90(a)表示逆時針旋轉90
11.4矩陣的翻轉
對矩陣實施左右翻轉是將原矩陣的第一列和最后一列調換,第二列和倒數第二列調換,…,依次類推。
MATLAB對矩陣A實施左右翻轉的函數是fliplr(A)。
矩陣的上下翻轉 MATLAB對矩陣A實施上下翻轉的函數是flipud(A)。
11.5方陣的行列式
把一個方陣看作一個行列式,並對其按行列式的規則求值,這個值就稱為矩陣所對應的行列式的值。在MATLAB中,求方陣A所對應的行列式的值的函數是det(A)。
11.6矩陣的秩與跡
1.矩陣的秩 矩陣線性無關的行數與列數稱為矩陣的秩。在MATLAB中,求矩陣秩的函數是rank(A)。
2.矩陣的跡 矩陣的跡等於矩陣的對角線元素之和,也等於矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數是trace(A)。
11.7向量和矩陣的范數
向量的3種常用范數及其計算函數
在MATLAB中,求向量范數的函數為:
(1) norm(V)或norm(V,2):計算向量V的2—范數。
(2) norm(V,1):計算向量V的1—范數。
(3) norm(V,inf):計算向量V的∞—范數。
在MATLAB中,計算矩陣A的3種條件數的函數是:
(1) cond(A,1) 計算A的1—范數下的條件數。
(2) cond(A)或cond(A,2) 計算A的2—范數數下的條件數。
(3) cond(A,inf) 計算A的 ∞—范數下的條件數。
11.8矩陣的特征值與特征向量
在MATLAB中,計算矩陣A的特征值和特征向量的函數是eig(A),常用的調用格式有3種:
(1) E=eig(A):求矩陣A的全部特征值,構成向量E。
(2) [V,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,並求A的特征向量構成V的列向量。
(3) [V,D]=eig(A,‘nobalance’):與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。
11.9
關系運算
MATLAB提供了6種關系運算符:<(小於)、<=(小於或等於)、>(大於)、>=(大於或等於)、==(等於)、~=(不等於)。
它們的含義不難理解,但要注意其書寫方法與數學中的不等式符號不盡相同。
a = b表示把b賦值給同維的矩陣a
關系運算符的運算法則為:
(1) 當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0。
(2) 當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,並給出元素比較結果。
最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,並給出元素比較結果。
最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
產生5階隨機方陣A,其元素為[10,90]區間的隨機整數,然后判斷A的元素是否能被3整除。
(1) 生成5階隨機方陣A。 A=fix((90-10+1)*rand(5)+10)
(2) 判斷A的元素是否可以被3整除。
P=rem(A,3)==0 其中,rem(A,3)是矩陣A的每個元素除以3的余數矩陣。
此時,0被擴展為與A同維數的零矩陣,P是進行等於(==)比較的結果矩陣。
建立矩陣A,然后找出大於4的元素的位置。
(1) 建立矩陣A。 A=[4,-65,-54,0,6;56,0,67,-45,0]
(2) 找出大於4的元素的位置。 find(A>4)
12.
solve是符號解(解析解),roots是數值解 用求特征值的方法解方程。
3x5-7x4+5x2+2x-18=0 p=[3,-7,0,5,2,-18];
A=compan(p); %A的伴隨矩陣
x1=eig(A) %求A的特征值
x2=roots(p) %直接求多項式p的零點
矩陣的超越函數
1.矩陣平方根sqrtm sqrtm(A)計算矩陣A的平方根。
2.矩陣對數logm logm(A)計算矩陣A的自然對數。
此函數輸入參數的條件與輸出結果間的關系和函數sqrtm(A)完全一樣
矩陣指數expm、expm1、expm2、expm3 expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩陣指數eA。
4.普通矩陣函數funm funm(A,‘fun’)用來計算直接作用於矩陣A的由‘fun’指定的超越函數值。當fun取sqrt時,funm(A,‘sqrt’)可以計算矩陣A的平方根,與sqrtm(A)的計算結果一樣。
13.自然對數相關
exp,即自然對數表示為exp(x)。
log(X) %自然對數
log2(X) %以2為底
log10(X) %以10為底
14.多項式乘除法
1 p1=conv([1,0,2],conv([1,4],[1,1])); %conv表示多項式相乘 2 p2=[1 0 1 1]; 3 [q,r]=deconv(p1,p2); 4 cq='商多項式為 '; cr='余多項式為 '; %disp為屏幕輸出函數 5 disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')]) % poly2str表示生成多項式
商多項式為 s + 5
余多項式為 5 s^2 + 4 s + 3
15.
polyval(p,x)計算在X中任意元素處的多項式p的估值。
poly(A)求矩陣的特征多項式。
[d,v] = eig(A)其中d是矩陣的特征向量,V是特征值。