数值分析幂法和反幂法
数值分析幂法和反幂法
数值分析幂法和反幂法数值分析中的幂法和反幂法是求解矩阵最大特征值和最小特征值的常用方法。
这两种方法在许多数值计算问题中都有着广泛的应用,包括图像压缩、数据降维、谱聚类等。
幂法(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存在或数值稳定性。
数值幂法及反幂法分析方法
xn组成规范化正交组,即(x, x j) ij ),则
1。n
Ax, x x, x
1
对于任意非零向量x Rn
2。1
max
xRn ,x0
Ax, x x, x
.
3。n
min
xRn ,x0
Ax, x x, x
证明:1。设x Rn
由于x1, x2 ,, xn为Rn的一组正交向量,有
X a1x1 a2 x2 an xn
X
2
X
,
X
1 2
a1x1 an xn , a1x1 an xn
a12 a22 ,an2 0.
n
于是
Ax, x x, x
ai 2i
i 1 n
ai 2
i 1
n
n
n ai2
n
i 1 n
ai 2
Ax, x x, xBiblioteka 1 ai 2i1 n
1
ai 2
i 1
i 1
本章主要介绍三种方法:幂法、反幂法、 正交相似变换的方法,来求A的特征值及相应 的特征向量.
w
max
2 1
p p
,
n 1
p p
min,
取2
p n
p,
p
2
p
2
p*时w最小.
这时,2 p* n p* 2 n . 1 p* 1 p* 21 2 n
2.Rayleigh商加速法
计算实对称阵A的主特征值1..
定理2 设A Rnn为实对称阵,1 2 3 n
对应的特征向量满足 xi , x j ij ,应用幂法计算1,
定理3(Gerschgorin’s圆盘定理)
数值分析(29)代数特征值问题(幂法)
.
T
解:
Z y Z y
(0)
y
(0)
( 0 , 0 , 1) , ( 0 , 1, 2 ) ,
T T
(1 )
AZ y
(1 )
(0)
C 2,
(1 )
( 0 , 0 . 5 , 1) ,
(1 )
C
(2)
AZ
( 0 .5 , 2 , 2 .5 ) ,
T
。
数值分析
数值分析
为简便,不妨设 x
(i)
1 ( i 1, 2 , , n )。 因 为 u i 线 性
无 关 , 故 必 存 在 n 个 不 全 为 零 的 数 i ( i 1, 2 , , n ) , 使 得 y
(0)
由 y
i1 (k )
n
ix 。
(i)
Ay
2 1
,比值越小,收敛越快。
数值分析
数值分析
两点说明: 1) 如 果 y
(0)
的 选 取 恰 恰 使 得 1 0, 幂 法 计 算 仍 能
进行。因为计算过程中舍入误差的影响,迭代若干 次后,必然会产生一个向量y
(k )
,它 在 x
(1 )
方向上的分
量不为零,这样,以后的计算就满足所设条件。 2) 因 y
(k )
1 1 x
k
(1 )
,计 算 过 程 中 可 能 会 出 现 溢 出
( 1 1 ) 或 成 为 0 ( 1 1 )的 情 形 。 解 决 方 法 : 每 次 迭 代所求的向量都要归范化。因此,幂法实际使用的 计算公式是
Z (0) y (0) (k ) ( k 1 ) AZ y (k ) C k m a x( y ) (k ) (k ) Z y /Ck
特征值和特征向量计算的数值方法
特征值和特征向量计算的数值方法在数学和计算机科学领域中,特征值和特征向量是非常重要的概念。
特征值和特征向量的计算有许多不同的数值方法,本文将介绍其中一些常见的数值方法,并分析它们的优劣和适用范围。
一、特征值和特征向量的定义在矩阵理论中,给定一个n×n的矩阵A,如果存在一个非零向量v和一个标量λ,使得Av=λv,那么称v为矩阵A的特征向量,λ为矩阵A的特征值。
特征值和特征向量的计算可以帮助我们理解矩阵的性质以及解决一些实际问题。
二、幂法幂法是计算特征值和特征向量的常用数值方法之一。
幂法的基本思想是通过多次迭代,逐渐逼近矩阵的特征值和特征向量。
具体操作如下:1. 初始化一个非零向量b0;2. 进行迭代计算:bi+1 = A * bi / ||A * bi||;3. 取出近似特征向量的最后一列:v = bn;4. 进行迭代计算特征值:λ = (Av)T * v / (vT * v)。
幂法的主要优点是简单易懂,且只需要进行矩阵向量乘法和内积计算。
然而,幂法仅能求取具有最大特征值的特征向量,而且对于存在多个特征值相等的情况并不适用。
三、反幂法反幂法是幂法的一种改进方法,用于求取矩阵A的最小特征值和对应的特征向量。
反幂法的基本步骤如下:1. 初始化一个非零向量b0;2. 进行迭代计算:bi+1 = (A - μI)^-1 * bi / ||(A - μI)^-1 * bi||;3. 取出近似特征向量的最后一列:v = bn;4. 进行迭代计算特征值:λ = (Av)T * v / (vT * v)。
反幂法的改进之处在于引入了矩阵的逆运算,通过使用矩阵A减去一个合适的常数μ乘以单位矩阵来实现。
反幂法适用于矩阵A的特征值接近于μ的情况。
四、QR方法QR方法也是一种常用的特征值计算方法,它适用于求解所有特征值以及对应的特征向量。
QR方法的基本思想是将一个矩阵分解为正交矩阵Q和上三角矩阵R的乘积,然后迭代地将矩阵A转化为更接近上三角形的形式。
北航数值分析大作业第一题幂法与反幂法
《数值分析》计算实习题目第一题:1. 算法设计方案(1)1λ,501λ和s λ的值。
1)首先通过幂法求出按模最大的特征值λt1,然后根据λt1进行原点平移求出另一特征值λt2,比较两值大小,数值小的为所求最小特征值λ1,数值大的为是所求最大特征值λ501。
2)使用反幂法求λs ,其中需要解线性方程组。
因为A 为带状线性方程组,此处采用LU 分解法解带状方程组。
(2)与140k λλμλ-5011=+k 最接近的特征值λik 。
通过带有原点平移的反幂法求出与数k μ最接近的特征值 λik 。
(3)2cond(A)和det A 。
1)1=nλλ2cond(A),其中1λ和n λ分别是按模最大和最小特征值。
2)利用步骤(1)中分解矩阵A 得出的LU 矩阵,L 为单位下三角阵,U 为上三角阵,其中U 矩阵的主对角线元素之积即为det A 。
由于A 的元素零元素较多,为节省储存量,将A 的元素存为6×501的数组中,程序中采用get_an_element()函数来从小数组中取出A 中的元素。
2.全部源程序#include <stdio.h>#include <math.h>void init_a();//初始化Adouble get_an_element(int,int);//取A 中的元素函数double powermethod(double);//原点平移的幂法double inversepowermethod(double);//原点平移的反幂法int presolve(double);//三角LU 分解int solve(double [],double []);//解方程组int max(int,int);int min(int,int);double (*u)[502]=new double[502][502];//上三角U 数组double (*l)[502]=new double[502][502];//单位下三角L 数组double a[6][502];//矩阵Aint main(){int i,k;double lambdat1,lambdat2,lambda1,lambda501,lambdas,mu[40],det;init_a();//初始化Alambdat1=powermethod(0);lambdat2=powermethod(lambdat1);lambda1=lambdat1<lambdat2?lambdat1:lambdat2;lambda501=lambdat1>lambdat2?lambdat1:lambdat2;presolve(0);lambdas=inversepowermethod(0);det=1;for(i=1;i<=501;i++)det=det*u[i][i];for (k=1;k<=39;k++){mu[k]=lambda1+k*(lambda501-lambda1)/40;presolve(mu[k]);lambda[k]=inversepowermethod(mu[k]);}printf("------------所有特征值如下------------\n");printf("λ=%1.11e λ=%1.11e\n",lambda1,lambda501);printf("λs=%1.11e\n",lambdas);printf("cond(A)=%1.11e\n",fabs(lambdat1/lambdas));printf("detA=%1.11e \n",det);for (k=1;k<=39;k++){printf("λi%d=%1.11e ",k,lambda[k]);if(k % 3==0) printf("\n");} delete []u;delete []l;//释放堆内存return 0;}void init_a()//初始化A{int i;for (i=3;i<=501;i++) a[1][i]=a[5][502-i]=-0.064;for (i=2;i<=501;i++) a[2][i]=a[4][502-i]=0.16;for (i=1;i<=501;i++) a[3][i]=(1.64-0.024*i)*sin(0.2*i)-0.64*exp(0.1/i); }double get_an_element(int i,int j)//从A中节省存储量的提取元素方法{if (fabs(i-j)<=2) return a[i-j+3][j];else return 0;}double powermethod(double offset)//幂法{int i,x1;double beta=0,prebeta=-1000,yita=0;for (i=1;i<=501;i++)u[i]=1,y[i]=0;//设置初始向量u[]for (int k=1;k<=10000;k++){yita=0;for (i=1;i<=501;i++) yita=sqrt(yita*yita+u[i]*u[i]);for (i=1;i<=501;i++) y[i]=u[i]/yita;for (x1=1;x1<=501;x1++){u[x1]=0;for (int x2=1;x2<=501;x2++)u[x1]=u[x1]+((x1==x2)?(get_an_element(x1,x2)-offset):get_an_element(x1,x2))*y[x2];} prebeta=beta;beta=0;for (i=1;i<=501;i++) beta=beta+ y[i]*u[i];if (fabs((prebeta-beta)/beta)<=1e-12) {printf("offset=%f lambda=%f err=%e k=%d\n",offset,(beta+offset),fabs((prebeta-beta)/beta),k);break;};//输出中间过程,包括偏移量,误差,迭代次数}return (beta+offset);}double inversepowermethod(double offset)//反幂法{int i;double u[502],y[502];double beta=0,prebeta=0,yita=0;for (i=1;i<=501;i++)u[i]=1,y[i]=0; //设置初始向量u[]for (int k=1;k<=10000;k++){yita=0;for (i=1;i<=501;i++) yita=sqrt(yita*yita+u[i]*u[i]);for (i=1;i<=501;i++) y[i]=u[i]/yita;solve(u,y);prebeta=beta;beta=0;for (i=1;i<=501;i++) beta=beta+ y[i]*u[i];beta=1/beta;if (fabs((prebeta-beta)/beta)<=1e-12) {printf("offset=%f lambda=%f err=%e k=%d\n",offset,(beta+offset),fabs((prebeta-beta)/beta),k);break;};//输出中间过程,包括偏移量,误差,迭代次数}return (beta+offset);}int presolve(double offset)//三角LU分解{int i,k,j,t;double sum;for (k=1;k<=501;k++)for (j=1;j<=501;j++){u[k][j]=l[k][j]=0;if (k==j) l[k][j]=1;} //初始化LU矩阵for (k=1;k<=501;k++){for (j=k;j<=min(k+2,501);j++){sum=0;for (t=max(1,max(k-2,j-2)) ; t<=(k-1) ; t++)sum=sum+l[k][t]*u[t][j];u[k][j]=((k==j)?(get_an_element(k,j)-offset):get_an_element(k,j))-sum;}if (k==501) continue;for (i=k+1;i<=min(k+2,501);i++){sum=0;for (t=max(1,max(i-2,k-2));t<=(k-1);t++)sum=sum+l[i][t]*u[t][k];l[i][k]=(((i==k)?(get_an_element(i,k)-offset):get_an_element(i,k))-sum)/u[k][k];}}return 0;}int solve(double x[],double b[])//解方程组{int i,t;double y[502];double sum;y[1]=b[1];for (i=2;i<=501;i++){sum=0;for (t=max(1,i-2);t<=i-1;t++)sum=sum+l[i][t]*y[t];y[i]=b[i]-sum;}x[501]=y[501]/u[501][501];for (i=500;i>=1;i--){sum=0;for (t=i+1;t<=min(i+2,501);t++)sum=sum+u[i][t]*x[t];x[i]=(y[i]-sum)/u[i][i];}return 0;}int max(int x,int y){return (x>y?x:y);}int min(int x,int y){return (x<y?x:y);}3.计算结果结果如下图所示:部分中间结果:给出了偏移量(offset),误差(err),迭代次数(k)4.讨论迭代初始向量的选取对计算结果的影响,并说明原因使用u[i]=1(i=1,2,...,501)作为初始向量进行迭代,可得出以上结果。
幂法-反幂法求解矩阵最大最小特征值及其对应的特征向量
幂法-反幂法求解矩阵最大最小特征值及其对应的特征向量数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1. 幂法简介:当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵A 需要满足的条件为: (1) 的特征值为A i n λλλλ,0||...||||21≥≥≥>(2) 存在n 个线性无关的特征向量,设为n x x x ,...,,211.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)<="">t=max(x);return;endwhile abs(z-b)>eps && k<n< p="">k=k+1;z=b;y=x./max(abs(x));x=A*y;b=max(x);end[m,index]=max(abs(x)); % 这两步保证取出来的按模最大特征值t=x(index); % 是原值,而非其绝对值。
数值分析 -第7讲_幂法和反幂法
则存在酉矩阵U使 定理9( Schur定理) 设A ∈ R n×n, r11 r12 L r1n r22 L r2n ∆ = R, U T AU = O rnn 其中rii (i = 1,2,L, n)为A的特征值.
定理10(实Schur分解) 设A ∈ R n×n, 则存在正交矩阵Q使 R11 R12 L R1m R22 L R2m , QT AQ = O Rmm 其中当Rii (i = 1,2,L, m)为一阶时Rii是A的实特征值,当Rii为 二阶时Rii的两个特征值是A的两个共轭复特征值.
xn xn
α1 x1 α1 x1
数值分析
不同范数选取下的特征值的计算
1. 取范数为2-范数时 取范数为2
T T yk −1uk = yk −1 Ayk −1 ⇒
α1 x1T α1 x1 A = λ1 α1 x1 2 α1 x1 2
对应的迭代公式
∀ u0 ∈ R n T η k −1 = uk −1uk −1 yk −1 = uk −1 η k −1 uk = Ayk −1 T β k = yk −1uk ( k = 1, 2,...)
数值分析
实际使用的迭代公式为: 实际使用的迭代公式为:
uk −1 yk −1 = u k −1 u = Ay k −1 k
于是可得
Auk −1 A2uk −2 A k u0 uk = = = L = k −1 uk −1 Auk −2 A u0
uk Ak u0 yk = = k uk A u0
数值分析
定义3 定义3 设A = (aij ) n×n , 令 n ( )i = ∑ | aij | (2) Di = {z | | z − aii |≤ ri , z ∈ C }, (i = 1,L, n) 1 r , j≠i 称Di为复平面上以aii为圆心以ri为半径的Gerschgorin圆盘.
幂法和反幂法
此例中比值为 2 2 . 1 3
例2:用幂法计算下面矩阵的主特征值及对应的特征向量。
解: 取初始向量 01
2 4 A 3 9
4 16
v u 1 1 1 ,按(3.7)迭代5次得到数据T如下 表: 00
1 11
11
ukT
6 15 36
k
vkT
(规范化向量)
5 0.1859 0.4460 1 8.156 19.57 43.88
v (i) k 1 v (i) k
1?
即两相邻迭代向量的对应非零分量的比值一定收敛到主特征值?
不一定. 先讨论以下情况:
情形1: 设n n阶实矩阵A的特征值i (i 1, 2, , n) 满足 1 2 n 且与i (i 1, 2, , n)相应的特征
向量x1 , x2 , , xn 线性无关。
v (1) 2
v (1) 1
0.41 ,
v (2) 2
v (2) 1
0.41666,
v (1) 3
0.41260,
v (2) 3
0.41249,
v (1) 2
v (2) 2
v (1) 4
v (1) 3
0.41263,
v (2) 4
v (2) 3
0.41263,
问题:是否任何矩阵的幂法,当k比较大时,一定有
故按模特征值为:
1 43.88 对应的特征向量为:
u1 0.1859 0.4460 1.0000T
例3 用幂法求矩阵 的主特征值和主特征向量.
1 1 0.5 A 1 1 0.25
0.5 0.25 2
解 : 取初始向量u0 (1,1,1)T , 按(3.2)的计算结果如表9 1。
数值分析幂法和反幂法
数值分析幂法和反幂法数值分析中,幂法(Power method)和反幂法(Inverse Power method)是求解矩阵的特征值和特征向量的两种常用方法。
它们都是通过迭代过程逼近特征值和特征向量。
1.幂法:幂法是求解矩阵的最大特征值和对应的特征向量的一种迭代方法。
幂法的原理是通过迭代过程,将一个任意选择的初始向量不断与矩阵相乘,使其逼近对应最大特征值的特征向量。
幂法的迭代公式为:$x^{(k+1)} = \frac{Ax^{(k)}}{\,Ax^{(k)}\,}$幂法的迭代过程是不断对向量进行归一化,使其逐渐逼近最大特征值对应的特征向量。
当迭代次数足够多时,可以得到非常接近最大特征值的估计。
2.反幂法:反幂法是幂法的一种变形,用于求解矩阵的最小特征值和对应的特征向量。
反幂法的原理是通过迭代过程,将一个任意选择的初始向量不断与矩阵的逆相乘,使其逼近对应最小特征值的特征向量。
反幂法的迭代公式为:$x^{(k+1)} = \frac{A^{-1}x^{(k)}}{\,A^{-1}x^{(k)}\,}$反幂法的迭代过程同样是不断对向量进行归一化,使其逐渐逼近最小特征值对应的特征向量。
当迭代次数足够多时,可以得到非常接近最小特征值的估计。
3.收敛性分析:幂法和反幂法的收敛性分析与矩阵的特征值分布有关。
对于幂法而言,如果矩阵$A$的最大特征值是唯一的,并且其他特征值的绝对值小于最大特征值的绝对值,那么幂法是收敛的,而且收敛速度是指数级的。
对于反幂法而言,如果矩阵$A$的最小特征值是唯一的,并且其他特征值的绝对值大于最小特征值的绝对值,那么反幂法是收敛的,而且同样是指数级的收敛速度。
4.实际应用:幂法和反幂法在实际中广泛应用于各个领域,例如物理、工程、计算机科学等。
比如在结构力学中,幂法可以用来求解结构的自振频率和相应的振型;在电力系统中,反幂法可以用来求解电力系统决定性特征值,例如功率稳定性的最小特征值。
数值分析第四章矩阵特征值与特征向量的计算
其中0为代选择参数. 设A的特征值为1, 2, …, n, 则B的特征值为1-0, 2-0, …, n-0, 而且A, B
的特征向量相同.
13
仍设A有主特征值1, 且 1 2 , 取0使得
1 0 i 0 (i 1) 1-0是B=A0I的主特征值
且
max i 0 i1 1 0
征向量为u1, u2, …, un. 且满足条件
1 2 3 n
u1, u2, …, un线性无关.
此时1一定是实数!
幂法: 求1及其相应的特征向量.
1通常称为主特征值.
3
➢ 幂法基本思想
给定初始非零向量x(0), 由矩阵A构造一向量序列
x(1) Ax(0)
x
(
2
)
Ax (1)
10
2 1 0 例 用幂法求矩阵 A 0 2 1
0 1 2
的按模最大的特征值和相应的特征向量.
取 x(0)=(0, 0, 1)T, 要求误差不超过103.
解 y0 x0 0,0,1T ,
x1 Ay0 0,1,2T , 1 max(x(1) ) 2,
y(1) x(1) (0,0.5, 1)T
能达到较y(0)0,
x(k1) ( A * I )1 y(k )
y ( k 1)
x ( k 1) max(x(k1) )
(k 0,1,2, ).
迭代向量x(k+1)可以通过解方程组求得
( A * I )x(k1) y(k)
26
1
x(2) Ay(1) 0.5, 2, 2.5T ,
2
max(x(2) )
2.5,
11
y(2) x(2) (0.2, 0.8, 1)T
数值方法课程设计幂法反幂法计算矩阵特征值和特征向量-附Matlab程序
矩阵的特征值与特征向量的计算摘要物理,力学,工程技术中的很多问题在数学上都归结于求矩阵特征值的问题,例如振动问题(桥梁的振动,机械的振动,电磁振动等)、物理学中某些临界值的确定问题以及理论物理中的一些问题。
矩阵特征值的计算在矩阵计算中是一个很重要的部分,本文使用幂法和反幂法分别求矩阵的按模最大,按模最小特征向量及对应的特征值。
幂法是一种计算矩阵主特征值的一种迭代法,它最大的优点是方法简单,对于稀疏矩阵比较合适,但有时收敛速度很慢。
其基本思想是任取一个非零的初始向量。
由所求矩阵构造一向量序列。
再通过所构造的向量序列求出特征值和特征向量。
反幂法用来计算矩阵按模最小特征向量及其特征值,及计算对应于一个给定近似特征值的特征向量。
本文中主要使用反幂法计算一个矩阵的按模最小特征向量及其对应的特征值。
计算矩阵按模最小特征向量的基本思想是将其转化为求逆矩阵的按模最大特征向量。
然后通过这个按模最大的特征向量反推出原矩阵的按模最小特征向量。
关键词:矩阵;特征值;特征向量;冥法;反冥法THE CALCULATIONS OF EIGENVALUE AND EIGENVECTOR OF MATRIXABSTRACTPhysics, mechanics, engineering technology in a lot of problems in mathematics are attributed to matrix eigenvalue problem, such as vibration (vibration of the bridge, mechanical vibration, electromagnetic vibration, etc.) in physics, some critical values determine problems and theoretical physics in some of the problems. Matrix eigenvalue calculation is a very important part in matrix computation. In this paper, we use the power method and inverse power method to calculate the maximum of the matrix, according to the minimum characteristic vector and the corresponding characteristic value.Power method is an iterative method to calculate the eigenvalues of a matrix. It has the advantage that the method is simple and suitable for sparse matrices, but sometimes the convergence rate is very slow. The basic idea is to take a non - zero initial vector. Construct a vector sequence from the matrix of the matrix. Then the eigenvalues and eigenvectors are obtained by using the constructed vector sequence.The inverse power method is used to calculate the minimum feature vectors and their eigenvalues of the matrix, and to calculate the eigenvalues of the matrix. In this paper, we use the inverse power method to calculate the minimum eigenvalue of a matrix and its corresponding eigenvalues. The basic idea of calculating the minimum characteristic vector of a matrix is to transform it to the maximumc haracteristic vector of the modulus of the inverse matrix. Then, according to the model, the minimum feature vector of the original matrix is introduced.Key words: Matrix ;Eigenvalue ;Eigenvector ;Iteration methods;目录1引言 (1)2相关定理。
幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量
幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1. 幂法简介:当矩阵A满足一定条件时,在工程中可用幂法计算其主特征值(按模最大) 及其特征向量。
矩阵A需要满足的条件为:|,|,|,|,...,|,|,0,,为A的特征值(1) 12nix,x,...,x(2) 存在n个线性无关的特征向量,设为 12n1.1计算过程:n(0)(0)对任意向量x,有x,,u,,不全为0,则有 ,iii,1i(k,1)(k)k,1(0),,,xAx...Axnn11k,k,,,Aαuαλu,,iiiii11i,i,,,,, k,1k,1k,1n2,,,,,λu()au?()au11122nn,,,,11,,k,1,,,u111,2||可见,当越小时,收敛越快;且当k充分大时,有,111(k,)k,1(k,),,,xu,x,111(k,1),,,,x1,对应的特征向量即是。
)(k)(kkx,xu,,,111,2 算法实现,(1).输入矩阵A,初始向量x,误差限,最大迭代次数N(k)x(k),(2).k,1,,0;y,(k)max(abs(x),(3).计算x,Ay,,max(x);,,,,(4).若|,|,,输出,y,否则,转(5)(5).若 k,N, 置k,k,1,,,,,转3 ,否则输出失败信息,停机.3 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); % 是原值,而非其绝对值。
数值分析幂法和反幂法
0.8576 0.6934 0.5623 1.0000 index =
1 k=
9 修改 U=[3 5 6 7] 修改 M0=1e-4
m= 2.6819
u= 0.8577
0.6937 0.5624 1.0000 index =
1 k=
7 修改 M0=1e-3
m= 2.6814
u= 0.8576 0.6934 0.5623 1.0000
果
( I-A)x=0
(3)
说
的解,就可得到相应的特征向量。
明
上述方法对于 n 很小时是可以的。但当 n 稍大时,计算工作量将以惊 人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,
自然就不必说求解方程(2)与(3)的困难了。幂法是一种计算矩阵主特
征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特
征值。稍微修改该方法,也可以用来确定其他特征值。幂法的一个很有用的特
性是它不仅可以生成特征值,而且可以生成相应的特征向量。实际上,幂法经
常用来求通过其他方法确定的特征值的特征向量。
1、幂法的迭代格式与收敛性质
设 n 阶矩阵 A 的特征值 1 , 2 ,…, n 是按绝对值大小编号的, x i (i=1,2,…,n)为对应 i 的特征向量,且 1 为单根,即
幂法流程图:
开始
输入 A;[m,u,index] =pow(A,1e-6)
k=0;m1= v=A*u
[vmax,i]=max(abs(v))
m1=m;k=k+1
m=v(i);u=v/m
abs(m-m1)< 1e-6
幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量
数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1. 幂法简介:当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵A 需要满足的条件为:(1) 存在n 个线性无关的特征向量,设为n x x x ,...,,211.1计算过程:i n i i i u xx αα,1)0()0(∑==,有对任意向量不全为0,则有 可见,当||12λλ越小时,收敛越快;且当k 充分大时,有1)1111)11111λαλαλ=⇒⎪⎩⎪⎨⎧==+++(k )(k k (k k )(k x x u x u x ,对应的特征向量即是)(k x 1+。
2 算法实现3 matlab 程序代码function [t,y]=lpowerA,*0,eps,N) % t 为所求特征值,y 是对应特征向量k=1;z=0; % z 相当于λy=*0./ma*(abs(*0)); % 规化初始向量*=A*y; % 迭代格式b=ma*(*); % b 相当于 βif abs(z-b)<eps % 判断第一次迭代后是否满足要求t=ma*(*);return ;endwhile abs(z-b)>eps && k<Nk=k+1;z=b;y=*./ma*(abs(*));*=A*y;b=ma*(*);end[m,inde*]=ma*(abs(*)); % 这两步保证取出来的按模最大特征值t=*(inde*); % 是原值,而非其绝对值。
end4 举例验证选取一个矩阵A ,代入程序,得到结果,并与eig(A)的得到结果比拟,再计算A*y-t*y ,验证y 是否是对应的特征向量。
结果如下:结果正确,说明算法和代码正确,然后利用此程序计算15阶Hilb 矩阵,与eig(A)的得到结果比拟,再计算 A*y-t*y ,验证y 是否是对应的特征向量。
设置初始向量为*0=ones(15,1),结果显示如下可见,结果正确。
数值分析原理第八章
148 第八章 矩阵特征值和特征向量的计算对于n ×n 阶的实矩阵A ,线性代数理论中是通过求解特征多项式)det(I A λ-的零点而得到特征值λ,然后通过求得齐次线性方程组0x I A =-)(λ的非零向量x 而得到矩阵A 的相应于特征值λ的特征向量.当矩阵阶数较高时,这种方法计算量很大,故常用数值方法近似求解特征值与特征向量.目前常用的数值方法有迭代法(幂法)和变换法(Jacobi 方法等)两类.§8.1 乘幂法与反幂法一、乘幂法乘幂法是求矩阵按模最大的特征值(主特征值)和相应的特征向量的一种迭代法. 设nn ⨯∈R A ,初始向量)()0()0(0V R V ≠∈n ,令)1()(-=k k AV V(8.1)生成迭代向量序列{})(k V .由递推公式(8.1),知)0()2(2)2()()(V A V A AV A V k k k k ====--(8.2)这表明)(k V 等于用矩阵A 的k 次幂左乘)0(V,故称此方法为乘幂法.下面分析当k →∞时,向量序列{})(k V 的变化规律. 设1λ,2λ,…,n λ为矩阵nn ⨯∈R A 的n 个特征值,且满足n λλλ≥≥> 21(8.3)相应于特征值1λ,2λ,…,n λ的n 个线性无关的特征向量n x x x ,,,21 构成向量空间nℜ上的一组基.任取非零的初始向量n R V ∈)0(,则)0(V 可由这组特征向量线性表出∑==+++=nj j j n n c c c c 12211)0(x x x x V(8.4)其中n c c c ,,,21 为线性组合系数.将式(8.4)代入式(8.2),得149)(11)(j knj j j n j j kk c c x A x AV∑∑==== (8.5)由j k j j k x x A λ=和式(8.5),得j k j nj j k c x Vλ∑==1)((8.6)当01=λ时,由式(8.3)知,特征值0n 21====λλλ .下面针对01≠λ进行讨论. 由式(8.6)有⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛+=∑=j k j n j j kk c c x x V 12111)(λλλ由于n j j,,3,2,11 =<λλ,故若01≠c ,当k 充分大时,0x ε≈⎪⎪⎭⎫⎝⎛=∑=j kij nj j k c λλ2,此时有111)(x V c kk λ≈(8.7)上式表明,)(k V与1x 只近似相差一个常数因子,故可取)(k V作为矩阵A 的相应于主特征值1λ的近似特征向量.当k 充分大时,若0)(≠k i V ,则有11111111)()1()()(λλλ=≈++ikik k i k i c c V V x x (8.8)这表明主特征值1λ可由式(8.8)近似求得.如果矩阵A 的特征值满足n l l λλλλλλ≥≥>===+ 1121,则根据式(8.6)有⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛+=∑∑+==j kj nl j j j lj j kk c c x x V 1111)(λλλ(8.9)则当k 充分大时,由于),,1(11n l j j+=<λλ,故有150 jlj j k k c xV∑=≈11)(λ(8.10)由于l x x x ,,,21 都是矩阵A 的特征值1λ对应的特征向量,故0x≠∑=jlj j c 1也是矩阵A 的特征值1λ对应的特征向量.由式(8.10)知,k 较大时,)(k V就是与主特征值1λ的对应的近似特征向量.类似于式(8.8),可求得主特征值的近似.由于此时1λ的特征向量子空间不是一维的,故由式(8.10)得到的近似特征向量只是该子空间的一个特征向量,对于不同的初始向量)0(V 可能得到1λ的特征向量空间中线性无关的近似特征向量.对于矩阵A 的其它主特征值情形,如21λλ-=,21λλ=等,同样可以用乘幂法求解,具体过程可参阅文献[6]. 以上讨论说明了乘幂法的基本原理.通过上述对乘幂法过程的分析可知,乘幂法是一种迭代法,公式计算简单,便于上机实践,可以方便地用于近似求矩阵按模最大的一个(或几个)特征值及相应的特征向量.需要注意的是:(1) 从理论上讲,对于任意给定的初始向量)0(V,有可能使式(8.4)中的01=c ,但因舍入误差的存在,随着迭代过程的进行,等效于从01≠c 的)0(V 出发进行迭代.(2) 在用乘幂法(8.1)进行迭代计算时,迭代向量)(k V的分量的绝对值可能会出现非常大(当11>λ)或者非常小(当11<λ)的现象,甚至出现溢出.为此,实用中每进行m 步就需要对迭代向量)(k V进行一次规范化,即用)()()(max ~k k k VV V =(其中)(max k V 表示向量)(k V 的按模最大的分量)代替)(k V继续迭代.由于特征向量允许相差一个常数因子,故按前面乘幂法的理论依然得到正确的近似特征向量.在每次规范化后,用乘幂计算前后两个向量的分量的比值作为主特征值的近似,这种规范化并不影响主特征值的近似计算。
北航数值分析第一次大作业(幂法反幂法)
一、问题分析及算法描述1. 问题的提出:(1)用幂法、反幂法求矩阵A =[a ij ]20×20的按摸最大和最小特征值,并求出相应的特征向量。
其中 a ij ={sin (0.5i +0.2j ) i ≠j 1.5cos (i +1.2j ) i =j要求:迭代精度达到10−12。
(2)用带双步位移的QR 法求上述的全部特征值,并求出每一个实特征值相应的特征向量。
2. 算法的描述:(1) 幂法幂法主要用于计算矩阵的按摸为最大的特征值和相应的特征向量。
其迭代格式为:{ 任取非零向量u 0=(h 1(0),⋯,h n (0))T|h r (k−1)|=max 1≤j≤n |h r (k−1)| y ⃑ k−1=u ⃑ k−1|h r (k−1)| u ⃑ k =Ay ⃑ k−1=(h 1(k ),⋯,h n (k ))T βk =sgn (h r (k−1))h r (k ) (k =1,2,⋯) 终止迭代的控制选用≤ε。
幂法的使用条件为n ×n 实矩阵A 具有n 个线性无关的特征向量x 1,x 2,⋯,x n ,其相应的特征值λ1,λ2,⋯,λn 满足不等式|λ1|>|λ2|≥|λ3|≥⋯≥|λn |或λ1=λ2=⋯=λm|λ1|>|λm+1|≥|λm+2|≥⋯≥|λn |幂法收敛速度与比值|λ2λ1|或|λm+1λ1|有关,比值越小,收敛速度越快。
(2) 反幂法反幂法用于计算n ×n 实矩阵A 按摸最小的特征值,其迭代格式为:{任取非零向量u 0∈R nηk−1=√u ⃑ k−1T u ⃑ k−1 y ⃑ k−1=u ⃑ k−1ηk−1⁄ Au ⃑ k =y ⃑ k−1 βk =y ⃑ k−1u ⃑ k (k =1,2,⋯) 每迭代一次都要求解一次线性方程组Au ⃑ k =y ⃑ k−1。
当k 足够大时,λn ≈1βk ,y ⃑ k−1可近似的作为矩阵A 的属于λn 的特征向量。
数值分析课程设计+幂法与反幂法MATLAB
一、问题的描述及算法设计(一)问题的描述本次课程设计我所要做的课题是:对称矩阵的条件数的求解设计 1、求矩阵A 的二条件数问题 A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----210121012 2、设计内容: 1)采用幂法求出A 的. 2)采用反幂法求出A 的.3)计算A 的条件数 ⅡA Ⅱ2* ⅡA -1Ⅱ2=cond2(A )=/.(精度要求为10-6)3、设计要求 1)求出ⅡA Ⅱ2。
2)并进行一定的理论分析。
(二)算法设计1、幂法算法(1)取初始向量u )0((例如取u )0(=(1,1,…1)T ),置精度要求ε,置k=1. (2)计算v )(k =Au )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k(3)若| m k = m 1-k |<ε,则停止计算(m k 作为绝对值最大特征值1λ,u )(k 作为相应的特征向量)否则置k=k+1,转(2) 2、反幂法算法(1)取初始向量u )0((例如取u )0(=(1,1,…1)T ),置精度要求ε,置k=1. (2)对A 作LU 分解,即A=LU(3)解线性方程组 Ly )(k =u )1(-k ,Uv )(k =y )(k (4)计算m k =max(v )(k ), u )(k = v )(k / m k(5)若|m k =m 1-k |<ε,则停止计算(1/m k 作为绝对值最小特征值n λ,u )(k 作为相应的特征向量);否则置k=k+1,转(3).二、算法的流程图(一)幂法算法的流程图(二)反幂法算法的流程图三、算法的理论依据及其推导(一)幂法算法的理论依据及推导幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
数值分析3.1幂法和反幂法
第三章 矩阵的特征值与特征向量
3.1 幂法与反幂法 3.2 Jacobi方法
3.3 QR方法
第三章 矩阵的特征值与特征向量
3.1幂法与反幂法
一、乘幂法 二、反幂法
三、带原点位移的反幂法
四、反幂法的特点
第三章 矩阵的特征值与特征向量
3.1幂法与反幂法
一、乘幂法
1、基本思想
2、算法(迭代公式) ◆一般算法
具体算法: (1)使用范数 2
1 X 1 yk , k 1 1 X 1
(2)使用范数
uk A yk 1
令
k
er u k er y k 1
T
T
k
lim k 1
留为作业自学
具体算法: (1)使用范数 2 1 X 1 yk , k 1 1 X 1
1 2 n
第三章 矩阵的特征值与特征向量
一、乘幂法 1、基本思想 设A有n个线性无关的特征向量 X 1 , X 2 ,, X n ,
AX j j X j , j 1,2,, n
3.1幂法与反幂法
★ 设 1为实数而且是单根: 1 2 n
u0 1 X 1 2 X 2 n X n
具体算法: 按取范数的不同, 迭代公式也不同。 (1)使用范数 2
任取初始向量u0 R n T k 1 u k 1 u k 1 u k 1 yk 1 k 1 (3.4) u k A yk 1 k yk 1T uk k 1,2,
T
精确结果:
X 1 (0,0.5,1) , 1 45
T
max( uk ) 表示 u k 的绝对值最大的分量。 (3)
数值分析之幂法及反幂法C语言程序实例
数值分析之幂法及反幂法C 语言程序实例1、算法设计方案:①求1λ、501λ和s λ的值:s λ:s λ表示矩阵的按模最小特征值,为求得s λ直接对待求矩阵A 应用反幂法即可。
1λ、501λ:已知矩阵A 的特征值满足关系 1n λλ<<L ,要求1λ、及501λ时,可按如下方法求解:a . 对矩阵A 用幂法,求得按模最大的特征值1m λ。
b . 按平移量1m λ对矩阵A 进行原点平移得矩阵1m BA I λ=+,对矩阵B 用反幂法求得B 的按模最小特征值2m λ。
c . 321m m m λλλ=-则:113min(,)m m λλλ=,13max(,)n m m λλλ=即为所求。
②求和A 的与数5011140k k λλμλ-=+最接近的特征值ik λ(k=0,1,…39):求矩阵A 的特征值中与k μ最接近的特征值的大小,采用原点平移的方法: 先求矩阵 B=A-k μI 对应的按模最小特征值k β,则k β+k μ即为矩阵A 与k μ最接近的特征值。
重复以上过程39次即可求得ik λ(k=0,1,…39)的值。
③求A 的(谱范数)条件数2cond()A 和行列式det A :在(1)中用反幂法求矩阵A 的按模最小特征值时,要用到Doolittle 分解方法,在Doolittle 分解完成后得到的两个矩阵分别为L 和U ,则A 的行列式可由U 阵求出,即:det(A)=det(U)。
求得det(A)不为0,因此A 为非奇异的实对称矩阵,则: max 2()scond A λλ=,max λ和s λ分别为模最大特征值与模最小特征值。
2、程序源代码:#include<>#include<>#include<>#define N 501 3e\n",k,k,value_s);}}void main(){float cond;double value_det;printf("Contact me\n");Init_matrix_A(); 3e\n",value_1);printf("λ501=%.13e\n",value_N);value_det=Det_matrix(); 3e\n",value_s);cond=Get_cond_A(); 3e\n",cond);printf("value_det=%.13e\n",value_det); }3、程序运行结果:4、迭代初始向量的选取对计算结果的影响:本次计算实习求矩阵A的具有某些特征的特征值,主要用到的方法是幂法和反幂法,这两种方法从原理上看都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的值改变原点位移,从而达到原点位移加速。
m =
2.6814
u =
0.8576
0.6934
0.5623
1.0000
index =
0
k =
1001
修改M0=0
m =
2.6820
u =
0.8577
0.6937
0.5624
1.0000
index =
1
k =
7
总结以上,幂法如下:
U
m0
m
u
index
k
[1 1 1 1]
0.0001
2.6813
[0.8576 0.6934 0.5623 1.0000]
2、对于幂法的定理
按式(1)计算出m 和u 满足
m = , u =
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。是对幂法的修改,可以给出更快的收敛性。
1、反幂法的迭代格式与收敛性质
设A是非奇异矩阵,则零不是特征值,并设特征值为
| |≥| |≥…≥| |>| |
反幂法程序设计代码:
在matlab中建立一个M文件并保存。
%pow_inv.m
function[m,u,index,k]=pow_inv(A,u,ep,it_max)
if nargin<4
it_max=1000;
end
if nargin<3
ep=1e-5;
end
n=length(A);
index=0;
m=m+m0;
在matlab输入面板,输入
A=rand(4);%产生一个4维随机矩阵
B=A+A’;
u=[1 1 1 1]’;%设立初始向量
[m,u,index,k]=pow_inv(B,u,ep,it_max)%最多可省略2个参数
程序结束。
在M文件中可以通过改变m0的值改变原点位移,从而达到原点位移加速。
所以线性方程组(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;
题目
幂法和反幂法求矩阵特征值
具
体
内
容
随机产生一对称矩阵,对不同的原点位移和初值(至少取3个)分别使用幂法求计算矩阵的主特征值及主特征向量,用反幂法求计算矩阵的按模最小特征值及特征向量,并比较不同的原点位移和初值说明收敛。
要求
1.认真读题,了解问题的数学原形;
2.选择合适问题求解的数值计算方法;
3.设计程序并进行计算;
【结果显示】
%在M0=1e-4
>>B=rand(4);
>>A=B+B’
A =
0.2675 0.5776 0.6344 1.3130
0.5776 1.1503 0.7641 0.1367
0.6344 0.7641 0.0257 0.4193
1.3130 0.1367 0.4193 1.2248
>> u=[1 1 1 1]';
1.0000
index =
1
k =
7
修改M0=0
m =
2.6814
u =
0.8576
0.6934
0.5623
1.0000
index =
1
k =
9
修改U=[3 5 6 7]
修改M0=1e-4
m =
2.6819
u =
0.8577
0.6937
0.5624
1.0000
index =
1
k =
7
修改M0=1e-3
上述方法对于n很小时是可以的。但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,自然就不必说求解方程(2)与(3)的困难了。幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于大型稀疏矩阵。反幂法是计算海森伯格阵或三角阵的对应一个给定近似特征值的特征向量的有效方法之一。
1、幂法的迭代格式与收敛性质
设n阶矩阵A的特征值 , ,…, 是按绝对值大小编号的,x (i=1,2,…,n)为对应 的特征向量,且 为单根,即
| |>|代格式为
v =Au ,m =max(v ), u = v / m (1)
其中max(v )表示向量v 绝对值的最大分量。
1
20
[2 3 4 5]
0.7
0.7091
[-0.6962 -0.4497 0.2196 1.0000]
1
5
0.1
0.3847
[-0.8995 1.0000 0.2726 -0.2364]
1
17
0
0.3847
[-0.8996 1.0000 0.2726 -0.2364]
1
19
五、结果分析
采用幂法和反幂法,求矩阵的最大和最小特征值,从原理上看,这两种方法都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。
1
49
0.001
2.6814
[0.5876 0.6934 0.5623 1.0000]
0
1001
0
2.6815
[0.8576 0.6935 0.5623 1.0000]
1
10
[1 2 3 4]
0.0001
2.6813
[0.8576 0.6934 0.5623 1.0000]
1
9
0.001
2.6805
[0.8576 0.6934 0.5622 1.0000]
1
7
0
2.6814
[0.8576 0.6934 0.5623 1.0000]
1
9
[3 5 6 7]
0.0001
2.6819
[0.8577 0.6937 0.5624 1.0000]
1
7
0.001
2.6914
[0.8576 0.6934 0.5623 1.0000]
同时,原点位移m的选取也影响收敛的速度。但原点位移m0的适当选取依赖于对矩阵A的大致了解。
成员
>> [m,u,index,k]=pow(A,u)
m =
2.6813
u =
0.8576
0.6934
0.5623
1.0000
index =
1
k =
49
修改M0=1e-3
m =
2.6814
u =
0.8576
0.6934
0.5623
1.0000
index =
0
k =
1001
修改M0=0 %此时为幂法
m =
则按A 的特征值绝对值的大小排序,有
| |>| |≥…≥| |
对A 实行幂法,就可得A 的绝对值最大的特征值1/ 和相应的特征向量,即A的绝对值最小的特征值和相应的特征向量。
由于用A 代替A作幂法计算,因此该方法称为反幂法,反幂法的迭代格式为 v = A u ,m =max(v ), u = v / m (2)
2、对于反幂法的定理
按式(2)计算出的m 和u 满足:
m = , u =
在式(2)中,需要用到A ,这给计算带来很大的不方便,因此,把(2)式的第一式改为求解线性方程组
A v = u (3)
但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A作LU分解,即 A=LU
2、反幂法算法
(1)取初始向量u (例如取u =(1,1,…1) ),置精度要求 ,置k=1.
(2)对A作LU分解,即A=LU
(3)解线性方程组 Ly =u ,Uv =y
(4)计算
m =max(v ), u = v / m
(5)若|m =m |< ,则停止计算(1/m 作为绝对值最小特征值 ,u 作为相应的特征向量);否则置k=k+1,转(3).
2.6815
u =
0.8576
0.6935
0.5623
1.0000
index =
1
k =
10
修改U=[1 2 3 4]
修改M0=1e-4
m =
2.6813
u =
0.8576
0.6934
0.5623
1.0000
index =
1
k =
9
修改M0=1e-3
m =
2.6805
u =
0.8576
0.6934
0.5622
1
16
0
0.3847
[-0.8996 1.0000 0.2726 -0.2364]
1
16
[1 3 5 7]
0.5
0.3847
[-0.8995 1.0000 0.2726 -0.2364]