资源描述
1,方阵的特征值、特征向量和二次型,实验目的 熟悉利用MATLAB中有关 方阵的迹 方阵的特征值、特征向量 二次型 的操作方法,2,1. 方阵的迹,矩阵A的迹是指矩阵的对角线上元素的和,也 等于矩阵的特征值的和。 命令格式为:trace(A) 例1. 设 ,计算A的迹t. 程序设计 A=1 1 1;2 1 0;1 0 1; t=trace(A) t= 1,3,例2. 设 ,计算A的迹t。 程序设计 A=8 6 5 2;3 2 2 1;4 2 3 1;3 5 1 1; t=trace(A) t= 14,4,2. 方阵的特征值与特征向量,手工计算方阵的特征值与特征向量并不是一件 容易的事,而用MATLAB来计算方阵的特征值与 特征向量只需要一个简单的命令。这里需注意两个 英文单词:eigenvalues(特征值)和 eigenvectors (特征向量)。理解这两个单词,对以下命令的 使用是有好处的。 计算方阵的特征值与特征向量的命令格式为: eig(A) 给出方阵A的所有特征值,5,V, D=eig(A) 给出由方阵A的所有特征值组成的对角 矩阵D和特征向量矩阵V,满足 A*V=V*D, 或者 A=V*D*V-1, 第k个特征值对应的特征向量是V的第k 个列向量。 poly(A) 当A是n阶方阵时,给出的是A的特征 多项式的n+1个按降幂排列的系数。即 特征多项式 |E-A|=DET(lambda*EYE(SIZE(A)-A) 的系数,6,例3. 设 ,计算A的特征值和特征向 量。 程序设计 : A=8 6 5 2;3 2 2 1;4 2 3 1;3 5 1 1 A= 8 6 5 2 3 2 2 1 4 2 3 1 3 5 1 1,7, eig(A) % A的特征值 ans= 13.5891 0.9455 0.1191 -0.6537,8, V, D=eig(A) % A的特征值与特征向量 V= % A的特征向量,列向量 -0.7985 -0.0957 -0.6547 0.1876 -0.3038 0.1230 0.2322 -0.3533 -0.3913 -0.3777 0.7118 -0.2531 -0.3420 0.9127 0.1038 0.8809 D= % 对角元素是A的特征值 13.5891 0 0 0 0 0.9455 0 0 0 0 0.1191 0 0 0 0 -0.6537,9, V*D*inv(V) % 验证A=V*D*V-1 ans= 8.0000 6.0000 5.0000 2.0000 3.0000 2.0000 2.0000 1.0000 4.0000 2.0000 3.0000 1.0000 3.0000 5.0000 1.0000 1.0000 a1=V( : ,1) % 特征值1=13.5891对应的特征向量 a1= -0.7985 -0.3038 -0.3913 -0.3420,10, a2=V( : ,2) % 特征值2=0.9455对应的特征向量 a2= -0.0957 0.1230 -0.3777 0.9127 a3=V( : ,3) % 特征值3=0.1191对应的特征向量 a3= -0.6547 0.2322 0.7118 0.1038,11, a4=V( : ,4) % 特征值4=-0.6537对应的特征向量 a4= 0.1876 -0.3533 -0.2531 0.8809,12, c=poly(A) % A的特征多项式的n+1个按降幂排列的系数 c= Columns 1 through 5 1 -14 5 8 -1 f=poly2sym(c) % 将多项式向量c表示为符号形式 f= x4-14*x3+5*x2+8*x- 9007199254740961/9007199254740992 % f 即为A的特征多项式|E-A|=4-143+52+8-1,13,例4. 设 ,计算A的特征值与特征 向量。 程序设计 A=1 1 1 1;1 1 1 1;1 1 1 1;1 1 1 1; eig(A) % A的特征值 ans= -2.0000 2.0000 2.0000 2.0000,14, V,D=eig(A) % A的特征值与特征向量 V= % A的特征向量,列向量 -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= % 对角线元素是A的特征值 -2.0000 0 0 0 0 2.0000 0 0 0 0 2.0000 0 0 0 0 2.0000,15,c=poly(A) % A的特征多项式的n+1个按降幂排列的系数 c= Columns 1 through 5 1 -4 0 16 -16 f =poly2sym(c) % 将多项式向量c表示为符号形式 f= x4-4*x3+3/1125899906842624*x2+16*x-16 % f 即为A的特征多项式|E-A|=4-43+16-16,16,例5. 设 ,计算正交矩阵 ,使 得 为对角矩阵。 程序设计 A=0 1 1 1;1 0 1 1;1 1 0 1;-1 1 1 0; isequal(A, A ) % 判断A和A是否相等,即A是否是对称矩阵 ans= 1 % A是对称矩阵,17, Q,D=eig(A) % A的特征值与特征向量满足A*Q=Q*D Q= -0.5000 0.2887 0.7887 0.2113 0.5000 -0.2887 0.2113 0.7887 0.5000 -0.2887 0.5774 -0.5774 -0.5000 -0.8660 0 0 D= -3 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1,18,Q ans= -0.5000 0.5000 0.5000 -0.5000 0.2887 -0.2887 -0.2887 -0.8660 0.7887 0.2113 0.5774 0 0.2113 0.7887 -0.5774 0 inv(Q) ans= -0.5000 0.5000 0.5000 -0.5000 0.2887 -0.2887 -0.2887 -0.8660 0.7887 0.2113 0.5774 0 0.2113 0.7887 -0.5774 0 % Q现在是正交矩阵,因为Q =inv(Q),19,Q *A*Q % 得到结果Q *A*Q=D或者A=Q*D*Q ans= -3 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 程序说明:当矩阵A为实对称矩阵时,V,D=eig(A) 给出由方阵A的所有特征值组成的对角矩阵D和特征向量矩阵V,这时的V已经是一个正交矩阵。,20,3. 二次型通过正交变换化为标准型,对任意的实二次型 ,其中 是 阶实对称矩阵,一定可以经过正交的变量替 换 变成标准形 其中,系数 是实对称矩阵 的全部 特征值。 在MATLAB中,可以运用eig命令,计算系 数矩阵 的特征值矩阵 和特征向量矩阵 , 即可得到正交变换 以及二次型的标准型。,21,例6. 计算正交的变量替换 ,化二次型 为标准型。 程序设计 A=1 1 0 1;1 1 1 0;0 1 1 1;-1 0 1 1 % 二次型的系数矩阵 A A= 1 1 0 -1 1 1 -1 0 0 -1 1 1 -1 0 1 1,22, syms x1 x2 x3 x4; % 变量声明 X=x1 x2 x3 x4 X = conj(x1) conj(x2) conj(x3) conj(x4) f =X *A*X % 二次型 f = (x1+x2-x4)*conj(x1)+(x1+x2-x3)*conj(x2)+(- x2+x3+x4)*conj(x3)+(-x1+x3+x4)*conj(x4) % 对于一个复数X,CONJ(X)=REAL(X)-I*IMAG(X),即X的复共轭,23, P,D=eig(A) % 计算系数矩阵A的特征值矩阵D和特征向量矩阵P P= % 特征向量矩阵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 D= % 特征值矩阵D -1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 3.0000,24, syms y1 y2 y3 y4; % 变量声明 Y=y1;y2;y3;y4 Y= y1 y2 y3 y4,25, X=P*Y % 正交变换X=PY X= -1/2*y1+1/2*2(1/2)*y2+29/144115188075855872*y3+1/2*y4 1/2*y1- 5822673418478107/40564819207303340847894502572032*y2+ 1/2*2(1/2)*y3+1/2*y4 1/2*y1+1/2*2(1/2)*y2+3/144115188075855872*y3-1/2*y4 -1/2*y1+1/2*2(1/2)*y3-1/2*y4 f =Y *D*Y % 二次型的标准型 f = -conj(y1)*y1+conj(y2)*y2+conj(y3)*y3+3*conj(y4)*y4,26,例7. 计算正交的变量替换 ,化二次型 为标准型。 程序设计 A=4 2 2;2 4 2;2 2 4 % 二次型的系数矩阵 A= 4 2 2 2 4 2 2 2 4 format short,27, P,D=eig(A) % 计算系数矩阵A的特征值矩阵D和特征向量矩阵P P= 0.4082 0.7071 0.5774 0.4082 -0.7071 0.5774 -0.8165 0 0.5774 D= 2.0000 0 0 0 2.0000 0 0 0 8.0000,28, syms x1 x2 x3 y1 y2 y3; % 变量声明 X=x1;x2;x3; Y=y1;y2;y3; X=P*Y % 正交变换X=PY X= 1/6*6(1/2)*y1+1/2*2(1/2)*y2+1/3*3(1/2)*y3 1/6*6(1/2)*y1-1/2*2(1/2)*y2+1/3*3(1/2)*y3 -1/3*6(1/2)*y1+1/3*3(1/2)*y3 f=Y *D*Y % 二次型的标准型 f = 2*y1*conj(y1)+2*y2*conj(y2)+8*y3*conj(y3),29,4. 二次型的正定性判定,实二次型 称为正定二次型,如果对 任何 ,都有 。 正定二次型的矩阵称为正定矩阵。 判定二次型为正定的充分必要条件是,它的 系数矩阵A的特征值全部为正,或者A的各阶主子 为正。 在MATLAB中,可以运用eig命令计算系数矩 阵A的特征值矩阵D或者计算A的各阶主子式来进 行判定。,30,例8. 判定二次型 的正定性。 程序设计: example8.m clear all % 清除各种变量 A=2 2 2;2 5 4;-2 4 5 D=eig(A) if all(D0) fprintf(二次型正定 ) else fprintf(二次型非正定 ) end,31,运行结果: A= 2 2 -2 2 5 -4 -2 -4 5 D= 1.0000 1.0000 10.0000 二次型正定,32,例9. 利用主子式法判定二次型 的正定性。 程序设计:example9.m clear all A=1 1 2 1;-1 3 0 3;2 0 9 6;1 3 6 19 c=1;,33,for i=1:4 fprintf(第%d阶主子式为, i ) B=A(1:i,1:i) fprintf(第%d阶主子式的值为, i ) det(B) if (det(B)0) c=-1; break end end if(c=-1) fprintf(判定的结论:二次型非正定 ) else fprintf(判定的结论:二次型正定 ) end,34,执行的结果: A= 1 -1 2 1 -1 3 0 -3 2 0 9 -6 1 -3 -6 19 第1阶主子式为 B= 1 第1阶主子式的值为 ans= 1,35,第2阶主子式为 B= 1 -1 -1 3 第2阶主子式的值为 ans= 2 第3阶主子式为 B= 1 -1 2 -1 3 0 2 0 9,36,第3阶主子式的值为 ans= 6 第4阶主子式为 B= 1 -1 2 1 -1 3 0 -3 2 0 9 -6 1 -3 -6 19 第4阶主子式的值为 ans= 24 判定的结论:二次型正定,37,例10. 判定二次型 的正定性。 程序设计:example10.m clear all A=10 4 12;4 2 14;12 14 1 c=1; for i=1:3 fprintf(第%d阶主子式为, i ) B=A(1:i,1:i) fprintf(第%d阶主子式的值为, i ),38,det(B) if (det(B)0) c=-1; break end end if (c=-1) fprintf(判定的结论:二次型非正定 ) else fprintf(判定的结论:二次型正定 ) end,39,执行的结果: A= 10 4 12 4 2 -14 12 -14 1 第1阶主子式为 B= 10 第1阶主子式的值为 ans= 10 第2阶主子式为,40,B= 10 4 4 2 第2阶主子式的值为 ans= 4 第3阶主子式为 B= 10 4 12 4 2 -14 12 -14 1 第3阶主子式的值为 ans= -3588 判定的结论:二次型非正定,
展开阅读全文