防灾数学分享 http://blog.sciencenet.cn/u/fzmath 防灾科技学院数学教研室

博文

乘幂法和反幂法求方阵的最大和最小特征值

已有 17715 次阅读 2016-11-12 18:52 |个人分类:教学辅导|系统分类:教学心得

在层次分析建模中,需要计算一个方阵的最大特征值,和特征向量.

一、乘幂法

 实际问题中,矩阵 $\boldsymbol{A}$ 按模最大的特征值起着重要的作用,并且希望有较高的计算精度。因此,求矩阵按模最大特征值的问题十分重要。


设 $n$ 阶实矩阵 $\boldsymbol{A}$ 有 $n$ 个线性无关的特征向量 $\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_n$,对应的特征值满足

$\mid \lambda_1\mid > \mid\lambda_2\mid\geqslant\cdots\geqslant\mid\lambda_n\mid,$

下面求按模最大的特征值 $\lambda_1$ 和对应特征向量 $\boldsymbol{x}_1$.

求主特征值 $\lambda_1$ 及相应特征向量的步骤如下:

1 任给~$n$ 维初始向量 $\boldsymbol{u}_0\ne \boldsymbol{0}$;

2 按~$\boldsymbol{u}_k = \boldsymbol{Au}_{k-1}$;

3 如果从某个常数后,$\frac{(\boldsymbol{u}_k)_i}{(\boldsymbol{u}_k)_i}\approx c\text{常数},(i=1,2,\cdots,n.)$,则取 $\lambda_1 = c$ , 而$\boldsymbol{u}_k$ 就是与 ~$\lambda_1$ 对应的一个近似特征向量。

注:算法收敛速度主要取决于 $\mid\cfrac{\lambda_2}{\lambda_1}\mid$ 的大小。

例子: 求矩阵

$\textbfsymbol{A} = \begin{bmatrix} \dfrac{1}{4} & &\dfrac{1}{5}\\[8pt] \dfrac{1}{5} & &\dfrac{1}{6}\\[8pt] \end{bmatrix}$

的按模最大特征值及其特征向量。


A = [1/4 1/5;1/5 1/6]; u0 = [1;0]; uk = u0;for k = 1:4 u1 = A*u0; u0=u1; uk = [uk u0]; end;uk

uk =

1.0000    0.2500    0.1025    0.0423    0.0175    

0    0.2000    0.0833    0.0344    0.0142

>> uk(:,3:end)./uk(:,2:end-1)

ans =

0.4100    0.4126    0.4126    

0.4167    0.4127    0.4126

例子二,    

$\textbfsymbol{A} = \begin{bmatrix} -4 & 14 & 0 \\ -5 & 13 & 0 \\ -1 & 0 &2 \\ \end{bmatrix}$

的按模最大特征值及其特征向量。

幂法的程序为:

function [m, u] = powermethod(A, ep, it_max)

%  求矩阵最大模特征值的幂法,调用格式为

%   [m, u] = powermethod(A, ep, it_max)

%  其中

%  A 为矩阵,ep 为精度要求,默认为1e-5,

%  it_max 为最大迭代次数,默认为100

%  m 为模最大的特征值,u 为 m 对应的特征向量

if nargin < 3 it_max = 100; end

if nargin <2 ep = 1e-5; end;

n = length(A); u = ones(n,1); k = 0; m1 = 0;

while k <= it_max

   v = A*u; [vmax, i ] = max(abs(v));

   m  = v(i); u = v/m;

   if abs(m-m1)<ep break; end

   m1 = m; k = k+1;

end

上例中结果为:

>> A = [-4  14   0 ;-5   13   0 ; -1  0  2];

[m, u] = powermethod(A)

m =


6.0000

u =

1.0000

0.7143

-0.2500

二、反幂法

反幂法用来求非奇异矩阵按模最小的特征值和相应特征向量。约定同上。

步骤如下:

1   任给~$n$ 维初始向量$\boldsymbol{u}_0\ne \boldsymbol{0}$;

2  按$\boldsymbol{u}_k = \boldsymbol{A}^{-1}\boldsymbol{u}_{k-1},k=1,2,\cdots.$;

3 如果从某个常数后,$\frac{(\boldsymbol{u}_k)_i}{(\boldsymbol{u}_k)_i}\approx c\text{常数},(i=1,2,\cdots,n.)$,则取~$\lambda_n = \cfrac{1}{c}$ , 而$\boldsymbol{u}_k$ 就是与$\lambda_n$ 对应的一个近似特征向量。

实际计算$ \boldsymbol{A}^{-1}$ 困难,故上述迭代公式$\boldsymbol{u}_k = \boldsymbol{A}^{-1}\boldsymbol{u}_{k-1},k=1,2,\cdots.$ 常写为$\boldsymbol{A}\boldsymbol{u}_k = \boldsymbol{u}_{k-1},k=1,2,\cdots.$。反幂法计算量大。


function [m, u] = powerinvmethod(A, ep, it_max)

%  求矩阵最小模特征值的反幂法,调用格式为

%   [m, u] = powerinvmethod(A, ep, it_max)

%  其中

%  A 为矩阵,ep 为精度要求,默认为1e-5,

%  it_max 为最大迭代次数,默认为100

%  m 为模最小的特征值,u 为 m 对应的特征向量

if nargin < 3 it_max = 100; end

if nargin <2 ep = 1e-5; end;

n = length(A); u = ones(n,1); k = 0; m1 = 0;

while k <= it_max

   v = Au; [vmax, i ] = max(abs(v));

   m  = v(i); u = v/m;

   if abs(m-m1)<ep break; end

       m1 = m; k = k+1;

   end

   m = 1/m;

end

求矩阵

$\textbfsymbol{A} = \begin{bmatrix} 2& -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 &2 \\ \end{bmatrix}$

的按模最小特征值及其特征向量。

>> A= [2 -1 0;-1 2 -1;0 -1 2];

[m, u] = powerinvmethod(A)

m =

0.5858

u =

0.7071

1.0000

0.7071



https://blog.sciencenet.cn/blog-292361-1014376.html

上一篇:《高等工程数学》第三版 “第十一章 特征值与特征向量得计算”
下一篇:《高等工程数学》第三版 “第十二章 数理统计基本概念与抽样分布
收藏 IP: 124.238.130.*| 热度|

1 杨正瓴

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 21:55

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部