1.點(diǎn)乘,點(diǎn)除,點(diǎn)乘方
點(diǎn)乘(對應(yīng)元素相乘),必須同維或者其中一個是標(biāo)量,a.*b
點(diǎn)除,a.\b表示矩陣b的每個元素除以a中對應(yīng)元素或者除以常數(shù)a,a./b表示常數(shù)a除以矩陣b中每個元素或者矩陣a除以矩陣b對應(yīng)元素或者常數(shù)b
點(diǎn)乘方a.^b,矩陣a中每個元素按b中對應(yīng)元素乘方或者b是常數(shù)
2.矩陣中元素的操作
矩陣a中第r行,a(r,:),
第r列,a(:,r),
依次提取每一列組成一個列向量a(:),
提取子矩陣第i到j(luò)行和第k到t列a(i:j,k:t)
可以通過下標(biāo)引用,但是元素下標(biāo)從1開始, 也可通過序號引用,但是按列存儲,也就是說對于3*3的矩陣a,a(4)是a(1,2)不是a(2,1)
3.求極限
syms x;
f表達(dá)式
limit(f,0)//表示x趨于0時的極限
4.因式分解
syms x
factor(表達(dá)式)
5.求積分
syms x
y = x^2 + 2
int(y,3,4)//在區(qū)間3到4求積分
5 . 求n階導(dǎo)數(shù)
diff(函數(shù)表達(dá)式,階數(shù)n)//注意并不是在x = n時的一階導(dǎo)數(shù)值
6.解一元方程
syms x
y = X^3 - 1//y必須是個式子,也就是說x必須是符號變量不可是具體的數(shù),否則一直空解
solve(y)
7.whos用于顯示駐留在工作區(qū)內(nèi)的變量的詳細(xì)信息,采用clear 變量名把該變量清理出內(nèi)存
8.linspace(a,b,n) 其中a和b是生成向量的第一個和最后一個元素,n是元素總數(shù)。 顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。
9.size(矩陣名),輸出行數(shù)和列數(shù),比如產(chǎn)生和矩陣a同維的全一陣,ones(size(a))
10.常用的產(chǎn)生通用特殊矩陣的函數(shù)有: zeros:產(chǎn)生全0矩陣(零矩陣)。 ones:產(chǎn)生全1矩陣(幺矩陣)。 eye:產(chǎn)生單位矩陣。 rand:產(chǎn)生0~1間均勻分布的隨機(jī)矩陣。 randn:產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣。
一.常用特殊陣
建立隨機(jī)矩陣:
(1) 在區(qū)間[20,50]內(nèi)均勻分布的5階隨機(jī)矩陣。
(2) 均值為0.6、方差為0.1的5階正態(tài)分布隨機(jī)矩陣。
命令如下: x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,常用的函數(shù)還有reshape(A,m,n),它在矩陣總元素個數(shù)保持不變的前提下,將矩陣A重新排成m×n的二維矩陣。
例如,行向量:
a = [1 2 3 4 5 6]
執(zhí)行下面語句把它變成3行2列:
b = reshape(a,3,2)
執(zhí)行結(jié)果:
b =
1 4
2 5
3 6
在使用reshape時一定要注意的是變換前后矩陣的總元素個數(shù)和值不變。
二.用于專門學(xué)科的特殊矩陣
(1) 魔方矩陣
魔方矩陣有一個有趣的性質(zhì),其每行、每列及兩條對角線上的元素和都相等。
對于n階魔方陣,其元素由1,2,3,…,n2共n2個整數(shù)組成。MATLAB提供了求魔方矩陣的函數(shù)magic(n),其功能是生成一個n階魔方陣。
將101~125等25個數(shù)填入一個5行5列的表格中,使其每行每列及對角線的和均為565。
M=100+magic(5)
可知:n階普通魔方陣的常數(shù)值是n(n^2+1)/2(1加到n^2再除以n)。
(2) 范得蒙矩陣
范得蒙(Vandermonde)矩陣最后一列全為1,倒數(shù)第二列為一個指定的向量,其他各列(即從第三列開始)是其后列與倒數(shù)第二列的點(diǎn)乘積即倒數(shù)第二列的次方。
可以用一個指定向量生成一個范得蒙矩陣。在MATLAB中,函數(shù)vander(V)生成以向量V為基礎(chǔ)向量的范得蒙矩陣。
例如,A=vander([1;2;3;5])即可得到上述范得蒙矩陣。
(3) 希爾伯特矩陣
Hilbert matrix,矩陣的一種,其元素為1/(i+j-1),ij分別為其行標(biāo)和列標(biāo)。
即:
[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)]
希爾伯特矩陣是一種數(shù)學(xué)變換矩陣,正定,且高度病態(tài)(即,任何一個元素發(fā)生一點(diǎn)變動,整個矩陣的值和逆矩陣都會發(fā)生巨大變化),病態(tài)程度和階數(shù)相關(guān)。
在MATLAB中,生成希爾伯特矩陣的函數(shù)是hilb(n)。 使用一般方法求逆會因?yàn)樵紨?shù)據(jù)的微小擾動而產(chǎn)生不可靠的計算結(jié)果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數(shù)invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。
因?yàn)橄柌鼐仃囈呀?jīng)規(guī)定好了,因此hilb和invhilb只有一個參數(shù)即階數(shù)。
format rat %以有理形式輸出,即循環(huán)小數(shù)表示成分?jǐn)?shù)
(4) 托普利茲矩陣
托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。即主對角線上的元素相等,平行于主對角線的線上的元素也相等。生成托普利茲矩陣的函數(shù)是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這里x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。例如 T=toeplitz(1:6).
(5) 伴隨矩陣
MATLAB生成伴隨矩陣的函數(shù)是compan(p),其中p是一個多項(xiàng)式的系數(shù)向量,高次冪系數(shù)排在前,低次冪排在后。
例如,為了求多項(xiàng)式的x3-7x+6的伴隨矩陣,可使用命令: p=[1,0,-7,6];
compan(p)
看了好多的書,都把compan()函數(shù)翻譯成求伴隨矩陣或友矩陣,可是你用它的時候你會
發(fā)現(xiàn),compan()函數(shù)的輸入只能是一個向量(vector),而不能是一個矩陣(matrix),
所以我覺得它不能稱為真正的求伴隨矩陣的函數(shù)。不過,我們可以利用高等數(shù)學(xué)上的伴隨
矩陣和逆矩陣的關(guān)系來求逆矩陣,像這樣:
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) 帕斯卡矩陣
我們知道,二次項(xiàng)(x+y)n展開后的系數(shù)隨n的增大組成一個三角形表,稱為楊輝三角形。
由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。
函數(shù)pascal(n)生成一個n階帕斯卡矩陣。
求(x+y)5的展開式。
在MATLAB命令窗口,輸入命令: pascal(6)
矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系數(shù)。
11.矩陣分析
11.1 對角陣 只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數(shù)量矩陣,對角線上的元素都為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的每行乘以一個指定常數(shù)
11.2三角陣
triu及tril
11.3矩陣轉(zhuǎn)置
a'共軛轉(zhuǎn)置,a.'為普通矩陣轉(zhuǎn)置(并不是順時針旋轉(zhuǎn)90),rot90(a)表示逆時針旋轉(zhuǎn)90