电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

jacobi旋转法,Jacobi过关法VIP免费

jacobi旋转法,Jacobi过关法_第1页
1/6
jacobi旋转法,Jacobi过关法_第2页
2/6
jacobi旋转法,Jacobi过关法_第3页
3/6
实验名称:项目一Jacobi旋转法,Jacobi过关法实验题目:用Jacobi旋转法,Jacobi过关法计算下面矩阵A的全部特征值以及特征向量2-100实验过程:1、Jacobi旋转法程序如下:function[EigValMat,EigVecMat]=JocobiRot(A,eps)%本程序是根据jacobi旋转法求实对称矩阵的全部特征值和特征向量%输入变量:A为对称实矩阵,eps为允许误差.P=eye(n);trc=1;%P为旋转矩阵,赋初值为单位阵%trc为矩阵A的非对角元素的平方和,赋初值为num=0;whileabs(trc)>=eps%num设置为累加器,记录迭代的次数%进行正交变换A=PAP'将A的两个绝对值最大的非对角兀素化零,直到所有非对角元素的平方和小于给定的eps,则结束MaxMes=FinMax(A);%寻找绝对值最大的非对角元素的位置及所有非对角元素的平方和l=MaxMes(1);s=MaxMes(2);trc=MaxMes(3);%l为绝对值最大的非对角元素的行号%s为绝对值最大的非对角元素的列号%trc为矩阵A的非对角元素的平方和RotMat=ComRotMat(A,l,s);%计算此次旋转的平面旋转矩阵RotMatA=RotMat*A*RotMat';%对当前A进行一次旋转变换将A的两个绝对值最大的非对角元素化零,并仍记为AP=RotMat*P;num=num+1;end%记录到目前为止所有旋转矩阵的乘积%记录已经进行旋转的次数EigValMat=A;EigVecMat=P;numfunctionMaxMes=FinMax(A)%输出变量:EigValMat为A的特征值,EigVecMat为特征向量n=size(A);n=n(1);%n为矩阵A的阶数%对上三角进行扫描,寻找矩阵A的绝对值最大的非对角元素的位置及所有非对角元素的平方和%输入量:实对称矩阵A%输出量:MaxMes记录矩阵A的绝对值最大的非对角元素的行号列号及所有非对角元素的平方和n=size(A);n=n(1);trc=0;MaxVal=O;%MaxVal记录矩阵A的绝对值最大的非对角元素赋初值为0fori=1:n-1forj=i+1:ntrc=trc+2*A(i,j)人2;ifabs(A(i,j))>MaxValMaxVal=abs(A(i,j));l=i;%l为绝对值最大的非对角元素的行号s=j;%s为绝对值最大的非对角元素的列号endendendMaxMes=[l,s,trc];functionRotMat=ComRotMat(A,l,s)%计算平面旋转矩阵%输入量:实对称矩阵A及矩阵A的绝对值最大的非对角元素的行号l列号s%输出量:旋转的平面旋转矩阵RotMatn=size(A);n=n(1);ifA(l,l)==A(s,s)c1=1/sqrt(2);s1=1/sqrt(2);elsetan2=2*A(l,s)/(A(l,l)-A(s,s));c2=l/sqrt(l+(tan2)人2);s2=tan2*c2;cl=sqrt((l+c2)/2);sl=s2/(2*cl);endRotMat=eye(n);RotMat(l,l)=cl;RotMat(s,s)=cl;RotMat(l,s)=sl;RotMat(s,l)=-sl;2、Jacobi过关法程序如下:n=size(A);n=n(l);P=eye(n);trc=0;num=0;fori=l:n-l%n为矩阵A的阶数%P为旋转矩阵,赋初值为单位阵%trc为矩阵A的非对角元素的平方和,赋初值为0;%num设置为累加器,记录迭代的次数function[EigValMat,EigVecMat]=JocobiGG(A,eps)%本程序是根据jacobi过关法求实对称矩阵的全部特征值和特征向量%输入变量:A为对称实矩阵,eps为允许误差.%输出变量:EigValMat为A的特征值,EigVecMat为特征向量forj=i+1:ntrc=trc+2*A(i,jF2;%计算矩阵A的非对角元素平方和endendr0=trcA(1/2);r1=r0/n;whiler1>=epsfori=1:n-1forj=i+l:nifabs(A(i,j))>=rl%对abs(A(i,j))>=rl的元素进行旋转变换,将A(i,j)化为0,其余元素视为“过关”,不作相应的变换l=i;s=j;RotMat=ComRotMat(A,l,s);A=RotMat*A*RotMat';P=RotMat*P;num=num+l;endend计算此次旋转的平面旋转矩阵RotMat记录到目前为止所有旋转矩阵的乘积记录已经进行旋转的次数endendrl=rl/n;%当所有非对角元素绝对值都小于r1后,缩小阀值EigValMat=A;EigVecMat=P;numfunctionRotMat=ComRotMat(A,l,s)%计算平面旋转矩阵%输入量:实对称矩阵A及矩阵A的绝对值最大的非对角元素的行号l列号s%输出量:旋转的平面旋转矩阵RotMatn=size(A);n=n(l);ifA(l,l)==A(s,s)c1=1/sqrt(2);s1=1/sqrt(2);elsetan2=2*A(l,s)/(A(l,l)-A(s,s));c2=l/sqrt(l+(tan2)人2);s2=tan2*c2;cl=sqrt((l+c2)/2);sl=s2/(2*cl);endRotMat=eye(n);RotMat(l,l)=cl;RotMat(s,s)=cl;RotMat(l,s)=sl;RotMat(s,l)=-sl;实验结果:l、Jacobi旋转法运行结果如下:>>A=[2-l00;-l2-l0;0-l2-l;00-l2];eps=0.000l;[EigValMat,EigVecMat]=JocobiRot(A,eps)num=7EigValMat=0.382000-0.000003.6l80000-0.0000l.382000002....

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

jacobi旋转法,Jacobi过关法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部