数学实验“矩阵特征值及相应特征向量的Jacobi法,QR法”实验报告(内含matlab程序)
- 格式:doc
- 大小:27.00 KB
- 文档页数:4
基于QR分解迭代求解方阵特征值和特征向量一、特征值与特征向量求解的难点线性代数的知识告诉我们如果要求一个方阵的特征值,只需要求解如下的特征方程的根即可:但是在具体程序中,如何去求解一个高次的多项式方程的根本身就是一个难点,它的实现甚至要比求得特征值还要复杂。
因此,线性代数中这种用来手算的方法很明显不适合程序实现。
那么,我们该如何去编写程序求解特征值呢?二、QR迭代法求解特征值的原理经过搜集相关资料,已知在计算机编程领域求解特征值一般有两种比较常见的算法,一种是雅可比(Jacobi)迭代法,另一种就是我们要讲的QR迭代法,这两种算法本质上都是去不断迭代,通过逼近的方法去求得特征值。
雅可比方法有一个弊端,就是他只能求解实对称矩阵的特征值,适用面比较窄,但是QR分解迭代法可以求解任意矩阵的特征值,而且实现上更加接近我们线性代数课程的知识,因此下面介绍QR分解迭代法求解特征值的原理。
理论依据:任意一个非奇异矩阵(满秩的方阵)都可以分解为一个正交矩阵和一个上三角矩阵的乘积,且当对角元符号确定时,分解是唯一的。
QR分解是一种迭代方法,迭代格式如下:当基本上收敛到上三角矩阵的时候,迭代完成,此时主对角线元素就是特征值。
特别的:当是实对称矩阵时,是对角阵,就是其标准正交的特征向量矩阵,且有。
那么我们该如何去理解上述原理呢?下面进行简要的推导。
不妨令,对进行QR分解得到:令,很明显,对再进行QR分解:继续令,可以看到,同理,我们不断去进行QR分解,最终就会得到:因此,与拥有相同的特征值。
特别的,当时,有,将记作,那么和就分别是正交的特征向量矩阵和对角线元素为特征值的对角阵。
有了上述理论介绍,我们已经知道了如何去进行QR迭代求特征值,下面马上又有一个问题摆在了我们面前——如何用程序去做QR分解呢?三、QR分解的初等变换法QR分解有三种常用的算法:Gram-Schmidt正交化(线性代数讲授的方法)、初等变换法、Givens 变换法。
实验名称实验8实验地点6A-XXX 实验类型设计实验学时 2 实验日期20 /X/X ★撰写注意:版面格式已设置好(不得更改),填入内容即可。
一、实验目的
1.Jacobi法求实对称矩阵的特征值及特征向量
二、实验内容
1.实验任务
1.Jacobi法求实对称矩阵的特征值及特征向量
2.程序设计
1)数据输入(输入哪些数据、个数、类型、来源、输入方式)
double a[N][N], int n
2)数据存储(输入数据在内存中的存储)
函数
void Jacobi(double a[N][N], int n)
3)数据处理(说明处理步骤。
若不是非常简单,需要绘制流程图)
1.输入要处理的数据进入变量中
2.进行函数处理
3.输出函数处理结果
4)数据输出(贴图:程序运行结果截图。
图幅大小适当,不能太大)
三、实验环境
1.操作系统:WINDOWS 7及以上
2.开发工具:VS 2015
3.实验设备:PC。
数学实验“矩阵特征值及相应特征向量的Jacobi法,QR法”实验报告(内含matlab程序)西京学院数学软件实验任务书课程名称数学软件实验班级数0901 学号0912020107 姓名李亚强实验课题矩阵特征值及相应特征向量的Jacobi法,QR法实验目的熟悉矩阵特征值及相应特征向量的Jacobi法,QR法运用Matlab/C/C++/Java/Maple/Mathematica等其中实验要求一种语言完成实验内容矩阵特征值及相应特征向量的Jacobi法,QR法成绩教师实验十三实验报告一、实验名称:矩阵特征值及相应特征向量的Jacobi法,QR法。
二、实验目的:熟悉矩阵特征值及相应特征向量的Jacobi法,QR 法。
三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。
四、实验内容:%矩阵特征值及相应特征向量的Jacobi法function [D,R]=Jacobi(A,eps)if nargin==2eps=1.0e-5;endn=length(A);R=eye(n);while 1Amax=0;for l=1:n-1for k=l+1:nif abs(A(l,k))>AmaxAmax=abs(A(l,k));i=l;j=k;endendendif Amax<eps< p="">break;endd=(A(i,i)-A(j,j))/(2*A(i,j));if abs(d)<1e-10t=1;elset=sign(d)/(abs(d)+sqrt(d^2+1));endc=1/sqrt(t^2+1);s=c*t;for l=1:nif l==iAii=A(i,i)*c^2+A(j,j)*s^2+2*A(i,j)*s*c; Ajj=A(i,i)*s^2+A(j,j)*c^2-2*A(i,j)*s*c;A(i,j)=(A(j,j)-A(i,i))*s*c+A(i,j)*(c^2-s^2);A(j,i)=A(i,j);A(i,i)=Aii;A(j,j)=Ajj;elseif l~=jAil=A(i,l)*c+A(j,l)*s;Ajl=-A(i,l)*s+A(j,l)*c;A(i,l)=Ail;A(l,i)=Ail;A(j,l)=Ajl;A(l,j)=Ajl;Rli=R(l,i)*c+R(l,j)*s;Rlj=-R(l,i)*s+R(l,j)*c;R(l,i)=Rli;R(l,j)=Rlj;endendD=diag(diag(A));%矩阵特征值及相应特征向量的QR法function l=qrtz(A,M)for(i=1:M)[q,r]=qr(A);A=r*q;l=diag(A);end五、实验结果:>> A=[3 4 3;1 2 4;7 6 2];>> esp=10^(-6);>> [D,R]=Jacobi(A,eps)D =9.6873 0 00 -2.2229 00 0 -0.4644R =0.5970 -0.2958 -0.74570.5922 0.7895 0.16090.5411 -0.5377 0.6465>> A=[3 4 3;1 2 4;7 6 2];>> M=10^2;>> l=qrtz(A,M)10.3687 -2.6373 -0.7314 </eps<>。
矩阵特征值与特征向量的求法一、矩阵特征值与特征向量的定义矩阵特征值(eigenvalue)是指一个矩阵在某个非零向量上的线性变换结果等于该向量的常数倍,这个常数就是该矩阵的特征值。
而对应于每个特征值,都有一个非零向量与之对应,这个向量就是该矩阵的特征向量(eigenvector)。
二、求解矩阵特征值与特征向量的方法1. 特征多项式法通过求解矩阵A减去λI(其中λ为待求解的特征值,I为单位矩阵)的行列式det(A-λI)=0来求解其特征值。
然后将每个特征值代入到(A-λI)x=0中,即可求得对应的特征向量x。
2. 幂法幂法是一种迭代方法,通过不断地将A作用于一个初始向量x上,并将结果归一化,最终得到收敛到最大(或最小)特征值所对应的特征向量。
具体步骤如下:(1) 选取任意一个非零初始向量x;(2) 将Ax除以x中最大元素得到新的向量y=A*x/max(x);(3) 将y归一化得到新的向量x=y/||y||;(4) 重复步骤2-3,直到收敛。
3. QR分解法QR分解是将矩阵A分解为Q和R两个矩阵的乘积,其中Q是正交矩阵(即Q^T*Q=I),R是上三角矩阵。
通过不断地对A进行QR分解,并将得到的Q和R相乘,最终得到一个上三角矩阵T。
T的对角线元素就是A的特征值,而对应于每个特征值,都可以通过反推出来QR分解中的Q所对应的特征向量。
4. Jacobi方法Jacobi方法也是一种迭代方法,通过不断地施加相似变换将A转化为对角矩阵D。
具体步骤如下:(1) 选取任意一个非零初始矩阵B=A;(2) 找到B中绝对值最大的非对角元素b(i,j),记其位置为(i,j);(3) 构造Givens旋转矩阵G(i,j,k),使其作用于B上可以消去b(i,j),即B=G^T*B*G;(4) 重复步骤2-3,直到所有非对角元素均趋近于0。
三、总结以上介绍了求解矩阵特征值与特征向量的四种方法:特征多项式法、幂法、QR分解法和Jacobi方法。
矩阵特征值计算实验专业:数学与应用数学 年级:09级 班级:AS09101 学号:AS0910136 姓名:张书敏一、 实验目的1.通过这个实验,学会使用幂法,反幂法,jacobi 方法,QR 方法求解矩阵的特征值和特征向量;2.理解求矩阵特征值和特征向量的幂法、反幂法、Jacobi 方法、QR 方法的构造和求解过程,学习计算机编程技术。
二、 实验题目8.1 编制幂法的MA TLAB 程序,计算下列矩阵按模最大特征值和相应的特征向量,(2)31013-3034A -⎛⎫ ⎪=- ⎪ ⎪-⎝⎭8.2已知矩阵⎪⎪⎪⎭⎫ ⎝⎛=111132126A有一个近似的特征值-6.42λ≈,用反幂法编制MA TLAB 程序计算相应的特征向量,并改进特征值的精度.8.3 用Jacobi 方法编制MA TLAB 程序,计算下列矩阵的全部特征值:(2)B= 4-1-14-1-14-1-14⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦8.4 用基本QR 方法编制MATLAB 程序,计算下列矩阵的全部特征值:(2) 0122230130121230B ⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭三、 实验原理1.幂法:步1 输入矩阵A,初始向量y0,误差项ε,最大迭代次数N.步2 置k:=1,u:=0,x0=y0/∞||0||y ;步3 计算;1-=k k Ax y步4 计算|][|max |][|1i k ni r k y y ≤≤= 其中i k y ][表示向量k y 的第i 个分量,并置k k k r k k m y x y m /:,][:==步5 若|k m -u|<ε, 停算,输出k m ,k x ;否则,转步6;步6 若k<N,置k:=k+1,u:=k m ,转步3;否则,输出计算失败;2.反幂法:步1 输入矩阵A,初始向量x0,近似值a,误差项ε,最大迭代次数N.步2 置k:=1,u:=1;步3 作列主元LU 分解P(A-aI)=LU;步4 计算;][:|,][|max |][|1r k i k ni r k x m x x ==≤≤ 步5 计算x 的新值:y=x/m,Lz=Py,Ux=z;步6 若|11|u m -<ε, 则置x ,1:,输出λλma +=,停算,否则,转步7; 步7 若k<N,置k:=k+1,u:=m ,转步3;否则,输出计算失败;3.QR 方法步骤:(1) 输入矩阵A;(2) 初始化:A1为A 的拟上三角形矩阵;(3) 迭代过程:对于k=1,2,….Ak=QkRk(QR 分解); Ak+1=Qk^TAkQk=RkQk(正交相似变换)四、 实验内容8.1 幂法1.1实验步骤:打开matlab软件,新建一个名为mapower.m的M文件,编写程序(见1.2实验程序如下),运行程序,记录结果。
四.实验代码:function [H,B]=Hessenberg(A) n=length(A);B=eye(n);for k=1:n-2X=zeros(n-k,1);H=eye(n);for i=1:n-kX(i)=A(i+k,k);enda=max(abs(X));if a==0.0breakendX=X/a;c=X(1);b1=sqrt(sum(X.^2));if X(1)>=0b1=-b1;endX(1)=X(1)-b1;b=b1^2-b1*c;H0=eye(n-k)-X*X'/b;for i=1:n-kfor j=1:n-kH(i+k,j+k)=H0(i,j);end endA=H*A*H;B=B*H;endH=A;一.实验题目:QR方法求矩阵的特征和特征向量二.设计目的:学会利用镜面变换进行矩阵的QR分解及利用将幂法求特征值和特征向量,熟悉Matlab编程环境。
三.设计原理:利用镜像变换将A相似变换为Hessenberg B矩阵。
记录变换矩阵。
运用Householder矩阵进行QR分解,QR方法为:B1=BB1=Q1R1B2=R1Q1....Bm=QmRmBm+1=RmQmBm+1与Bm相似,从而特征值相等。
再利用原点位移的反幂法求B(或A)的特征向量。
反幂法用来计算矩阵按模最小的特征值及其特征向量,也可用来计算对应与一个给定近似特征值的特征向量。
设A∈R n×n为非奇异矩阵,A的特征值依次记为|λ1|≥|λ2|≥|λ3|≥…≥|λn|,相应的特征向量为x1 ,x2,…,x n,则A-1的特征值为|1/λn|≥|1/λn-1|≥…≥|1/λ1 | ,相应的特征向量为x n ,x.所以计算A的按模最小的特征值λn的问题就是计算n-1,…,x1A-1的按模最大的特征值问题。
对于A-1应用幂法迭代(称为反幂法),可求得矩阵A-1的主特征值1/λn,从而求得A的按模最小的特征值λn。
一、引言Jacobi方法是一种用于计算矩阵特征值和特征向量的迭代数值方法。
它是数值线性代数中的重要算法之一,广泛应用于科学计算、工程技术和金融领域。
本文将通过一个例题来介绍Jacobi方法的原理和求解过程,并分析其在实际问题中的应用。
二、Jacobi方法的原理Jacobi方法是一种通过迭代对矩阵进行相似变换,使得原矩阵逐步转化为对角矩阵的方法。
通过数值迭代,可以逐步逼近矩阵的特征值和对应的特征向量。
其基本原理如下:1. 对称矩阵特征值问题:对于对称矩阵A,存在一个正交矩阵P,使得P^T * A * P = D,其中D为对角矩阵,其对角线上的元素为A的特征值。
所以我们可以通过迭代找到P,使得P逼近正交矩阵,从而逼近A的特征值和特征向量。
2. Jacobi迭代:Jacobi方法的基本思想是通过正交相似变换,逐步将矩阵对角化。
具体来说,对于矩阵A,找到一个旋转矩阵G,使得A' = G^T * A * G为对角矩阵,然后递归地对A'进行相似变换,直到达到精度要求。
三、Jacobi方法求解特征值和特征向量的例题考虑以下矩阵A:A = [[4, -2, 2],[-2, 5, -1],[2, -1, 3]]我们将通过Jacobi方法来计算矩阵A的特征值和特征向量。
1. 对称化矩阵我们需要对矩阵A进行对称化处理。
对称化的思路是找到正交矩阵P,使得P^T * A * P = D,其中D为对角矩阵。
我们可以通过迭代找到逼近P的矩阵序列,直到达到一定的精度。
2. Jacobi迭代在Jacobi迭代的过程中,我们需要找到一个旋转矩阵G,使得A' =G^T * A * G为对角矩阵。
具体的迭代过程是:找到矩阵A中绝对值最大的非对角元素a[i][j],然后构造一个旋转矩阵G,将a[i][j]置零。
通过迭代地对A'进行相似变换,最终使得A'的非对角元素逼近零,即达到对角化的目的。
3. 计算特征值和特征向量经过一定次数的Jacobi迭代后,得到了对称矩阵A的对角化矩阵D和正交矩阵P。
西京学院数学软件实验任务书
实验十三实验报告
一、实验名称:矩阵特征值及相应特征向量的Jacobi法,QR法。
二、实验目的:熟悉矩阵特征值及相应特征向量的Jacobi法,QR 法。
三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成程序设计。
四、实验内容:
%矩阵特征值及相应特征向量的Jacobi法
function [D,R]=Jacobi(A,eps)
if nargin==2
eps=1.0e-5;
end
n=length(A);
R=eye(n);
while 1
Amax=0;
for l=1:n-1
for k=l+1:n
if abs(A(l,k))>Amax
Amax=abs(A(l,k));
i=l;j=k;
end
end
end
if Amax<eps
break;
end
d=(A(i,i)-A(j,j))/(2*A(i,j));
if abs(d)<1e-10
t=1;
else
t=sign(d)/(abs(d)+sqrt(d^2+1));
end
c=1/sqrt(t^2+1);
s=c*t;
for l=1:n
if l==i
Aii=A(i,i)*c^2+A(j,j)*s^2+2*A(i,j)*s*c; Ajj=A(i,i)*s^2+A(j,j)*c^2-2*A(i,j)*s*c;
A(i,j)=(A(j,j)-A(i,i))*s*c+A(i,j)*(c^2-s^2);
A(j,i)=A(i,j);
A(i,i)=Aii;
A(j,j)=Ajj;
elseif l~=j
Ail=A(i,l)*c+A(j,l)*s;
Ajl=-A(i,l)*s+A(j,l)*c;
A(i,l)=Ail;A(l,i)=Ail;
A(j,l)=Ajl;A(l,j)=Ajl;
end
Rli=R(l,i)*c+R(l,j)*s;
Rlj=-R(l,i)*s+R(l,j)*c;
R(l,i)=Rli;
R(l,j)=Rlj;
end
end
D=diag(diag(A));
%矩阵特征值及相应特征向量的QR法
function l=qrtz(A,M)
for(i=1:M)
[q,r]=qr(A);
A=r*q;
l=diag(A);
end
五、实验结果:
>> A=[3 4 3;1 2 4;7 6 2];
>> esp=10^(-6);
>> [D,R]=Jacobi(A,eps)
D =
9.6873 0 0
0 -2.2229 0
0 0 -0.4644
R =
0.5970 -0.2958 -0.7457
0.5922 0.7895 0.1609
0.5411 -0.5377 0.6465
>> A=[3 4 3;1 2 4;7 6 2];
>> M=10^2;
>> l=qrtz(A,M)
l =
10.3687
-2.6373
-0.7314。