数值分析试验幂法与反幂法matlab
数值分析幂法和反幂法

数值分析幂法和反幂法数值分析中的幂法和反幂法是求解矩阵最大特征值和最小特征值的常用方法。
这两种方法在许多数值计算问题中都有着广泛的应用,包括图像压缩、数据降维、谱聚类等。
幂法(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存在或数值稳定性。
数值分析-MATLAB相关算法

数值分析-MATLAB算法刘亚1、四阶龙格库塔法:function yout=xin(bianliang)%定义输入输出clear allx0=0;xn=1;y0=1;h=0.1;%设置初始值、区间和步长[y,x]=lgkt4j(x0,xn,y0,h);%四阶龙格库塔法n=length(x);fprintf(' i x(i) y(i)\n');%输出格式for i=1:nfprintf('%2d %3.3f %4.4f\n',i,x(i),y(i)); endfunction [y,x]=lgkt4j(x0,xn,y0,h)x=x0:h:xn;%设置区间n=length(x);y1=x;y1(1)=y0;for i=1:nK1=f(x(i),y1(i));K2=f(x(i)+h/2,y1(i)+h/2*K1);K3=f(x(i)+h/2,y1(i)+h/2*K2);K4=f(x(i)+h,y1(i)+h*K3);y1(i+1)=y1(i)+h/6*(K1+2*K2+2*K3+K4);endy=y1;function Dy=f(x,y)Dy=y-2*x/y;C语言程序#include<math.h>main(){float x=0,y0=1,h=0.2,y1,k1,k2,k3,k4;k1=y0-2*x/y0;k2=y0+h/2*k1-(2*x+h)/(y0+h/2*k1);k3=y0+h/2*k2-(2*x+h)/(y0+h/2*k2);k4=y0+h*k3-(2*x+2*h)/(y0+h*k3);y1=y0+h/6*(k1+2*k2+2*k3+k4);do{printf("%5.4f\n",y1);x=x+h;y0=y1;k1=y0-2*x/y0;k2=y0+h/2*k1-(2*x+h)/(y0+h/2*k1);k3=y0+h/2*k2-(2*x+h)/(y0+h/2*k2);k4=y0+h*k3-(2*x+2*h)/(y0+h*k3);y1=y0+h/6*(k1+2*k2+2*k3+k4);}while(x<1);}2、幂法求特征值function [m x biaozhi]=mifa(A,jingdu,cishu)%幂法求矩阵最大特征值,其中%m为绝对值最大的特征值,x为对应最大特征值的特征向量%biaozhi表明迭代是否成功if nargin<3cishu=100;endif nargin<2jingdu=1e-5;endn=length(A);x=ones(n,1);biaozhi='迭代失败!';k=0;m1=0;while k<=cishuv=A*x;[vmax,k]=max(abs(v));m=v(k);x=v/m;if abs(m-m1)<jingdubiaozhi='迭代成功!';break;endm1=m;k=k+1;end3、拉格朗日插值function [c,l]=lglr(x,y)%x为n个节点的横坐标组成的向量,y为纵坐标组成的向量%c为插值函数的系数组成的向量%输出为差值多项式的系数w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1v=1;for j=1:n+1if k~=jv=conv(v,poly(x(j)))/(x(k)-x(j));endendl(k,:)=v;endc=y*l;举例4、改进欧拉法function yout=gaijinoula(f,x0,y0,xn,n)%定义输入输出x=zeros(1,n+1);y=zeros(1,n+1);x(1)=x0;y(1)=y0;h=(xn-x0)/n;for i=1:nx(i+1)=x(i)+h;z0=y(i)+h*feval(f,x(i),y(i));y(i+1)=y(i)+(feval(f,x(i),y(i))+feval(f,x(i+1),z0))*h/2; endshuchu=[x',y']fprintf(' x(i) y(i)')function Dy=f(x,y)Dy=x+y;5、最小二乘M文件:function c=zxrc(x,y,m)%x 是数据点横坐标,y 数据点纵坐标%m 要构造的多项式的系数,c 是多项式由高到低的系数所组成的向量 n=length(x);b=zeros(1:m+1);f=zeros(n,m+1);for k=1:m+1f(:,k)=x'.^(k-1);enda=f'*f;b=f'*y';c=a\b;c=flipud(c);-2-1.5-1-0.500.51 1.52---6、矩阵相关的算法(1).求矩阵的行列式function d=hanglieshi(a)%求任意输入矩阵的行列式clear all;a=input('输入矩阵a=');d=1;n=size(a); %方阵的行(或者列)数for k=1:n-1e=a(k,k); %设矩阵的主元for i=k:n %求出矩阵的全主元for j=k:nif abs(a(i,j))>ee=a(i,j);p=i;q=j;else c=0;endendendfor j=k:n %行交换t=a(k,j);a(k,j)=a(p,j);a(p,j)=t;endif p~=k %判断行列式是否换号d=d*(-1);else d=d;endfor i=k:n %列交换t=a(i,k);a(i,k)=a(i,q);a(i,q)=t;endif q~=k %判断行列式是否换号d=d*(-1);else d=d;endif a(k,k)~=0for i=k+1:n %消元r=a(i,k)/a(k,k);for j=k+1:na(i,j)=a(i,j)-r*a(k,j);endendelse d=d;endendfor i=1:n%求行列式d=d*a(i,i);enddisp('矩阵a的行列式为:')d(2)矩阵的换行function c=huanhang(a)%实现矩阵换行clear all;a=input('输入矩阵a=');[m,n]=size(a);for j=1:nt=a(1,j);a(1,j)=a(2,j);a(2,j)=t;endc=a;disp('换行后矩阵a变为:')c(3)列主元消元法解方程function d=jiefang(a)%列主元消元法解方程clear all;a=input('输入矩阵a=');[row,column]=size(a);for i=1:column%每一列的列标m(i)=i;s(i)=0;x(i)=0;endfor k=1:row-1%最后一行不用比较e=a(k,k);p=k;q=k;for i=k:rowfor j=k:column-1if abs(a(i,j))>abs(e)e=a(i,j);p=i;q=j;else c=0;endendendt=m(k); %换列标记m(k)=m(q);m(q)=t;for i=1:row %列交换t=a(i,k);a(i,k)=a(i,q);a(i,q)=t;endfor j=k:column %行变换t=a(k,j);a(k,j)=a(p,j);a(p,j)=t;endif a(k,k)==0 %消元disp('非唯一解')else for i=k+1:rowr=a(i,k)/a(k,k);for j=k:columna(i,j)=a(i,j)-r*a(k,j);endendendendif a(row,row)==0disp('非唯一解')elses(row)=a(row,column)/a(row,row);s(row)q=m(row);x(q)=s(row);for i=row-1:1for j=i+1:rows(i)=s(i)+a(i,j)*x(i);ends(i)=[a(i,column)-s(i)]/a(i,i);q=m(i);x(q)=s(i);endendfor i=1:rowx(i)endend(4)两矩阵相乘function d=chengfa(A,B)% 实现两个矩阵相乘clear all;A=input('输入矩阵A=');B=input('输入矩阵B=')[m n]=size(A);[nb p]=size(B);C=zeros(m,p);if n~=nbdisp('不满足矩阵相乘条件') else for i=1:mfor j=1:pd=0;for k=1:nd=d+A(i,k)*B(k,j);endC(i,j)=d;endenddisp('矩阵AB结果为:')CEnd(5)矩阵元素最大值及下标function d=xunzhuyuan(a)%求一个矩阵的最大元素及其下标clear all;a=input('输入矩阵a=');e=a(1,1); %设e=a(1,1)为最大元素p=1;q=1;[m,n]=size(a);for i=1:mfor j=1:nif abs(a(i,j))>ee=a(i,j);p=i;q=j;else c=0;endendenddisp('最大元素为:')d=a(p,q)disp('最大元素所在的行为:')pdisp('最大元素所在的列为:')qend(6)矩阵元素最大值及下标function d=zuidazhi(A)%求矩阵的最大元素及其下标clear all;A=input('输入矩阵A=');B=A'; %转置[a,r]=max(A); %求出矩阵A每一列的最大值和每列最大值所在的行数[maxV,column]=max(a); %最大元素及其所在的列[b,c]=max(B);[maxV1,row]=max(b);%最大元素及其所在的行disp('矩阵A的最大元素为:')maxVdisp('矩阵A最大元素所在的列为:')columndisp('矩阵A最大元素所在的行为:')row。
数值分析试验幂法与反幂法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).二、算法的流程图(一)幂法算法的流程图为 v )(k = A 1-u )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k (2)2、对于反幂法的定理按式(2)计算出的m k 和u )(k 满足:∞>-k lim m k =nλ1, ∞>-k lim u )(k =)max (n n x x 在式(2)中,需要用到A 1-,这给计算带来很大的不方便,因此,把(2)式的第一式改为求解线性方程组A v )(k = u )1(-k (3) 但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A 作LU 分解,即 A=LU所以线性方程组(3)改为Ly )(k =u )1(-k ,Uv )(k =y )(k 四、相关的数值结果(一)幂法程序的运行结果m = 3.4142 u = -0.7071 index = 11.0000-0.7071(二)反幂法程序的运行结果m 0 = 0.5858 u = 0.7071 index = 11.00000.7071(三)矩阵A 的二条件数的结果ⅡA Ⅱ2* ⅡA -1Ⅱ2=cond2(A )=m/ m 0=3.4142/0.5858=5.828269五、数值计算结果的分析求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题。
幂法和反幂法的matlab实现

幂法和反幂法的matlab实现幂法求矩阵主特征值及对应特征向量摘要矩阵特征值的数值算法,在科学和工程技术中很多问题在数学上都归结为矩阵的特征值问题,所以说研究利用数学软件解决求特征值的问题是非常必要的。
实际问题中,有时需要的并不是所有的特征根,而是最大最小的实特征根。
称模最大的特征根为主特征值。
幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,它最大的优点是方法简单,特别适用于大型稀疏矩阵,但有时收敛速度很慢。
用java来编写算法。
这个程序主要分成了四个大部分:第一部分为将矩阵转化为线性方程组;第二部分为求特征向量的极大值;第三部分为求幂法函数块;第四部分为页面设计及事件处理。
其基本流程为幂法函数块通过调用将矩阵转化为线性方程组的方法,再经过一系列的验证和迭代得到结果。
关键字:主特征值;特征向量;线性方程组;幂法函数块POWER METHOD FOR FINDING THE EIGENVALUES AND CORRESPONDING EIGENVECTORS OF THEMATRIXABSTRACTNumerical algorithm for the eigenvalue of matrix, in science and engineering technology, alot of problems in mathematics are attributed matrix characteristic value problem, so that studies using mathematical software to solve the eigenvalue problem is very necessary. In practical problems, sometimes need not all eigenvalues, but the maximum and minimum eigenvalue of real. The characteristic value of the largest eigenvalue of the modulus maximum.Power method is a calculation of main features of the matrix values (matrix according to the characteristics of the largest value) and the corresponding eigenvector of iterative method. It is the biggest advantage is simple method, especially for large sparse matrix, but sometimes the convergence speed is very slow.Using java to write algorithms. This program is divided into three parts: the first part is the matrix is transformed into linear equations; the second part for the sake of feature vector of the maximum; the third part isthe exponentiation function block. The fourth part is the page design and eventprocessing .The basic process is a power law function block by calling the matrix is transformed into linear equations method, after a series of validation and iteration results.Power method for finding the eigenvalues and corresponding eigenvectors of the matrixKey words: Main eigenvalue; characteristic vector; linear equations; power function block、目录1幂法......................................................... . (1)1.1幂法的基本理论和推导 (1)1.2幂法算法的迭代向量规范化 (2)2概要设计........................................................ (3)2.1设计背景 (3)2.2运行流程........................................... . (3)2.3运行环境........................................... (3)3程序详细设计 (4)3.1矩阵转化为线性方程组……..………………………………………. .43.2特征向量的极大值 (4)3.3求幂法函数块............….....…………...…......…………………………3.4界面设计与事件处理..........................................................................4运行过程及结果................................................ (6)4.1 运行过程....................................... ..................………………………………………. .64.2 运行结果................................................ .. (6)4.3 结果分析.......................................... (6)5结论 (7)参考文献 (8)附录 (56)1 幂法设实矩阵nn ijaA ⨯=)(有一个完备的特征向量组,其特征值为n λλλ ,,21,相应的特征向量为nx x x ,,21。
数值分析 -第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圆盘.
数值分析幂法和反幂法

| 1 |>| 1 |≥…≥| 1 |
n
n 1
1
对 A 1 实行幂法,就可得 A 1 的绝对值最大的特征值 1/ n 和相应的特征向量, 即 A 的绝对值最小的特征值和相应的特征向量。
由于用 A 1 代替 A 作幂法计算,因此该方法称为反幂法,反幂法的迭代格
说
( I-A)x=0
(3)
明
的解,就可得到相应的特征向量。
上述方法对于 n 很小时是可以的。但当 n 稍大时,计算工作量将以惊
人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,
自然就不必说求解方程(2)与(3)的困难了。幂法是一种计算矩阵主特
征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,特别是用于
按式(1)计算出 m k 和 u (k ) 满足
lim
k
m
k
=
1
,
lim u (k ) = x1
k
max(x1 )
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。是对 幂法的修改,可以给出更快的收敛性。
1、反幂法的迭代格式与收敛性质
设 A 是非奇异矩阵,则零不是特征值,并设特征值为 | 1 |≥| 2 |≥…≥| n1 |>| n |
幂法流程图:
开始
输入 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
index=1;break; 输出:m,u,index
北航数值分析-lec7-幂法和反幂法

迭代收敛性
反幂法在求解特征值问题中的应用
特征值问题
反幂法主要用于求解矩阵的特征值和特征向量问题。通过迭代过程,反幂法能够找到矩阵的所有特征 值和对应的特征向量。
数值稳定性
反幂法在求解特征值问题时,需要关注数值稳定性问题。由于计算机浮点运算的误差累积,反幂法可 能会产生数值不稳定的解。因此,需要采取适当的策略来提高数值稳定性。
误差分析比较
幂法
由于幂法是通过连续的矩阵乘法来计算矩阵的幂,因此误差会随着计算的次数逐渐 累积。为了减小误差,需要选择合适的计算精度和减少计算次数。
反幂法
反幂法是通过求解线性方程组来计算矩阵的逆和行列式,因此误差主要来自于线性 方程组的求解精度。为了减小误差,需要选择合适的求解方法和提高求解精度。
202X
北航数值分析-lec7-幂法 和反幂法
单击此处添加副标题内容
汇报人姓名 汇报日期
目 录幂法介绍Fra bibliotek反幂法介绍
幂法和反幂法的比较
幂法和反幂法的实现细节
幂法和反幂法的实际应用案例
单击此处输入你的正文,文字是
您思想的提炼,请尽量言简意赅
的阐述观点
contents
单击此处输入你的正文,文字是 您思想的提炼,请尽量言简意赅 的阐述观点
反幂法的实现细节
反幂法是一种迭代算法,用 于求解线性方程组的近似逆。
反幂法的收敛速度取决于矩阵的谱 半径,如果矩阵的谱半径较小,则 反幂法收敛速度较快。
ABCD
反幂法的实现步骤包括:选择初始 矩阵、计算迭代矩阵、更新解矩阵 和判断收敛性。
在实际应用中,反幂法通常用于 求解大规模稀疏线性系统的预处 理和后处理问题。
01
幂法和反幂法的matlab实现

幂法和反幂法的matlab实现幂法求矩阵主特征值及对应特征向量摘要矩阵特征值的数值算法,在科学和工程技术中很多问题在数学上都归结为矩阵的特征值问题,所以说研究利用数学软件解决求特征值的问题是非常必要的。
实际问题中,有时需要的并不是所有的特征根,而是最大最小的实特征根。
称模最大的特征根为主特征值。
幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法,它最大的优点是方法简单,特别适用于大型稀疏矩阵,但有时收敛速度很慢。
用java来编写算法。
这个程序主要分成了四个大部分:第一部分为将矩阵转化为线性方程组;第二部分为求特征向量的极大值;第三部分为求幂法函数块;第四部分为页面设计及事件处理。
其基本流程为幂法函数块通过调用将矩阵转化为线性方程组的方法,再经过一系列的验证和迭代得到结果。
关键字:主特征值;特征向量;线性方程组;幂法函数块POWER METHOD FOR FINDING THE EIGENVALUES AND CORRESPONDING EIGENVECTORS OF THEMATRIXABSTRACTNumerical algorithm for the eigenvalue of matrix, in science and engineering technology, alot of problems in mathematics are attributed matrix characteristic value problem, so that studies using mathematical software to solve the eigenvalue problem is very necessary. In practical problems, sometimes need not all eigenvalues, but the maximum and minimum eigenvalue of real. The characteristic value of the largest eigenvalue of the modulus maximum.Power method is a calculation of main features of the matrix values (matrix according to the characteristics of the largest value) and the corresponding eigenvector of iterative method. It is the biggest advantage is simple method, especially for large sparse matrix, but sometimes the convergence speed is very slow.Using java to write algorithms. This program is divided into three parts: the first part is the matrix is transformed into linear equations; the second part for the sake of feature vector of the maximum; the third part isthe exponentiation function block. The fourth part is the page design and eventprocessing .The basic process is a power law function block by calling the matrix is transformed into linear equations method, after a series of validation and iteration results.Power method for finding the eigenvalues and corresponding eigenvectors of the matrixKey words: Main eigenvalue; characteristic vector; linear equations; power function block、目录1幂法......................................................... . (1)1.1幂法的基本理论和推导 (1)1.2幂法算法的迭代向量规范化 (2)2概要设计........................................................ (3)2.1设计背景 (3)2.2运行流程........................................... . (3)2.3运行环境........................................... (3)3程序详细设计 (4)3.1矩阵转化为线性方程组……..………………………………………. .43.2特征向量的极大值 (4)3.3求幂法函数块............….....…………...…......…………………………3.4界面设计与事件处理..........................................................................4运行过程及结果................................................ (6)4.1 运行过程....................................... ..................………………………………………. .64.2 运行结果................................................ .. (6)4.3 结果分析.......................................... (6)5结论 (7)参考文献 (8)附录 (56)1 幂法设实矩阵nn ij a A ⨯=)(有一个完备的特征向量组,其特征值为nλλλ ,,21,相应的特征向量为nx x x ,,21。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、问题的描述及算法设计
(一)问题的描述
我所要做的课题是:对称矩阵的条件数的求解设计 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).
二、算法的流程图(一)幂法算法的流程图
(二)反幂法算法的流程图
三、算法的理论依据及其推导
(一)幂法算法的理论依据及推导
幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
1、幂法的迭代格式与收敛性质
设n 阶矩阵A 的特征值1λ,2λ,…,n λ是按绝对值大小编号的,x i (i=1,2,…,n)为对应i λ的特征向量,且1λ为单根,即
|1λ|>|2λ|≥…≥|n λ|
则计算最大特征值与特征向量的迭代格式为
v )(k =Au )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k (1)
其中max(v )(k )表示向量v )(k 绝对值的最大分量。
2、对于幂法的定理
按式(1)计算出m k 和u )(k 满足 ∞
>-k lim m k =1λ, ∞
>-k lim u )(k =
)
max (11
x x
(二)反幂法算法的理论依据及推导
反幂法是用来计算绝对值最小的特征值忽然相应的特征向量的方法。
是对幂法的修改,可以给出更快的收敛性。
1、反幂法的迭代格式与收敛性质
设A 是非奇异矩阵,则零不是特征值,并设特征值为
|1λ|≥|2λ|≥…≥|1-n λ|>|n λ|
则按A 1-的特征值绝对值的大小排序,有 |
n
λ1
|>|
1
1
-n λ|≥…≥|
1
1
λ|
对A 1-实行幂法,就可得A 1-的绝对值最大的特征值1/n λ和相应的特征向量,即A 的绝对值最小的特征值和相应的特征向量。
由于用A 1-代替A 作幂法计算,因此该方法称为反幂法,反幂法的迭代格
式为 v )(k = A 1-u )1(-k ,m k =max(v )(k ), u )(k = v )(k / m k (2) 2、对于反幂法的定理
按式(2)计算出的m k 和u )(k 满足:
∞>-k lim m k =n
λ1
, ∞>-k lim u )(k =)max (n n x x
在式(2)中,需要用到A 1-,这给计算带来很大的不方便,因此,把(2)式的第一式改为求解线性方程组
A v )(k = u )1(-k (3) 但由于在反幂法中,每一步迭代都需求解线性方程组(3)式,迭代做了大量的重复计算,为了节省工作量,可事先把矩阵A 作LU 分解,即 A=LU 所以线性方程组(3)改为
Ly )(k =u )1(-k ,Uv )(k =y )
(k
四、相关的数值结果
(一)幂法程序的运行结果
m = 3.4142 u = -0.7071 index = 1
1.0000
-0.7071
(二)反幂法程序的运行结果
m 0 = 0.5858 u = 0.7071 index = 1 1.0000 0.7071
(三)矩阵A 的二条件数的结果
ⅡA Ⅱ2* ⅡA -1Ⅱ2=cond2(A )=m/ m 0=3.4142/0.5858=5.828269
五、数值计算结果的分析
求n阶方阵A的特征值和特征向量,是实际计算中常常碰到的问题。
对于n 阶矩阵A,若存在数λ和n维向量x满足
Ax=λx (1)
则称λ为矩阵A的特征值,x为相应的特征向量。
由线性代数知识可知,特征值是代数方程
|λI-A|=λn+a
λ1-n+…+a1-nλ+a n=0 (2)
1
的根。
从表面上看,矩阵特征值与特征向量的求解问题似乎很简单,只需求解方程(2)的根,就能得到特征值λ,再解齐次方程组
(λI-A)x=0 (3)的解,就可得到相应的特征向量。
上述方法对于n很小时是可以的。
但当n稍大时,计算工作量将以惊人的速度增大,并且由于计算带有误差,方程(2)未必是精确的特征方程,自然就不必说求解方程(2)与(3)的困难了。
本次实验所用的幂法和反幂法分别是求解最大特征值和最小特征值,并根据它们的结果求解二条件数。
幂法和反幂法的Matlab程序很好的解决了手算时所会遇到的麻烦。
通过实验我们可以看到,幂法程序可以用来计算矩阵绝对值最大的特征值及相应的特征向量。
幂法的缺点是开始的时候并不知道矩阵是否有单一的主特征值。
也不知道如何选择x
以保证它关于矩阵特征向量的表达中包含一个与主特
征值相关的非零特征向量。
反幂法程序可以用来计算矩阵绝对值最小的特征值及相应的特征向量,反幂法的收敛是线性的,它是对幂法的修改,可以给出更快的收敛性。
六、附件
(一) 幂法程序
/*幂法程序,函数名:pow.m*/
function[m,u,index]=pow(A,ep,N)
%A为矩阵;ep为精度要求;N为最大迭代次数;m为绝对值最大的特征值;u为对应最大特征值的特征向量。
N=100;
ep=1e-6;
n=length(A);u=ones(n,1);
index=0;k=0;m1=0;
while k<=N
v=A*u;[vmax,i]=max(abs(v));
m=v(i);u=v/m;
if abs(m-m1)<ep
index=1;break;
end
m1=m;k=k+1;
end
输入A=[2 -1 0;-1 2 -1;0 -1 2];
[m,u,index]=pow(A,1e-6)
(二) 反幂法程序
/*反幂法程序,函数名:pow_inv.m*/
,u,index]=pow_inv(A,ep,N)
function[m
%A为矩阵;ep为精度要求;N为最大迭代次数;m
为绝对值最小的特征值;
u为对应最小特征值的特征向量。
N=100;
ep=1e-6;
n=length(A);u=ones(n,1);
index=0;k=0;m1=0;
invA=inv(A);
while k<=N
v=invA*u;[vmax,i]=max(abs(v));
m
0=v(i);u=v/ m
;
if abs(m-m1)<ep
index=1;break; end
m1 m
;k=k+1; end
m
0=1/ m
;
输入A=[2 -1 0;-1 2 -1;0 -1 2]; [m
,u,index]=pow_inv(A,1e-6)
七、参考文献:
(1)薛毅.数值分析与实验.北京工业大学出版社.2005
(2)杜廷松等. 数值分析及实验.科学出版社,2006
(3)Richard L.Burden等. 数值分析(第七版)高等教育出版社,2005
数理系课程设计评分表
课程名称:
教师签名:
日期:
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考。