600 likes | 810 Views
实验三. 矩阵的特征值和特征向量 二次型. 实验目的. 1 、学会用 MATLAB 软件求矩阵的特征值和特征向量. 2 、学会用 MATLAB 软件将二次型化为标准型. 3 、通过用 MATLAB 软件编程来判断二次型的正定性. 一、特征值与特征向量. 用 Matlab 计算特征值和特征向量的命令如下:. d=eig(A). 仅计算 A 的特征值 ( 以向量形式 d 存放 ). 其中: D 为由特征值构成的对角阵, V 为由特征向量作为列向量构成的矩阵。且使 AV = VD 成立. [V,D]=eig(A). trace(A). 计算矩阵 A 的迹.
E N D
实验三 矩阵的特征值和特征向量 二次型
实验目的 1、学会用MATLAB软件求矩阵的特征值和特征向量 2、学会用MATLAB软件将二次型化为标准型 3、通过用MATLAB软件编程来判断二次型的正定性
用Matlab计算特征值和特征向量的命令如下: d=eig(A) 仅计算A的特征值(以向量形式d存放) 其中:D为由特征值构成的对角阵,V为由特征向量作为列向量构成的矩阵。且使 AV=VD 成立 [V,D]=eig(A) trace(A) 计算矩阵A的迹
例1:求方阵 的特征值、特征向量和迹 解: >> A=[2 2 -2;2 5 -4;-2 -4 5]; >> [V D]=eig(A) >> trace(A)
V = -0.2981 0.8944 0.3333 -0.5963 -0.4472 0.6667 -0.7454 0 -0.6667 >> trace(A) ans = 12 D = 1.0000 0 0 0 1.0000 0 0 0 10.0000
答: 特征值为:
例2:求方阵 的特征值、特征向量和迹 解: >> A=[4 6 0;-3 -5 0;-3 -6 1]; >> [V D]=eig(A) >> trace(A)
例3:判断下列方阵是否可对角化。若可对角 化,求出可逆阵P,使P-1AP为对角阵。
解(1): >> A=[4 6 0;-3 -5 0;-3 -6 1]; >> [V D]=eig(A) ans = 3 >> rank(V) V = 0 0.5774 -0.8944 0 -0.5774 0.4472 1.0000 -0.5774 0 D = 1 0 0 0 -2 0 0 0 1 答:A可对角化,且
解(2): >> A=[0 1 0;-1 2 0;-1 1 1]; >> [V D]=eig(A) ans = 2 >> rank(V) V = 0 0.6325 0.4511 0 0.6325 0.4511 1.0000 0.4472 0.7701 D = 1 0 0 0 1 0 0 0 1 答:A不可对角化。
下述函数可用来判断矩阵是否可对角化,若可对角化返回1,否则返回0。下述函数可用来判断矩阵是否可对角化,若可对角化返回1,否则返回0。
return; end d=e(1); f=sum(abs(e-d)<10*eps); g=n-rank(A-d*eye(n)); if f~=g y=0; return; end e(find(abs(e-d)<10*eps))=[ ]; end function y=trigle(A) %可对角化返回1,否则返回0。 y=1;c=size(A); if c(1)~=c(2) y=0; return; end e=eig(A);n=length(A); while 1 if isempty(e)
function y=trigle(A) %可对角化返回1,否则返回0。 y=1;c=size(A); if c(1)~=c(2) y=0; return end e=eig(A);n=length(A); while 1 if isempty(e) %若为空阵则为真
return; end d=e(1); f=sum(abs(e-d)<10*eps); %特征值d的代数重数 g=n-rank(A-d*eye(n)); %特征值d的几何重数 if f~=g y=0; return; end e(find(abs(e-d)<10*eps))=[ ]; end
例4:判断下列方阵是否可对角化。若可对角 化,求出可逆阵P,使P-1AP为对角阵。
解(1): >> A=[4 -3 1 2;5 -8 5 4;6 -12 8 5;1 -3 2 2] ans = 0 >> trigle(A) 答:A不可对角化。 解(2): >> A=[1 1 1 1;1 1 –1 –1;1 –1 1 –1 ;1 –1 –1 1]; >> trigle(A) ans = 1 >> [P D]=eig(A)
P = -0.5000 0.2113 0.2887 0.7887 0.5000 0.7887 -0.2887 0.2113 0.5000 -0.5774 -0.2887 0.5774 0.5000 0 0.8660 0 D = -2.0000 0 0 0 0 2.0000 0 0 0 0 2.0000 0 0 0 0 2.0000 答:A可对角化,且
例5:判断下列矩阵是否对称 解: A=[1 3 4 6;3 7 9 5;4 9 4 1;6 5 1 0]; B=A'; if(A==B) fprintf('A是对称矩阵') elseif(A==-B) fprintf('A是反对称矩阵') else fprintf('A既不是对称矩阵,也不是反对称矩阵') end A是对称矩阵
Matlab中二次型化成标准形的命令为: [ P , T ] = schur (A) [ P , T ] = eig (A) 其中: A 二次型矩阵(即实对称矩阵); T 为 A 的特征值所构成的对角形矩阵; P 为 T 对应的正交变换的正交矩阵 , P 的列向量为 A的特征值所对应的特征向量
例6:求一个正交变换,将二次型 化成标准形 解:该二次型所对应的矩阵为
>> A = [1 1 0 –1; 1 1 –1 0; 0 –1 1 1;-1 0 1 1]; >> [ P , T ] = schur (A) [ P , T ] = eig (A) P = -0.5000 0.7071 0.0000 0.5000 0.5000 -0.0000 0.7071 0.5000 0.5000 0.7071 0.0000 -0.5000 -0.5000 0 0.7071 -0.5000
T = -1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 3.0000 答:所作的正交变换为: 二次型的标准型为:
例7:求一个正交变换,将二次型 化成标准形 解:该二次型所对应的矩阵为
>> A = [4 –2 2;-2 1 –1/2;2 –1/2 1]; >> [ P , T ] = schur (A) P = 0.5458 -0.0000 0.8379 0.5925 0.7071 -0.3859 -0.5925 0.7071 0.3859
T = -0.3423 0 0 0 0.5000 0 0 0 5.8423 答:所作的正交变换为: 二次型的标准型为:
1. 顺序主子式判断法 ⑴ 求二次型 F=X’AX 的矩阵 A 的各阶顺序 主子式 Di (i=1,2,3…..); ⑵判断 Di是否大于0 . 程序:建立函数文件 shxu.m
function [C,M] =shxu(A) % C为A的各阶顺序主子式组成的向量 % M为判定向量: if C(i)>0, then M(i)=1; % others M(i)=0 n=size(A); C=[ ]; M=[ ]; for i=1:n(1) A1=A([1:i],[1:i]); D=det(A1); C=[C D]; if D>0 m=1; else m=0; end M=[M,m]; end
⑴ 求二次型 f =X’AX 的矩阵 A 的全部特征 值 (i=1,2,……); ⑵ 判断 是否大于 0 . 2、特征值判别法 程序:建立函数文件 tezh.m
function [ T , M ] = tezh (A) n=size(A); T=(eig(A))’ ; M=[ ]; for i =1:n(1) if T(i)>0 m=1; else m=0; end M=[M,m]; end
例8判定下列二次型是否正定 解 二次型矩阵
方法一 顺序主子式 >> A = [1 –1 2 1;-1 3 0 –3;2 0 9 –6;1 –3 –6 19] ; >> [C,M] = shxu (A) C = 1 2 6 24 M = 1 1 1 1 答:此二次型是正定的。
方法二 特征值法 >> A = [ 1 –1 2 1;-1 3 0 –3;2 0 9 –6;1 –3 –6 19] >> [ T , M ] = tezh (A) T = 0.0643 2.2421 7.4945 22.1991 M = 1 1 1 1 答:此二次型是正定的。
例9判定下列二次型是否正定 解 二次型矩阵
方法一 顺序主子式 >> A = [9 –6 24;-6 130 –30;24 –30 71] ; >> [C,M] = shxu (A) C = 9 1134 6174 M = 1 1 1 答:此二次型是正定的。
方法二 特征值法 >> A = [9 –6 24;-6 130 –30;24 –30 71] ; >> [ T , M ] = tezh (A); T = 0.6576 65.0894 144.2530 M = 1 1 1 答:此二次型是正定的。
例10判定下列二次型是否正定 解 二次型矩阵
方法一 顺序主子式 >> A = [10 4 12;4 2 –14;12 –14 1] ; >> [C,M] = shxu (A) C = 10 4 -3588 M = 1 1 0 答:此二次型不是正定的。
方法二 特征值法 >> A = [10 4 12;4 2 –14;12 –14 1] ; >> [ T , M ] = tezh (A) T = -17.4209 10.1708 20.2501 M = 0 1 1 答:此二次型不是正定的。
function [C,M] =shxu1(A) % C为A的各阶顺序主子式组成的向量 % M为判定向量: if C(i)>0, then M(i)=1; if C(i)<0, then M(i)=-1; others M(i)=0 n=size(A); C=[ ]; M=[ ]; for i=1:n(1) A1=A([1:i],[1:i]); D=det(A1); C=[C D]; if D>0 m=1; elseif D<0 m=-1; else m=0; end M=[M,m]; end
function [ T , M ] = tezh1 (A) n=size(A); T=(eig(A))’ ; M=[ ]; for i =1:n(1) if T(i)<0 m=-1; else m=0; end M=[M,m]; end