实验六 特征值与特征向量、若当标准形
【实验目的】
1.了解特征值与特征向量基本概念及其性质;
2.了解若当标准型的基本概念;
3.学习、掌握MATLAB软件有关的命令。
【实验准备】
1.特征多项式
设A为n阶方阵, 如果数“ ”和n维列向量x使得关系式 成立, 则称 为方阵A的特征值, 非零向量x称为A对应于特征值“ ”的特征向量。
poly(A),返回矩阵A的特征多项式的向量表示形式,例如:
>> clear
>> A=[1 0;2 3];
>> p=poly(A) %矩阵A的特征多项式的向量表示形式
p =
1 -4 3
>> f=poly2str(p,’x’) %矩阵A的特征多项式
f =
x^2 – 4 x + 3
或者由定义出发,计算特征多项式.例如:
>> clear
>> A=[1 0;2 3];
>> E=eye(2); %2阶单位阵
>> syms x
>> f=det(x*E-A) %矩阵A的特征多项式
f =
(x-1)*(x-3)
2.特征值与特征向量eigenvalue
求一个方阵的特征值与特征向量可以使用函数eig( ).
d=eig(A), 返回A所有特征值组成的列向量d.
[V,D]= eig(A), 返回A所有特征值组成的矩阵D和特征向量组成的矩阵V.
[V,D]= eigs(A), 返回A所有特征值(按大小次序)组成的对角矩阵D和特征向量组成的矩阵V,且满足D=V-1AV.
d=eig(A,B), 返回复数矩阵A+Bi所有特征值组成的向量d.
[V,D]= eig(A,B), 返回复数矩阵A+Bi所有特征值组成的矩阵D和特征向量组成的矩阵V.
例如:
>> clear
(>> format)(>> format rat)
>> A=[0 1 0 0;1 0 0 0;0 0 0 1;0 0 1 0];
>> d=eig(A) %求矩阵A的特征值
d =
1
-1
1
-1
>> %特征值以列向量的形式输出,例如:
>> [V,D]=eig(A) %求矩阵A的特征值与特征向量所组成的矩阵
V =
-0.7071 0 0 0.7071
0.7071 0 0 0.7071
0 -0.7071 0.7071 0
0 0.7071 0.7071 0
D =
-1 0 0 0
0 -1 0 0
0 0 1 0
0 0 0 1
>>%说明(1)矩阵D的主对角线上的元素为特征值,所以方阵A的特征值为-1(二重),1(二重).
>>%说明(2)特征值-1对应的特征向量为V中的第1、2列,即 (-0.7071 0.7071 0 0)T
(0 0 -0.7071 0.7071)T ,其中 为任意常数,
特征值1的特征向量为V中的第3、4列,即 (0 0 0.7071 0.7071)T
( 0.7071 0.7071 0 0)T ,其中 为任意常数。
>> V=sym(V) %以符号的形式输出矩阵V
V =
[ -sqrt(1/2), 0, 0, sqrt(1/2)]
[ sqrt(1/2), 0, 0, sqrt(1/2)]
[ 0, -sqrt(1/2), sqrt(1/2), 0]
[ 0, sqrt(1/2), sqrt(1/2), 0]
>> V^-1*A*V %验证D=V^-1AV
ans =
[ -1, 0, 0, 0]
[ 0, -1, 0, 0]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
3.提高特征值的计算精度
函数 balance
格式 [T,B] = balance(A) %求相似变换矩阵T和平衡矩阵B, 满足 。
B = balance(A) %求平衡矩阵B
4.实对称矩阵的对角化
实对称矩阵的对角化 [P,D]= eig(A) D为对角化后的矩阵,P为正交阵.
在Matlab中,我们运用函数eig求出二次型矩阵A的特征值矩阵D和特征向量矩阵P,所求的矩阵D即为系数矩阵A的标准形,矩阵P即为二次型的变换矩阵.例如:
>> clear
>> A=[2 2 -2;2 5 -4;-2 -4 5]; %实对称矩阵A
>> [P,D]=eig(A) %矩阵A的对角化
P=
-0.2981 0.8944 0.3333
-0.5963 -0.4472 0.6667
-0.7454 0 -0.6667
D =
1.0000 0 0
0 1.0000 0
0 0 10.0000
4.若当标准形
若当标准型可用函数jordan( ) 来求.
J = jordan(A), 其中J为A的若当标准型。例如matlab代码:
>> clear
>> A=[2 1 0;-1 0 0;-1 1 2]; %矩阵A
>> jordan(A) %矩阵A的若当标准形
运算结果为:
ans =
2 0 0
0 1 1
0 0 1
注意:Matlab中若当块是按上三角形定义的。
5.其他相关函数
矩阵的迹 trace(A)
将复对角矩阵转换为实对角矩阵 [V,D]=cdf2rdf(v,d) 在对角线上用2*2实数块代替共轭复数对.
矩阵元素求和函数 sum(A,dim),dim=1则按列求和,dim=2则按行求和
sum(sum(A,1),2) 返回矩阵A的所有元素之和.
矩阵元素求积函数 prod(A,dim),dim=1则按列求积,dim=2则按行求积。
prod(prod(A, 1),2)返回矩阵A的所有元素之积.
【实验内容】
例6-1:求矩阵 的特征值与特征向量
|
,并将其对角化.
解一:
相应的matlab代码及运算结果如下:
>>clear
>> A= [1 2 2;2 1 2; 2 2 1];
>> d=eig(A) %求全部特征值所组成的向量
d =
-1.0000
-1.0000
5.0000
>> [V,D]=eig(A) %求特征值及特征向量所组成的矩阵
V =
0.6015 0.5522 0.5774
0.1775 -0.7970 0.5774
-0.7789 0.2448 0.5774
D =
-1.0000 0 0
0 -1.0000 0
0 0 5.0000
>> inv(V)*A*V
ans =
-1.0000 0 -0.0000
0 -1.0000 -0.0000
-0.0000 0.0000 5.0000
>> %A可对角化,且对角矩阵为D
解二:
相应的matlab代码及运算结果如下:
>> clear
>> A= [1 2 2;2 1 2; 2 2 1];
>> p=poly(A) %矩阵A的特征多项式的向量表示形式
p =
1 -3 -9 -5
>> roots(f) %矩阵A的特征多项式的根,即A的特征值
ans =
5.0000
-1.0000 + 0.0000i
-1.0000 – 0.0000i
解三:
相应的matlab代码及运算结果如下:
>> clear
>> A= [1 2 2;2 1 2; 2 2 1];
>> E=eye(3);
>> syms x
>> f=det(x*E-A) %矩阵A的特征多项式
f =
x^3-3*x^2-9*x-5
>> solve(f) %矩阵A的特征多项式的根,即A的特征值
ans =
5
-1
-1
>> %所以A的特征值为x1=5,x2=x3=-1.
>> %(1)当x1=5时,求解(x1*E—A)X=0,得基础解系
>> syms y
>> y=5;
>> B=y*E-A;
>> b1=sym(null(B)) %b1为(x1*E—A)X=0基础解系
b1 =
sqrt(1/3)
sqrt(1/3)
sqrt(1/3)
>>%所以b1是属于特征值5的特征向量在基下的坐标
>> %(2)当x2=-1时,求解(x2*E—A)X=0,得基础解系
>> y=-1;
>> B=y*E-A;
>> b2=sym(null(B)) %b1为(x2*E—A)X=0基础解系
null(A)齐次线性方程组 A*Z=0的基础解系:
b2 =
[ sqrt(2/3), 0]
[ -sqrt(1/6), -sqrt(1/2)]
[ -sqrt(1/6), sqrt(1/2)]
>> b21=b2(:,1),b22=b2(:,2)
b21 =
sqrt(2/3)
-sqrt(1/6)
-sqrt(1/6)
b22 =
0
-sqrt(1/2)
sqrt(1/2)
%b21,b22是属于特征值-1的特征向量在基下的坐标
>> T=[b1,b2] %所有特征向量在基下的坐标所组成的矩阵
T =
[ sqrt(1/3), sqrt(2/3), 0]
[ sqrt(1/3), -sqrt(1/6), -sqrt(1/2)]
[ sqrt(1/3), -sqrt(1/6), sqrt(1/2)]
>> D=T^-1*A*T %将矩阵A对角化,得对角矩阵D
D =
[ 5, 0, 0]
[ 0, -1, 0]
[ 0, 0, -1]
例6-2:将矩阵 对角化,并将复对角矩阵转换为实对角矩阵
相应的matlab代码及运算结果如下:
>> clear
>> A=[0 2 1;-2 0 3;-1 -3 0];
>> [v,d]=eig(A) %求特征值及特征向量所组成的矩阵
v =
-0.8018 -0.1572 + 0.3922i -0.1572 – 0.3922i
0.2673 -0.6814 -0.6814
-0.5345 -0.1048 – 0.5883i -0.1048 + 0.5883i
d =
0 0 0
0 0 + 3.7417i 0
0 0 0 – 3.7417i
>> [V,D]=cdf2rdf(v,d) %复对角矩阵转换为实对角矩阵
V =
-0.8018 -0.1572 0.3922
0.2673 -0.6814 0
-0.5345 -0.1048 -0.5883
D =
0 0 0
0 0 3.7417
0 -3.7417 0
>>%说明:在对角线上用2×2实数块代替共轭复数对,由D可知A的特征值为1,
3.7417i和-3.7417i.
>> V1=V(:,1),V2=V(:,2),V3=V(:,3); %由V可知A的两个共轭特征向量为V2+ V3*i,即:
>> V2+V3*i
ans =
-0.1572 + 0.3922i
-0.6814
-0.1048 – 0.5883i
>> V2-V3*i
ans =
-0.1572 – 0.3922i
-0.6814
-0.1048 + 0.5883i
例6-3:求例6-1中矩阵A的迹,并验证 .
相应的matlab代码及运算结果如下:
>>clear
>> A= [1 2 2;2 1 2; 2 2 1];
>> a=trace(A) %求矩阵A的迹
a =
3
>> d=eig(A) %求矩阵A的特征值
d =
-1.0000
-1.0000
5.0000
>> b=sum(d,1) %矩阵d元素求和
b =
3
>>%说明:A的所有特征值之和为A的迹
>> e=det(A)
e =
5
>> f=prod(d,1) %矩阵d元素求积,即特征值求积
f =
5
>>%说明:A的行列式值等于所有特征值乘积.
>>%(1)函数sum(A,dim)是矩阵元素求和函数,dim=1则按列求和,dim=2则按行求和。
>>%(2)函数prod(A,dim)是矩阵元素求积函数,dim=1则按列求积,dim=2则按行求积。
例6-4:求矩阵 的若当标准型。
相应的matlab代码及运算结果如下:
>> clear
>> A=[-1 -2 6;-1 0 3;-1 -1 4]
A =
-1 -2 6
-1 0 3
-1 -1 4
>> J=jordan(A) %矩阵A的若当标准形
J =
1 1 0
0 1 0
0 0 1
>>%说明:Matlab中若当块是按上三角形定义的.