2.1 特殊矩阵
通用的特殊矩阵:
- zeros函数:产生全0矩阵,即零矩阵。
- ones函数:产生全1矩阵,即幺矩阵。
- eye函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
- rand函数:产生(0,1)区间均匀分布的随机矩阵。
- randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。
>> zeros(2)
ans =
0 0
0 0
>> ones(2)
ans =
1 1
1 1
>> eye(4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> rand(3)
ans =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> randn(3)
ans =
2.7694 0.7254 -0.2050
-1.3499 -0.0631 -0.1241
3.0349 0.7147 1.4897
专门学科的特殊矩阵:
魔方矩阵:n 阶魔方阵由1,2,3,…,n2 共n2 个整数组成,且每行、每列以及主、副对角线上各 n 个元素之和都相等。
- magic(n) 函数:产生一个 n 阶魔方矩阵。
>> M=magic(3)
M =
8 1 6
3 5 7
4 9 2
范德蒙矩阵:
对于向量v= [v1,v2,…,vn], 范得蒙矩阵的一般形式为:
V = [ v 1 n − 1 ⋯ v 1 2 v 1 1 v 1 0 v 2 n − 1 ⋯ v 2 2 v 2 1 v 2 0 v 3 n − 1 ⋯ v 3 2 v 3 1 v 3 0 ⋮ ⋱ ⋮ ⋮ ⋮ v n n − 1 ⋯ v n 2 v n 1 v n 0 ] V= \left[ \begin{matrix} v^{n-1}_1 &\cdots& v^2_1 & v^1_1 & v^0_1 \\ v^{n-1}_2 &\cdots& v^2_2 & v^1_2 & v^0_2 \\ v^{n-1}_3 &\cdots& v^2_3 & v^1_3 & v^0_3 \\ \vdots &\ddots &\vdots &\vdots &\vdots \\ v^{n-1}_n &\cdots& v^2_n & v^1_n & v^0_n \end{matrix} \right] V= v1n−1v2n−1v3n−1⋮vnn−1⋯⋯⋯⋱⋯v12v22v32⋮vn2v11v21v31⋮vn1v10v20v30⋮vn0
即向量 v 各元素的零次方,倒数第二列为指定的向量 v, 即向量 v 各元素的一次方, 其他各列是其后列与倒数第二列的点乘积。
- vander(v) 函数:生成以向量 v 为基础的范得蒙矩阵。
>> A=vander(1:5)
A =
1 1 1 1 1
16 8 4 2 1
81 27 9 3 1
256 64 16 4 1
625 125 25 5 1
希尔伯特矩阵:
n 阶希尔伯特(Hilbert)矩阵的一般形式为:
H = [ 1 1 / 2 ⋯ 1 / n 1 / 2 1 / 3 ⋯ 1 / ( n + 1 ) ⋮ ⋱ ⋮ ⋮ 1 / n 1 / ( n + 1 ) ⋯ 1 / ( 2 n − 1 ) ] H= \left[ \begin{matrix} 1 &1/2 &\cdots& 1/n \\ 1/2 &1/3 &\cdots& 1/(n+1) \\ \vdots &\ddots &\vdots &\vdots \\ 1/n &1/(n+1) &\cdots& 1/(2n-1) \end{matrix} \right] H= 11/2⋮1/n1/21/3⋱1/(n+1)⋯⋯⋮⋯1/n1/(n+1)⋮1/(2n−1)
- hilb(n) 函数:生成 n 阶希尔伯特矩阵的函数。
>> format rat %将显示形式改为分数显示
H=hilb(4)
H =
1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7
帕斯卡矩阵:
矩阵如下:
H = [ 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 ] H= \left[ \begin{matrix} 1 &1 &1 &1 &1 &1 \\ 1 &2 &3 &4 &5 &6 \\ 1 &3 &6 &10 &15 &21 \\ 1 &4 &10 &20 &35 &56 \\ 1 &5 &15 &35 &70 &126\\ 1 &6 &21 &56 &126&252\\ \end{matrix} \right] H= 111111123456136101521141020355615153570126162156126252
- pascal(n) 函数:生成一个 n 阶帕斯卡矩阵。
>> P=pascal(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
2.2 矩阵变换
对角阵:
对角阵:只有对角线上有非零元素的矩阵。
数量矩阵:对角线上的元素相等的对角矩阵。
单位矩阵:对角线上的元素都为1的对角矩阵。
矩阵的对角线:与主对角线平行,往上为第1条、第2条、一直到第 n 条对角线,往下为第 -1条、-2条、一直到 -n 条对角线。主对角线为第 0 条对角线。
提取矩阵的对角线元素:
diag(A):提取矩阵 A 主对角线元素,产生一个列向量。
diag(A,k):提取矩阵 A 第 k 条对角线的元素,产生一个列向量。
构造矩阵:
diag(V):以向量 V 为主对角线元素,产生对角矩阵。
diag(V,k):以向量 V 为第 k 条对角线元素,产生对角矩阵。
>> D=diag(1:3) %以1到3为主对角线元素,产生对角矩阵
D =
1 0 0
0 2 0
0 0 3
>> A=diag(D) %提取矩阵D的对角线元素,产生一个列向量
A =
1
2
3
三角阵:
上三角阵:矩阵的对角线以下的元素全为零的矩阵。
下三角阵:对角线以上的元素全为零的矩阵。
上三角矩阵:
triu(A):提取矩阵 A 的主对角线及以上的元素。
triu(A,k):提取矩阵 A 的第 k 条对角线及以上的元素。
下三角矩阵:
tril(A):提取矩阵 A 的主对角线及以下的元素。
tril(A,k):提取矩阵 A 的第 k 条对角线及以下的元素。
>> triu(ones(4),-1)
ans =
1 1 1 1
1 1 1 1
0 1 1 1
0 0 1 1
>> tril(ones(4),1)
ans =
1 1 0 0
1 1 1 0
1 1 1 1
1 1 1 1
矩阵的操作:
矩阵的转置:转置运算符是小数点后面接单引号( .’ )。
>> A=[1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
>> A.'
ans =
1 4 7
2 5 8
3 6 9
矩阵的旋转:
- rot90(A,k):将矩阵 A 逆时针方向旋转 90º 的 k 倍,当 k 为1时可省略。
>> A=[1 3 2;-3 2 1;4 1 2]
A =
1 3 2
-3 2 1
4 1 2
>> rot90(A,2)
ans =
2 1 4
1 2 -3
2 3 1
矩阵的翻转:对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依此类推。
- fliplr(A):对矩阵 A 实施左右翻转
- flipud(A):对矩阵 A 实施上下翻转。
>> A=[1 3 2;-3 2 1;4 1 2]
A =
1 3 2
-3 2 1
4 1 2
>> B=fliplr(A)
B =
2 3 1
1 2 -3
2 1 4
>> B=flipud(A)
B =
4 1 2
-3 2 1
1 3 2
矩阵的求逆:对于一个方阵 A,如果存在一个与其同阶的方阵 B,使得 AB=BA=I (I为单位矩阵),则称 B 为 A 的逆矩阵,当然,A 也是 B 的逆矩阵。
- inv(A):求方阵 A 的逆矩阵。
例:用求逆矩阵的方法解线性方程组。
{ x + 2 y + 3 z = 5 x + 4 y + 9 z = − 2 x + 8 y + 27 z = 6 \begin{cases} x +2y+3z=5 \\ x+4y+9z=-2 \\ x+8y+27z=6 \end{cases} ⎩ ⎨ ⎧x+2y+3z=5x+4y+9z=−2x+8y+27z=6
在线性方程组Ax=b两边各左乘 A-1,得 x=A-1b。
>> A=[1 2 3;1 4 9;1 8 27];
>> B=[5;-2;6];
>> X=inv(A)*B
X =
23.0000
-14.5000
3.6667
2.3 矩阵求值
方阵的行列式:
行列式的值:把一个方阵看作行列式,并对其按行列式的规则求值。
- det(A):求方阵 A 所对应的行列式的值。
>> A=[1 2;3 4]
A =
1 2
3 4
>> det(A)
ans =
-2
矩阵的秩:
矩阵的秩:矩阵线性无关的行数或列数。
- rank(A):求矩阵 A 的秩。
>> A=[1,2,1;3 4 3;5 3 5]
A =
1 2 1
3 4 3
5 3 5
>> rank(A)
ans =
2
矩阵的迹:
矩阵的迹:等于矩阵的对角线元素之和,也等于矩阵的特征值之和。
- trace(A):求矩阵 A 的迹。
>> A=[1,3,2;-3,2,1;4,1,2]
A =
1 3 2
-3 2 1
4 1 2
>> trace(A)
ans =
5
向量和矩阵的范数:
矩阵或向量的范数:用来度量矩阵或向量在某种意义下的长度。
- norm(V) 或 norm(V,2):计算向量(矩阵) V 的2—范数。
- norm(V,1):计算向量(矩阵) V 的1—范数。
- norm(V,inf):计算向量(矩阵) V 的 ∞ —范数。
>> X=[2 0 1;-1 1 0;-3 3 0]
X =
2 0 1
-1 1 0
-3 3 0
>> n=norm(X)
n =
4.7234
>> n=norm(X,1)
n =
6
矩阵的条件数:
矩阵的条件数:等于矩阵的范数与矩阵的逆矩阵的范数的乘积。
- cond(A,1):计算 A 的1—范数下的条件数。
- cond(A)或cond(A,2):计算 A 的2—范数数下的条件数。
- cond(A,inf):计算 A 的 ∞ —范数下的条件数。
>> X=[2 0 1;-1 1 0;-3 3 0]
X =
2 0 1
-1 1 0
-3 3 0
>> C=cond(X)
C =
5.5044e+16
矩阵的特征值与特征向量:
数学定义:设 A 是 n 阶方阵,如果存在常数 λ 和 n 维非零列向量 x,使得等式 Ax=λx 成立,则称 λ 为 A 的特征值,x 是对应特征值 λ 的特征向量。
- E=eig(A):求矩阵 A 的全部特征值,构成向量 E。
- [X,D]=eig(A):求矩阵 A 的全部特征值,构成对角阵 D,并产生矩阵 X,X 各列是相应的特征向量。
>> A=[1 1 0;1 0 5;1 10 2]
A =
1 1 0
1 0 5
1 10 2
>> [X,D]=eig(A)
X =
0.0722 0.9751 0.0886
0.5234 -0.0750 -0.6356
0.8490 -0.2089 0.7669
D =
8.2493 0 0
0 0.9231 0
0 0 -6.1723
2.4 稀疏矩阵
矩阵的存储方式:
完全存储方式:将矩阵的全部元素按列存储。
稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和 列号。
注意:采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也 是按列的顺序进行存储。
稀疏存储方式的产生:
完全存储方式与稀疏存储方式之间的转化:
- A=sparse(S):将矩阵 S 转化为稀疏存储方式的矩阵 A。
- S=full(A):将矩阵 A 转化为完全存储方式的矩阵 S。
>> A=sparse(eye(5))
A =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
>> B=full(A)
B =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
直接建立稀疏存储矩阵:
- sparse(m,n):生成一个 m×n 的所有元素都是零的稀疏矩阵。
- sparse(u,v,S):其中 u、v、S 是3个等长的向量。S 是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是 S(i) 的行和列下标。
>> A=sparse([1,2,2],[2,1,4],[4,5,-7])
A =
(2,1) 5
(1,2) 4
(2,4) -7
>> B=full(A)
B =
0 4 0 0
5 0 0 -7
- spconvert(A):A(i,1) 表示第 i 个非零元素所在的行。A(i,2) 表示 第 i 个非零元素所在的列。 A(i,3) 表示第 i 个非零元素值的实部。A(i,4) 表示第 i 个非零元素值的虚部。
>> A=[2,2,1;2,1,-1;2,4,3]
A =
2 2 1
2 1 -1
2 4 3
>> B=spconvert(A)
B =
(2,1) -1
(2,2) 1
(2,4) 3
带状稀疏矩阵的稀疏存储:带状稀疏矩阵就是一种十分典型的具有规则结构的稀疏矩阵,它是指 所有非零元素集中在对角线上的矩阵。
- [B,d]=spdiags(A):从带状稀疏矩阵 A 中提取全部非零对角线元素赋给矩阵 B 及其这些非零对角线的位置向量 d。
- A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵 A,其中 m、n 为原带状稀疏矩阵的行数与列数,矩阵 B 的第 i 列即为原带状稀疏矩阵的第 i 条非零对角线,向量 d 为原带状稀疏矩阵所有非零对角线的位置
>> A =[11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0]
A =
11 0 0 12 0 0
0 21 0 0 22 0
0 0 31 0 0 32
41 0 0 42 0 0
0 51 0 0 52 0
>> [B,d]=spdiags(A)
B =
0 11 12
0 21 22
0 31 32
41 42 0
51 52 0
d =
-3
0
3
>> A=spdiags(B,d,5,6)
A =
(1,1) 11
(4,1) 41
(2,2) 21
(5,2) 51
(3,3) 31
(1,4) 12
(4,4) 42
(2,5) 22
(5,5) 52
(3,6) 32
单位矩阵的稀疏存储:
- speye(m,n):返回一个 m×n 的稀疏存储单位矩阵。
>> speye(3)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
应用举例:文章来源:https://www.toymoban.com/news/detail-727785.html
求下列三对角线性方程组的解
[ 2 3 1 4 1 1 6 4 2 6 2 1 1 ] [ x 1 x 2 x 3 x 4 x 5 ] = [ 0 3 2 1 5 ] \left[ \begin{matrix} 2 & 3 \\ 1 & 4 & 1 \\ & 1 & 6 & 4 \\ & & 2 & 6 & 2 \\ & & & 1 & 1 \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5 \end{matrix} \right] {=} \left[ \begin{matrix} 0 \\ 3 \\ 2 \\ 1 \\ 5 \end{matrix} \right] 2134116246121 x1x2x3x4x5 = 03215 文章来源地址https://www.toymoban.com/news/detail-727785.html
>> kf1=[1;1;2;1;0];
>> k0=[2;4;6;6;1];
>> k1=[0;3;1;4;2];
>> B=[kf1,k0,k1];
>> d=[-1;0;1];
>> A=spdiags(B,d,5,5);
>> f=[0;3;2;1;5];
>> x=A\f
x =
-0.1667
0.1111
2.7222
-3.6111
8.6111
到了这里,关于MATLAB教程二:MATLAB矩阵处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!