矩阵基本数值的运算
1. 四则运算
%% + - * /即可执行四则运算中的加减乘除
>> a=ones(3),b=eye(3)
a=a+1,a=a/2
c=a-b,d=a*b
a=rand(3,2)
b=randn(2,3)
a =
1 1 1
1 1 1
1 1 1
b =
1 0 0
0 1 0
0 0 1
a =
2 2 2
2 2 2
2 2 2
a =
1 1 1
1 1 1
1 1 1
c =
0 1 1
1 0 1
1 1 0
d =
1 1 1
1 1 1
1 1 1
a =
0.8147 0.9134
0.9058 0.6324
0.1270 0.0975
b =
-0.4336 3.5784 -1.3499
0.3426 2.7694 3.0349
2. 矩阵的左除和右除
左除:A\B=A-1*B,A为满秩矩阵;
右除:A/B=A*B-1,B为满秩矩阵
>> A=[1 2 3;2 3 4;3 4 7];
B=[6;9;14];X=A\B
X =
1.0000
1.0000
1.0000
3. 矩阵的乘方和开方
在MATLAB中,用“A^n”来计算矩阵A的n次方,
用“sqrtm”函数来计算矩阵的开方
(sqrtm(A)求的是满足X*X=A的矩阵X。)
>> A=[1,2;2,1]
X=sqrtm(A)
Y=A^0.5
XX=X^2
A =
1 2
2 1
X =
0.8660 + 0.5000i 0.8660 - 0.5000i
0.8660 - 0.5000i 0.8660 + 0.5000i
Y =
0.8660 + 0.5000i 0.8660 - 0.5000i
0.8660 - 0.5000i 0.8660 + 0.5000i
XX =
1.0000 2.0000
2.0000 1.0000
4. 矩阵的指数和对数运算
矩阵对数运算与矩阵指数运算互为逆运算,
可以分别用函数expm和logm来实现。
Expm: 以e为底对矩阵求指数,并不是对每个元素求指数,对每个元素求指数的指令是exp。
>> A=[1 2 3;4 5 6;7 8 9]
Y=expm(A)
A_expm_logm=logm(Y)
A =
1 2 3
4 5 6
7 8 9
Y =
1.0e+06 *
1.1189 1.3748 1.6307
2.5339 3.1134 3.6929
3.9489 4.8520 5.7552
A_expm_logm =
1.0000 2.0000 3.0000
4.0000 5.0000 6.0000
7.0000 8.0000 9.0000
>>
5.向量的点积、差积和混合积
MATLAB中计算点积和差积的函数分别为dot和cross,
而混合积是点积和叉积的复合运算,
它的计算也是依靠以上两个函数。
Y =
0.8660 + 0.5000i 0.8660 - 0.5000i
0.8660 - 0.5000i 0.8660 + 0.5000i
XX =
1.0000 2.0000
2.0000 1.0000
## 4. 矩阵的指数和对数运算
矩阵对数运算与矩阵指数运算互为逆运算,
可以分别用函数expm和logm来实现。
Expm: 以e为底对矩阵求指数,并不是对每个元素求指数,对每个元素求指数的指令是exp。
```matlab
>> A=[1 2 3;4 5 6;7 8 9]
Y=expm(A)
A_expm_logm=logm(Y)
A =
1 2 3
4 5 6
7 8 9
Y =
1.0e+06 *
1.1189 1.3748 1.6307
2.5339 3.1134 3.6929
3.9489 4.8520 5.7552
A_expm_logm =
1.0000 2.0000 3.0000
4.0000 5.0000 6.0000
7.0000 8.0000 9.0000
>>
矩阵的特征参数运算
1. 矩阵的行列式、秩和逆运算
在MATLAB中,分别用函数det、rank
和inv来计算矩阵的行列式、秩和逆矩阵。
例如:
A1=[1 2 3;4 5 6;7 8 0];
rank(A1),det(A1),inv(A1)
A2=[1 2 3;4 5 6;2 4 6];
rank(A2),det(A2),inv(A2)
2. 矩阵的特征参数运算
矩阵A的特征值λ和特征向量v满足
关系式:Av=λv。
在MATLAB中,可用eig函数求出矩阵
的特征值和特征向量。
例如:
>> A=magic(3),
lambda=eig(A),[V,D]=eig(A)
A =
8 1 6
3 5 7
4 9 2
lambda =
15.0000
4.8990
-4.8990
V =
-0.5774 -0.8131 -0.3416
-0.5774 0.4714 -0.4714
-0.5774 0.3416 0.8131
D =
15.0000 0 0
0 4.8990 0
0 0 -4.8990
3. 矩阵(向量)的范数运算
在MATLAB中,用norm和normest函数
来计算向量和矩阵X的范数。其使用格式为:
norm(X)、norm(X,2):计算X的2范数;
norm(X,1):计算X的1范数;
norm(X,inf):计算X的无穷范数;
normest(X):只能计算X的2范数,并且是
2范数的估计值,适用于计算norm(X)比较费
时的情况。
clear
clc
w=gallery('cauchy',1000);
t1=clock;
w_norm=norm(w)
t2=clock;
t_norm=etime(t2,t1)
t3=clock;
w_normest=normest(w)
t4=clock;
t_normest=etime(t4,t3)
w_norm =
2.2469
t_norm =
0.0730
w_normest =
2.2469
t_normest =
0.0220
>>
矩阵的分解运算
矩阵分解是把一个矩阵分解成几个
“较简单”的矩阵连乘积的形式。
常用的矩阵分解的方法有:
三角分解(LU)、正交分解(QR)、
特征值分解(EIG)、奇异值分解(SVD)和
Chollesky分解(CHOL)等。
1.LU分解
A=LU,L是一个下三角阵与置换矩阵的
乘积(L经过行交换可化为下三角阵),
U为一个上三角阵。
LU分解在MATLAB中可以用函数lu来实现。
>> A=[1 2 3;4 5 6;4 2 6];
%A=[5 -2 0;-2 6 2;0 2 7];
[L,U]=lu(A) %A=LU
[L1,U,P]=lu(A) %PA=L1U,L=P-1L1
L =
0.2500 -0.2500 1.0000
1.0000 0 0
1.0000 1.0000 0
U =
4.0000 5.0000 6.0000
0 -3.0000 0
0 0 1.5000
L1 =
1.0000 0 0
1.0000 1.0000 0
0.2500 -0.2500 1.0000
U =
4.0000 5.0000 6.0000
0 -3.0000 0
0 0 1.5000
P =
0 1 0
0 0 1
1 0 0
2. QR分解
QR分解是把矩阵A分解为正交矩阵Q和
上三角阵R的乘积,即A=Q*R。
在MATLAB中,QR分解可由函数qr实现
>> A=[1 2 3;4 5 6;7 8 9;10 11 12];
[Q,R]=qr(A) %A=QR
[Q1,R1,E]=qr(A) %AE=Q1R1
Q =
-0.0776 -0.8331 0.5477 -0.0037
-0.3105 -0.4512 -0.7276 0.4131
-0.5433 -0.0694 -0.1880 -0.8153
-0.7762 0.3124 0.3679 0.4058
R =
-12.8841 -14.5916 -16.2992
0 -1.0413 -2.0826
0 0 -0.0000
0 0 0
Q1 =
-0.1826 -0.8165 0.5465 0.0363
-0.3651 -0.4082 -0.7558 0.3589
-0.5477 -0.0000 -0.1280 -0.8268
-0.7303 0.4082 0.3373 0.4316
R1 =
-16.4317 -12.7802 -14.6059
0 1.6330 0.8165
0 0 0.0000
0 0 0
E =
0 1 0
0 0 1
1 0 0
>>
3. EIG分解
若以A的所有特征值构成对角阵D,相应
的特征向量作为列构成矩阵V,则有 AV=VD。
若V是非奇异的,则可得矩阵A的特征值
分解式:A=VDV–1。
在MATLAB中,利用eig函数即可求出矩阵
A的特征值和特征向量,也可以对A进行特征值
分解。
>> A=magic(4),[V,D]=eig(A),V*D*inv(V)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
V =
-0.5000 -0.8236 0.3764 -0.2236
-0.5000 0.4236 0.0236 -0.6708
-0.5000 0.0236 0.4236 0.6708
-0.5000 0.3764 -0.8236 0.2236
D =
34.0000 0 0 0
0 8.9443 0 0
0 0 -8.9443 0
0 0 0 -0.0000
ans =
16.0000 2.0000 3.0000 13.0000
5.0000 11.0000 10.0000 8.0000
9.0000 7.0000 6.0000 12.0000
4.0000 14.0000 15.0000 1.0000
>>
4. SVD分解
A=USV’,S为A的奇异值对角阵
(对角元素的值非负,且按降序排列),U与V为正交阵。
在MATLAB中,奇异值分解可通过函数svd
来实现文章来源:https://www.toymoban.com/news/detail-805873.html
>> A=[1 2 3;4 5 6;7 8 9;10 11 12];
[U,S,V]=svd(A)
[U,S,V]=svd(A,0) %奇异值的最佳分解
U =
-0.1409 0.8247 0.5477 -0.0037
-0.3439 0.4263 -0.7276 0.4131
-0.5470 0.0278 -0.1880 -0.8153
-0.7501 -0.3706 0.3679 0.4058
S =
25.4624 0 0
0 1.2907 0
0 0 0.0000
0 0 0
V =
-0.5045 -0.7608 -0.4082
-0.5745 -0.0571 0.8165
-0.6445 0.6465 -0.4082
U =
-0.1409 0.8247 0.5477
-0.3439 0.4263 -0.7276
-0.5470 0.0278 -0.1880
-0.7501 -0.3706 0.3679
S =
25.4624 0 0
0 1.2907 0
0 0 0.0000
V =
-0.5045 -0.7608 -0.4082
-0.5745 -0.0571 0.8165
-0.6445 0.6465 -0.4082
>>
5. CHOL分解
Cholesky分解是把一个对称正定矩阵A
表示为一个上三角阵R与其转置的乘积,
即 A=R*R’
在MATLAB中,Cholesky分解可通过
chol函数来实现。文章来源地址https://www.toymoban.com/news/detail-805873.html
>> A=[4 -1 -1;-1 4.25 2.75;1 2.75 3.5];
B=[0 4 0;3 0 1;0 1 3];
R=chol(A),R1=chol(B)
R =
2.0000 -0.5000 -0.5000
0 2.0000 1.2500
0 0 1.2990
到了这里,关于matlab 入门(三)线性代数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!