TASK13 2.34-2.44
语法知识
逆矩阵
矩阵的LU分解
矩阵的正交分解
矩阵的Cholesky分解
广义逆矩阵
数组与矩阵的乘幂
矩阵的水平连接与垂直连接
矩阵的复制
稀疏矩阵的创建
稀疏矩阵的图形显示
寻找矩阵的非零元素
实战演练
逆矩阵的实例
>> A=[1 2 3 4;2 3 5 8;1 3 5 7;3 4 7 11]
A =
1 2 3 4
2 3 5 8
1 3 5 7
3 4 7 11
>> det(A)
ans =
1.0000
>> inv(A)
ans =
1.0000 -1.0000 -1.0000 1.0000
2.0000 4.0000 -1.0000 -3.0000
-0.0000 -5.0000 1.0000 3.0000
-1.0000 2.0000 -0.0000 -1.0000
>> inv(A)*A
ans =
1.0000 -0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
-0.0000 0 1.0000 0
0.0000 0 0 1.0000
>> A\eye(4)
ans =
1.0000 -1.0000 -1.0000 1.0000
2.0000 4.0000 -1.0000 -3.0000
-0.0000 -5.0000 1.0000 3.0000
-1.0000 2.0000 -0.0000 -1.0000
>> eye(4)/A
ans =
1.0000 -1.0000 -1.0000 1.0000
2.0000 4.0000 -1.0000 -3.0000
-0.0000 -5.0000 1.0000 3.0000
-1.0000 2.0000 -0.0000 -1.0000
>> A^(-1)
ans =
1.0000 -1.0000 -1.0000 1.0000
2.0000 4.0000 -1.0000 -3.0000
-0.0000 -5.0000 1.0000 3.0000
-1.0000 2.0000 -0.0000 -1.0000
>> B=[A,eye(size(A))]
B =
1 2 3 4 1 0 0 0
2 3 5 8 0 1 0 0
1 3 5 7 0 0 1 0
3 4 7 11 0 0 0 1
>> rref(B)
ans =
1 0 0 0 1 -1 -1 1
0 1 0 0 2 4 -1 -3
0 0 1 0 0 -5 1 3
0 0 0 1 -1 2 0 -1
>> C=ans(:,5:8)
C =
1 -1 -1 1
2 4 -1 -3
0 -5 1 3
-1 2 0 -1
矩阵的LU分解的实例
>> A=[1 2 3 4;2 3 5 8;1 3 5 7;3 4 7 11]
A =
1 2 3 4
2 3 5 8
1 3 5 7
3 4 7 11
>> [l,u]=lu(A)
l =
0.3333 0.4000 1.0000 0
0.6667 0.2000 0.5000 1.0000
0.3333 1.0000 0 0
1.0000 0 0 0
u =
3.0000 4.0000 7.0000 11.0000
0 1.6667 2.6667 3.3333
0 0 -0.4000 -1.0000
0 0 0 0.5000
>> l*u
ans =
1 2 3 4
2 3 5 8
1 3 5 7
3 4 7 11
矩阵的正交分解的实例
已知三阶魔方矩阵,求其正交分解矩阵。
>> a=magic(3)
a =
8 1 6
3 5 7
4 9 2
>> [q,r]=qr(a)
q =
-0.8480 0.5223 0.0901
-0.3180 -0.3655 -0.8748
-0.4240 -0.7705 0.4760
r =
-9.4340 -6.2540 -8.1620
0 -8.2394 -0.9655
0 0 -4.6314
>> q*q'
ans =
1.0000 -0.0000 -0.0000
-0.0000 1.0000 -0.0000
-0.0000 -0.0000 1.0000
矩阵的Cholesky分解的实例
>> A=[1,1,1,1;1,3,3,3;1,3,5,5;1,3,5,7]
A =
1 1 1 1
1 3 3 3
1 3 5 5
1 3 5 7
>> eig(A)
ans =
0.5198
0.7232
1.6199
13.1371
>> chol(A)
ans =
1.0000 1.0000 1.0000 1.0000
0 1.4142 1.4142 1.4142
0 0 1.4142 1.4142
0 0 0 1.4142
>> ans'*ans
ans =
1.0000 1.0000 1.0000 1.0000
1.0000 3.0000 3.0000 3.0000
1.0000 3.0000 5.0000 5.0000
1.0000 3.0000 5.0000 7.0000
广义逆矩阵的实例
>> A=[1 2 3;4 5 6;1 3 5;2 5 8;4 7 9]
A =
1 2 3
4 5 6
1 3 5
2 5 8
4 7 9
>> rank(A)
ans =
3
>> pinv(A)
ans =
0.1739 1.0870 0.0435 0.2174 -1.0000
-0.3789 -1.4037 -0.4161 -0.7950 2.0000
0.2174 0.6087 0.3043 0.5217 -1.0000
数组与矩阵的乘幂的实例
>> x=magic(3)
x =
8 1 6
3 5 7
4 9 2
>> y=[1 2 3;4 5 6;7 8 9]
y =
1 2 3
4 5 6
7 8 9
>> v=power(x,y)
v =
8 1 216
81 3125 117649
16384 43046721 512
矩阵的水平连接与垂直连接的实例
>> A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> B=[1 1 1;1 1 1;1 1 1;1 1 1]
B =
1 1 1
1 1 1
1 1 1
1 1 1
>> C=horzcat(A,B)
C =
16 2 3 13 1 1 1
5 11 10 8 1 1 1
9 7 6 12 1 1 1
4 14 15 1 1 1 1
矩阵的复制的实例
>> V=[2 3 5 8];
>> B=repmat(V,10,1)
B =
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
2 3 5 8
稀疏矩阵的创建的实例
>> i=[1 1 1 2 2 2 3 3 3 4 4 4];
>> j=[1 3 5 2 4 6 3 5 7 4 6 8];
>> s=[2 5 13 3 8 21 5 13 34 8 21 55];
>> m=6;n=8;
>> S=sparse(i,j,s,m,n)
S =
(1,1) 2
(2,2) 3
(1,3) 5
(3,3) 5
(2,4) 8
(4,4) 8
(1,5) 13
(3,5) 13
(2,6) 21
(4,6) 21
(3,7) 34
(4,8) 55
>> full(S)
ans =
2 0 5 0 13 0 0 0
0 3 0 8 0 21 0 0
0 0 5 0 13 0 34 0
0 0 0 8 0 21 0 55
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
>> nnz(s)
ans =
12
稀疏矩阵的图形显示的实例
显示稀疏对角矩阵B=spdiage(A,[-2,-2,0,1,2],8,12),其中A=magic(8)>30。
>> A=magic(8)>30
A =
8×8 logical 数组
1 0 0 1 1 0 0 1
0 1 1 0 0 1 1 0
0 1 1 0 0 1 1 0
1 0 0 1 1 0 1 1
1 1 1 0 0 1 1 0
1 0 0 1 1 0 0 1
1 0 0 1 1 0 0 1
0 1 1 0 0 1 1 0
>> B=spdiags(A,[-2,-1,0,1,2],8,12)
B =
8×12 稀疏 logical 数组
(2,1) 1
(1,2) 1
(2,2) 1
(3,2) 1
(4,2) 1
(1,3) 1
(3,3) 1
(5,3) 1
(5,4) 1
(6,4) 1
(4,5) 1
(5,5) 1
(7,5) 1
(4,6) 1
(6,7) 1
(8,7) 1
(6,8) 1
(7,8) 1
(8,8) 1
(7,9) 1
>> spy(B)
寻找矩阵的非零元素的实例
>> a=[2,3,5,8,13,21,34]
a =
2 3 5 8 13 21 34
>> e=ones(6,1)
e =
1
1
1
1
1
1
>> diag(e,1)
ans =
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
>> diag(e,-1)
ans =
0 0 0 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
>> b=diag(a)+diag(e,1)+diag(e,-1)
b =
2 1 0 0 0 0 0
1 3 1 0 0 0 0
0 1 5 1 0 0 0
0 0 1 8 1 0 0
0 0 0 1 13 1 0
0 0 0 0 1 21 1
0 0 0 0 0 1 34
>> [i,j,v]=find(b)
i =
1
2
1
2
3
2
3
4
3
4
5
4
5
6
5
6
7
6
7
j =
1
1
2
2
2
3
3
3
4
4
4
5
5
5
6
6
6
7
7
v =
2
1
1
3
1
1
5
1
1
8
1
1
13
1
1
21
1
1
34
总结思考
本次我们学习了有关逆矩阵和稀疏矩阵的有关知识。同时还学习了矩阵的各种分解方法和用于分解的函数。除此之外,还有关于矩阵的各种操作,如寻找矩阵中非零的数和矩阵的连接。