【强烈推荐】幂法和反幂法求矩阵特征值_毕业论文
矩阵最大特征值求法

矩阵最大特征值求法矩阵最大特征值求法矩阵最大特征值是矩阵理论中的重要概念,它在很多领域都有广泛的应用,如物理、化学、工程等。
在实际应用中,我们需要求解矩阵的最大特征值和对应的特征向量,以便对矩阵进行分析和处理。
本文将介绍两种常用的矩阵最大特征值求法:幂法和反迭代法。
一、幂法幂法是求解矩阵最大特征值和对应特征向量的一种常用方法。
其基本思想是:对于一个矩阵A,我们可以随机选择一个向量x0,然后通过不断迭代,使得向量x0趋近于矩阵A的最大特征值所对应的特征向量。
具体步骤如下:1. 随机选择一个向量x0,使其满足||x0||=1。
2. 对向量x0进行迭代,得到向量x1,即x1=Ax0。
3. 对向量x1进行归一化,得到向量x2,即x2=x1/||x1||。
4. 重复步骤2和步骤3,直到向量x收敛于矩阵A的最大特征值所对应的特征向量。
在实际应用中,为了提高计算效率,我们可以对向量x进行正交化处理,即每次迭代后,将向量x与前面所有的向量进行正交化,以避免向量的线性相关性对计算结果的影响。
二、反迭代法反迭代法是一种基于幂法的改进算法,它可以求解矩阵的任意一个特征值和对应的特征向量。
其基本思想是:对于一个矩阵A和一个已知的特征值λ,我们可以通过反迭代法,求解出矩阵A中与特征值λ最接近的特征值和对应的特征向量。
具体步骤如下:1. 随机选择一个向量x0,使其满足||x0||=1。
2. 对向量x0进行迭代,得到向量x1,即x1=(A-λI)-1x0,其中I为单位矩阵。
3. 对向量x1进行归一化,得到向量x2,即x2=x1/||x1||。
4. 重复步骤2和步骤3,直到向量x收敛于矩阵A中与特征值λ最接近的特征向量。
在实际应用中,我们可以通过多次迭代,求解出矩阵A中多个特征值和对应的特征向量,以便对矩阵进行更全面的分析和处理。
总结矩阵最大特征值求法是矩阵理论中的重要内容,幂法和反迭代法是常用的求解方法。
在实际应用中,我们需要根据具体情况选择合适的方法,并注意算法的收敛性和计算效率。
数值分析幂法和反幂法

数值分析幂法和反幂法数值分析中的幂法和反幂法是求解矩阵最大特征值和最小特征值的常用方法。
这两种方法在许多数值计算问题中都有着广泛的应用,包括图像压缩、数据降维、谱聚类等。
幂法(Power Method)是一种迭代算法,通过不断迭代矩阵与一个向量的乘积,来逼近原矩阵的最大特征值和对应的特征向量。
其基本思想是,对于一个矩阵A和一维向量x,可以通过不断迭代计算Ax,Ax,Ax...,来使得向量x逼近最大特征值对应的特征向量。
具体的迭代过程如下:1.初始化一个向量x0(可以是单位向量或任意非零向量)2.令x1=Ax0,对向量进行归一化(即除以向量的范数)得到x13.重复步骤2,即令x2=Ax1,x3=Ax2...,直到收敛(即相邻迭代向量的差的范数小于一些阈值)为止4. 最终得到的向量xn就是A的最大特征值对应的特征向量在实际求解时,我们可以将迭代过程中的向量进行归一化,以防止数值溢出或下溢。
此外,为了提高迭代速度,我们可以选择使得xn与xn-1的内积大于0的方向作为迭代方向,这样可以使得特征值的模快速收敛到最大特征值。
幂法的收敛性是保证的,但收敛速度可能较慢,尤其是当最大特征值与其他特征值非常接近时。
此时可能需要使用一些改进的方法来加速收敛,例如Rayleigh商或位移策略。
相反,反幂法(Inverse Power Method)是求解矩阵的最小特征值和对应的特征向量的方法。
它的基本思想和幂法类似,但在每次迭代中,需要计算A和依其逆矩阵A-1的乘积。
迭代过程如下:1.初始化一个向量x0(可以是单位向量或任意非零向量)2.令x1=A-1x0,对向量进行归一化(即除以向量的范数)得到x13.重复步骤2,即令x2=A-1x1,x3=A-1x2...4. 最终得到的向量xn就是A的最小特征值对应的特征向量反幂法和幂法的区别在于迭代过程中乘以了A的逆矩阵,从而可以利用矩阵的特殊结构或性质来提高迭代速度。
同时,在实际求解时,可能需要将矩阵进行一些变换,以确保A-1存在或数值稳定性。
幂法、反幂法求矩阵特征值

#include "stdafx.h"#include "math.h"#define A(i,j) a[i-j+3][j]double a[5][501];inline double vectornorm2(double*b,int n){double sum=0.0;int i;for(i=0;i<n;i++)sum+=b[i]*b[i];return sqrt(sum);}//add the parameter index,because in the powermetod using vector//infinite norm needs to known the index of maximum component of the vector inline double vectornorm8(double*b,int n,int& index){double max=0.0;int i;for(i=0;i<n;i++)if(max<fabs(b[i])){max=fabs(b[i]);index=i;}return max;}//A为系数矩阵,b为返回的特征向量,n为矩阵的阶数,delta为允许误差//幂法计算特征值可以有两种方法,这里用的是向量的无穷范数double powermethod8(int n,double*b,double delta){double*b1;double yita,sum,beta1,beta2;int i,j,k;//初始迭代向量for(i=0;i<n;i++)b[i]=10;b1=new double[n];beta1=0;beta2=1;while(fabs((beta2-beta1)/beta2)>delta){yita=vectornorm8(b,n,k);for(i=0;i<n;i++){b1[i]=b[i]/yita;if(fabs(b1[i])<delta)b1[i]=0;}for(i=0;i<n;i++){sum=0;for(j=0;j<n;j++)if(abs(i-j)<3)sum+=A(i,j)*b1[j];b[i]=sum;}beta1=beta2;beta2=(b1[k]>=0?1:-1)*b[k];}delete[]b1;return beta2;}int maximum(int a1,int b1,int c1) {int max;max=a1;if(b1>max)max=b1;if(c1>max)max=c1;return max;}/////////////////////////*上半带宽s,下半带宽r*/////////////////////////bool sanjiaodai(int n,int s,int r) {int i,j,k,m;double sum;if(A(0,0)==0){printf("第0个主元素为0\n"); return false;}i=0;m=n<(i+r+1)?n:i+r+1;for(i=1;i<m;i++)A(i,0)=A(i,0)/A(0,0);for(i=1;i<n;i++){m=n<(i+s+1)?n:i+s+1;for(j=i;j<m;j++){sum=0;for(k=maximum(0,i-r,j-s);k<i;k++)sum+=A(i,k)*A(k,j);A(i,j)=A(i,j)-sum;}m=n<(i+r+1)?n:i+r+1;for(j=i+1;j<m;j++){sum=0;for(k=maximum(0,i-r,j-s);k<i;k++)sum+=A(j,k)*A(k,i);if(A(i,i)==0){printf("第%d个主元素为0\n",&i);return false;}A(j,i)=(A(j,i)-sum)/A(i,i);}}return true;}bool huidai(int n,int s,int r,double*b){//使用数组b来保存中间变量y,和x的解int i,k;double sum;for(i=1;i<n;i++){sum=0;for(k=(0>i-r?0:i-r);k<i;k++)sum=sum+A(i,k)*b[k];b[i]=b[i]-sum;}b[n-1]=b[n-1]/A((n-1),(n-1));for(i=n-2;i>=0;i--){sum=0;for(k=i+1;k<(n<i+s+1?n:i+s+1);k++)sum+=A(i,k)*b[k];b[i]=(b[i]-sum)/A(i,i);}return true;}//反幂法的每一步迭代都需要求解一个线性方程组,在这里先对A进行LU分解//计算特征值时使用2范数//flag参数表示是否同时求解A的行列式值double inversepowermethod(int n,double* b,double delta,bool flag){double*b1;double yita,beta1,beta2,sum;int i;//初始迭代向量for(i=0;i<n;i++)b[i]=1;b1=new double[n];beta1=0;beta2=1.0;sanjiaodai(n,2,2);if(flag){sum=1;for(i=0;i<n;i++)sum=sum*A(i,i);printf("矩阵A的行列式值为:%.12e\n",sum);}while(fabs((beta2-beta1)/beta2)>delta){yita=vectornorm2(b,n);for(i=0;i<n;i++){b1[i]=b[i]/yita;if(fabs(b1[i])<delta)b1[i]=0;b[i]=b1[i];}huidai(n,2,2,b);beta1=beta2;beta2=0;for(i=0;i<n;i++)beta2+=b1[i]*b[i];}beta2=1.0/beta2;delete[]b1;return beta2;}int main(int argc, char* argv[]){int i,j,k;//获取Adouble lamda1,lamdas,lamda501,miu,lamda,sum;double b[501];for (i=0;i<501;i++)for(j=0;j<501;j++){switch (j-i){case 0:A(i,j)=(1.64-0.024*(i+1))*sin(0.2*(i+1))-0.64*exp(0.1/(i+1));break;case 1:case -1:A(i,j)=0.16;break;case 2:case -2:A(i,j)=-0.064;}}//计算按模最大的特征值,它有可能是lamda1,也有可能是lamda501 //如果大于则是lamda501;否则是lamda1lamda1=powermethod8(501,b,1.0e-12);printf("lamda1= %.12e\n",lamda1);lamdas=inversepowermethod(501,b,1.0e-12,true);printf("lamdas= %.12e\n",lamdas);for (i=0;i<501;i++)for(j=0;j<501;j++){switch (j-i){case 0:A(i,j)=(1.64-0.024*(i+1))*sin(0.2*(i+1))-0.64*exp(0.1/(i+1))+10;break;case 1:case -1:A(i,j)=0.16;break;case 2:case -2:A(i,j)=-0.064;}}lamda501=powermethod8(501,b,1.0e-12);printf("lamda501= %.12e\n",lamda501-10);for(k=0;k<39;k++){miu=lamda1+k*(lamda501-lamda1)/40;for (i=0;i<501;i++)for(j=0;j<501;j++){switch (j-i){case 0:A(i,j)=(1.64-0.024*(i+1))*sin(0.2*(i+1))-0.64*exp(0.1/(i+1))-miu; break;case 1:case -1:A(i,j)=0.16;break;case 2:case -2:A(i,j)=-0.064;}}lamda=inversepowermethod(501,b,1.0e-12,false);printf("lamdai%d= %.12e\n",k,lamda+miu);}printf("A的条件数为:%.12e",fabs(lamda1/lamdas));return 0;}。
幂法反幂法求解矩阵最大最小特征值及其对应的特征向量

幂法反幂法求解矩阵最大最小特征值及其对应的特征向量幂法和反幂法是求解矩阵最大最小特征值及其对应特征向量的常用方法。
在本文中,我们将详细介绍这两种方法的原理和具体实现。
一、幂法(Power Method)幂法是一种迭代算法,用于求解矩阵的最大特征值及其对应的特征向量。
其基本思想是通过多次迭代得到矩阵的一个特征值和特征向量的近似值,并使其逼近真实值。
幂法的原理如下:1.初始化一个非零向量b0作为初始特征向量;2.计算b0的归一化向量b0/,b0,得到新的向量b1;3.计算矩阵A和向量b1的乘积Ab1,得到新的向量b2;4.对b2进行归一化,得到新的向量b3;5.重复步骤3和步骤4,直到b的变化趋于稳定;6.计算矩阵A和向量b的乘积Ab,得到新的向量b;7.特征值的近似值λ=,Ab,/,b。
具体实现如下:1.初始化一个非零向量b0;2.迭代n次进行如下操作:a. 计算bn=A*bn-1;b. 将bn进行归一化,得到bn=bn/,bn;3. 计算特征值的近似值lambda=,A*bn,/,bn;4. 特征向量的近似值vbn=bn。
幂法的优点是计算简单、迭代次数少,但对于含有多个特征值接近的矩阵,可能会收敛到次大特征值。
二、反幂法(Inverse Power Method)反幂法是幂法的拓展,用于求解矩阵的最小特征值及其对应的特征向量。
其基本思想是通过多次迭代得到矩阵的一个特征值和特征向量的近似值,并使其逼近真实值。
反幂法的原理如下:1.初始化一个非零向量b0作为初始特征向量;2.计算b0的归一化向量b0/,b0,得到新的向量b1;3.计算矩阵A的逆矩阵Ai和向量b1的乘积Ai*b1,得到新的向量b2;4.对b2进行归一化,得到新的向量b3;5.重复步骤3和步骤4,直到b的变化趋于稳定;6.计算矩阵A的逆矩阵Ai和向量b的乘积Ai*b,得到新的向量b;7.特征值的近似值λ=,Ai*b,/,b。
具体实现如下:1.初始化一个非零向量b0;2.迭代n次进行如下操作:a. 计算bn=inv(A)*bn-1;b. 将bn进行归一化,得到bn=bn/,bn;3. 计算特征值的近似值lambda=,inv(A)*bn,/,bn;4. 特征向量的近似值vbn=bn。
矩阵特征值快速求法

矩阵特征值快速求法矩阵特征值是矩阵分析中十分重要的概念。
它在物理、工程、数学等许多领域都有着广泛的应用。
矩阵特征值是指矩阵运动时特殊的运动状态,是一种宏观量度矩阵运动的指标。
求解矩阵特征值是一项复杂的任务,通常需要使用高级算法来完成。
本文将介绍几种常用的求解矩阵特征值的算法,其中包括幂法、反幂法、QR算法、分裂Broyden算法等。
一、幂法幂法是求解矩阵特征值的一种基础算法,其基本思想是通过迭代来逐步逼近矩阵的最大特征值。
幂法的核心公式如下:x_(k+1)=A*x_k/||A*x_k||其中,x_k表示第k次迭代中得到的特征向量,A表示原始矩阵。
幂法通过不断的迭代来逼近A的最大特征值,当迭代次数趋近于无限大时,得到的特征向量就是A的最大特征值所对应的特征向量。
幂法的运算量较小,适用于比较简单的矩阵。
反幂法与幂法类似,不同之处在于每次迭代时采用的是A的逆矩阵来进行计算。
其核心公式如下:x_(k+1)=(A-λI)^(-1)*x_k其中,λ表示要求解的特征值。
反幂法能够求解非常接近于特征值λ的特征向量,并且对于奇异矩阵同样适用。
需要注意的是,在实际计算中,如果A-λI的秩不满,那么反幂法就无法使用。
三、QR算法1. 将原矩阵A进行QR分解,得到A=Q*R。
2. 计算A的近似特征矩阵A1=R*Q。
5. 重复步骤3-4,直到A的对角线元素全部趋近于所求特征值为止。
QR算法的计算量较大,但其具有收敛速度快、精度高等优点,广泛应用于科学计算中。
四、分裂Broyden算法分裂Broyden算法是QR算法的一种改进算法,其基本思想是将矩阵分解成上下三角形式,然后再对其进行QR分解,以减少QR算法中的乘法运算量。
具体实现过程如下:2. 构造一个倒数矩阵B=U^(-1)*L^(-1)。
4. 计算A的近似特征矩阵A1=Q^(-1)*L^(-1)*A*R^(-1)*U^(-1)*Q。
分裂Broyden算法的计算量较小,能够有效地解决QR算法中的乘法运算量过大的问题。
计算方法之计算矩阵的特征值和特征量

计算方法之计算矩阵的特征值和特征量计算矩阵的特征值和特征向量是线性代数中的一个重要问题,它在科学研究和工程应用中有着广泛的应用。
本文将介绍计算矩阵特征值和特征向量的方法,包括特征方程法、幂法、反幂法和QR方法。
一、特征值和特征向量的定义给定一个n阶方阵A,如果存在一个非零向量x和一个标量λ,满足以下方程:Ax=λx其中,x被称为A的特征向量,λ被称为A的特征值。
二、特征方程法特征方程法是计算矩阵特征值和特征向量的一种常用方法,其基本思想是通过求解矩阵的特征方程来求得特征值。
对于一个n阶方阵A,其特征方程为:A-λI,=0其中,I是n阶单位矩阵,A-λI,表示A-λI的行列式。
解特征方程可以得到n个特征值λ₁,λ₂,...,λₙ。
然后,将这些特征值带入原方程组(A-λI)x=0,求解线性方程组得到n个特征向量x₁,x₂,...,xₙ。
三、幂法幂法是一种通过迭代来计算矩阵最大特征值和对应的特征向量的方法。
首先,随机选择一个非零向量b₀,并进行归一化,得到单位向量x₀=b₀/,b₀。
然后,通过迭代的方式,计算xₙ₊₁=Axₙ,其中xₙ为第k次迭代得到的向量。
在迭代过程中,向量xₙ的模长会逐渐趋近于最大特征值对应的特征向量。
当迭代收敛后,xₙ就是矩阵A的最大特征值对应的特征向量。
四、反幂法反幂法是一种通过迭代来计算矩阵最小特征值和对应的特征向量的方法。
首先,随机选择一个非零向量b₀,并进行归一化,得到单位向量x₀=b₀/,b₀。
然后,通过迭代的方式,计算xₙ₊₁=(A-σI)⁻¹xₙ,其中σ为待求的特征值。
在迭代过程中,向量xₙ的模长会逐渐趋近于特征值σ对应的特征向量。
当迭代收敛后,xₙ就是矩阵A的特征值为σ的特征向量。
五、QR方法QR方法是一种通过迭代来计算矩阵特征值和特征向量的方法。
首先,将矩阵A进行QR分解,得到矩阵A=QR,其中Q是正交矩阵,R是上三角矩阵。
然后,计算矩阵B=RQ,重复以上步骤,直到矩阵B收敛。
矩阵特征值求法的十种求法(非常经典)

矩阵特征值求法的十种求法(非常经典)以下是矩阵特征值求法的十种经典求法:1. 幂法(Power Method)幂法(Power Method)幂法是求解特征值的常用方法之一。
它基于一个重要的数学原理:对于一个非零向量$x$,当它连续乘以矩阵$A$的$k$次幂后,$Ax$的方向将趋于特征向量相应的特征值。
这种方法通常需要进行归一化,以防止向量过度增长。
2. 反幂法(Inverse Power Method)反幂法(Inverse Power Method)反幂法是幂法的一种变体。
它通过计算矩阵$A$的逆来求解最小的特征值。
使用反幂法时,我们需要对矩阵$A$进行LU分解,以便更高效地求解线性方程组。
3. QR方法QR方法QR方法是一种迭代方法,可以通过将矩阵$A$分解为$QR$形式来逐步逼近特征值。
这种方法是通过多次应用正交变换来实现的,直到收敛为止。
QR方法不仅可以求解特征值,还可以求解特征向量。
4. Jacobi方法Jacobi方法Jacobi方法是一种迭代方法,通过施加正交相似变换将矩阵逐步变为对角矩阵。
在每个迭代步骤中,Jacobi方法通过旋转矩阵的特定元素来逼近特征值。
这种方法适用于对称矩阵。
5. Givens旋转法Givens旋转法Givens旋转法是一种用于特征值求解的直接方法。
它通过施加Givens旋转矩阵将矩阵逐步变为对角矩阵。
这种方法是通过旋转矩阵的特定元素来实现的。
6. Householder变换法Householder变换法Householder变换法是一种用于特征值求解的直接方法。
它通过施加Householder变换将矩阵逐步变为Hessenberg形式,然后再进一步将其变为上三角形式。
这种方法是通过对矩阵的列向量进行反射来实现的。
7. Lanczos方法Lanczos方法Lanczos方法是一种迭代方法,用于对称矩阵的特征值求解。
该方法创建一个Krylov子空间,并使用正交投影找到最接近特征值的Krylov子空间中的特征值。
幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量(DOC)

数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1. 幂法简介:当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵A 需要满足的条件为: (1) 的特征值为A i n λλλλ,0||...||||21≥≥≥>(2) 存在n 个线性无关的特征向量,设为n x x x ,...,,21 1.1计算过程:i ni i i u xx αα,1)0()0(∑==,有对任意向量不全为0,则有1111112211211111111011)()(...u u a u a u λu λαu αA x A Ax x k n n k n k k ni ik i i ni i i k )(k (k))(k αλλλλλα++++=+=+++≈⎥⎦⎤⎢⎣⎡+++======∑∑ 可见,当||12λλ越小时,收敛越快;且当k 充分大时,有1)1111)11111λαλαλ=⇒⎪⎩⎪⎨⎧==+++(k )(k k(k k )(k x x u x u x ,对应的特征向量即是)(k x 1+。
2 算法实现.,, 3,,1 , ).5()5(,,,,||).4();max(,).3()(max(;0,1).2(,).1()()()(停机否则输出失败信息转置若转否则输出若计算最大迭代次数,误差限,初始向量输入矩阵βλβεβλβλε←+←<<-←←=←←k k N k y x Ay x x abs x y k N x A k k k3 matlab 程序代码function [t,y]=lpowerA,x0,eps,N) % t 为所求特征值,y是对应特征向量k=1;z=0; % z 相当于λy=x0./max(abs(x0)); % 规范化初始向量x=A*y; % 迭代格式b=max(x); % b 相当于βif abs(z-b)<eps % 判断第一次迭代后是否满足要求t=max(x);return;endwhile abs(z-b)>eps && k<Nk=k+1;z=b;y=x./max(abs(x));x=A*y;b=max(x);end[m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值t=x(index); % 是原值,而非其绝对值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.设计程序并进行计算;
4.对结果进行解释说明;
采用方法
及结果
说明
对于幂法和反幂法求解矩阵特征值和特征向量的问题将从问题分析,算法设计和流程图,理论依据,程序及结果进行阐述该问题。
一.问题的分析:
求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题,如:机械、结构或电磁振动中的固有值问题等。对于n阶矩阵A,若存在数和n维向量x满足
m=m+m0;
在matlab输入面板,输入
A=rand(4);%产生一个4维随机矩阵
B=A+A’;
u=[1 1 1 1]’;%设立初始向量
Ax=x(1)
则称为矩阵A的特征值,x为相应的特征向量。
由高等代数知识可知,特征值是代数方程
|I-A|=+a+…+a+a=0(2)
的根。从表面上看,矩阵特征值与特征向量的求解问题似乎很简单,只需求解方程(2)的根,就能得到特征值,再解齐次方程组
(I-A)x=0(3)
的解,就可得到相应的特征向量。
上述方法对于n很小时是可以的。但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,自然就不必说求解方程(2)与(3)的困难了。幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于大型稀疏矩阵。反幂法是计算海森伯格阵或三角阵的对应一个给定近似特征值的特征向量的有效方法之一。
k=k+1;
end
在matlab输入面板,输入
A=rand(4);%产生一个4维随机矩阵
B=A+A’;
u=[1 1 1 1]’;%设立初始向量
[m,u,index,k]=pow(B,u,ep,it_max)%最多可省略2个参数
程序结束。
在M文件中可以通过改变m0的值改变原点位移,从而达到原点位移加速。
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。稍微修改该方法,也可以用来确定其他特征值。幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
1、幂法的迭代格式与收敛性质
设n阶矩阵A的特征值,,…,是按绝对值大小编号的,x (i=1,2,…,n)为对应的特征向量,且为单根,即
所以线性方程组(3)改为
Ly=u,Uv=y
四、算法程序设计代码
幂法程序,在matlab中建立一个M文件并保存。
%pow.m
function [m,u,index,k]=pow(A,u,ep,it_max)
if nargin<4
it_max=1000;
end
if nargin<3
ep=1e-5;
end
||>||≥…≥||
则计算最大特征值与特征向量的迭代格式为
v=Au,m=max(v), u= v m(1)
其中max(v)表示向量v绝对值的最大分量。
2、对于幂法的定理
按式(1)计算出m和u满足
m=, u=
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。是对幂法的修改,可以给出更快的收敛性。
(此文档为word格式,下载后您可任意编辑修改!)
题目
幂法和反幂法求矩阵特征值课程设计
具
体
内
容
随机产生一对称矩阵,对不同的原点位移和初值(至少取3个)分别使用幂法求计算矩阵的主特征值及主特征向量,用反幂法求计算矩阵的按模最小特征值及特征向量,并比较不同的原点位移和初值说明收敛。
要求
1.认真读题,了解问题的数学原形;
反幂法程序设计代码:
在matlab中建立一个M文件并保存。
%pow_inv.m
function[m,u,index,k]=pow_inv(A,u,ep,it_max)
if nargin<4
it_max=1000;
Hale Waihona Puke endif nargin<3
ep=1e-5;
end
n=length(A);
index=0;
1、反幂法的迭代格式与收敛性质
设A是非奇异矩阵,则零不是特征值,并设特征值为
||≥||≥…≥||>||
则按A的特征值绝对值的大小排序,有
||>||≥…≥||
对A实行幂法,就可得A的绝对值最大的特征值1和相应的特征向量,即A的绝对值最小的特征值和相应的特征向量。
由于用A代替A作幂法计算,因此该方法称为反幂法,反幂法的迭代格式为v= Au,m=max(v), u= v m(2)
(2)对A作LU分解,即A=LU
(3)解线性方程组Ly=u,Uv=y
(4)计算
m=max(v), u= v m
(5)若|m=m|<,则停止计算(1m作为绝对值最小特征值,u作为相应的特征向量);否则置k=k+1,转(3).
幂法流程图:
反幂法流程图
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
k=0;
m1=0;
m0=0;
I=eye(n);
T=A-m0*I;
invT=inv(T);
while k<=it_max
v=invT*u;
[vmax,i]=max(abs(v));
m=v(i);
u=vm;
if abs(m-m1)<ep
index=1;
break;
end
m1=m;
k=k+1;
end
m=1m;
n=length(A);
index=0;
k=0;
m1=0;
m0=0;
I=eye(n);
T=A-m0*I;
while k<=it_max
v=T*u;
[vmax,i]=max(abs(v));
m=v(i);
u=vm;
if abs(m-m1)<ep;
index=1;
break;
end
m=m+m0;
m1=m;
二.算法设计及流程图
1、幂法算法
(1)取初始向量u(例如取u=(1,1,…1)),置精度要求,置k=1.
(2)计算
v=Au,m=max(v), u= v m
(3)若| m= m|<,则停止计算(m作为绝对值最大特征值,u作为相应的特征向量)否则置k=k+1,转(2)
2、反幂法算法
(1)取初始向量u(例如取u=(1,1,…1)),置精度要求,置k=1.
2、对于反幂法的定理
按式(2)计算出的m和u满足:
m=, u=
在式(2)中,需要用到A,这给计算带来很大的不方便,因此,把(2)式的第一式改为求解线性方程组
A v= u(3)
但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A作LU分解,即A=LU