1、在MATLAB中变成实现的QR基本算法的函数为:qrtz功能:QR基本算法求矩阵全部特征值。调用格式:l=qrtz(A,M).其中,A为已知矩阵;M为迭代步数;L为矩阵A的全部特征值。QR基本算法的流程图: QR基本算法的MATLAB程序代码如下:function l=qrtz(A,M)for i=1:M q,r=qr(A); A=r*q; l=diag(A);endtask11.mformat longA=1,5,6;4,7,0;8,11,3l=qrtz(A,20)disp()l=eig(A) 运行过程和结果:2.位移QR算法位移QR法是为了加快QR算法的收敛速度,其算法的迭代过程如下:给定
2、循环步数M,A1=Hessenberg(A),k=1,2,M,选择k,然后计算:Ak-kI=QkRkAk+1= QkQk+kI一般k的选择有以下两种考虑方法:(1)选k=k,即瑞利商位移;(2)迭代过程中,如果子矩阵的两个特征值为实数时,选最接近ak n,n的那个作为k,即威尔森位移瑞利商位移QR法流程图如下:在MATLAB中编程实现的瑞利商位移的QR算法的函数为:rqrtz。瑞利商位移的QR算法求矩阵全部特征值。T=rqrt(A,M)其中,A为已知矩阵:l为矩阵A的全部特征值瑞利商位移的QR算法的MATLAB程序如下:function l=rqrtz(A,M)%瑞利商位移QR算法求矩阵全部特
3、征向量%已知矩阵:A; 迭代步数:M; 求得的矩阵:l;A=hess(A);N=size(A);n=N(1,1); u=A(n,n); q,r=qr(A-u*eye(n,n); A=r*q+u*eye(n,n);end;l=diag(A);威尔金森位移的QR算法流程图如下:输入矩阵A,步数M在MATLAB中编程实现的威尔金森位移的QR算法的函数为:wilkqrtz威尔金森的QR算法求矩阵全部特征值。T=wilkqrtz(A,M)威尔金森的QR算法的MATLAB程序如下:function l=wilkqrtz(A,M)%威尔金森位移的QR算法求矩阵全部特征值 求的矩阵特征值:l A1=A(n-1
4、):n,(n-1):n); t=Chapoly(A1); if(imag(t(1,1)=0&imagt(2,1)=0)%两特征值是否为实数 if(abs(t(1,1)-A(n,n) x=37.0 37.5 38.0 38.5 39.0 39.5 40.0 40.5 41.0 41.5 42.0 42.5 43.0;y=3.40 3.00 3.00 2.27 2.10 1.83 1.53 1.70 1.80 1.90 2.35 2.54 2.90; a,b=polyfit(x,y,1)得结果为a = -0.1070 6.6136b = R: 2x2 double df: 11normr: 1.9235因此y与x之间的回归方程为 y=-0.107x+6.6136