幂法求矩阵A按模最大的特征值及其特征向量
幂法求矩阵最大特征值

幂法求矩阵最大特征值摘要在物理、力学和工程技术中的很多问题在数学上都归结为求矩阵特征值的问题,而在某些工程、物理问题中,通常只需要求出矩阵的最大的特征值(即主特征值)和相应的特征向量,对于解这种特征值问题,运用幂法则可以有效的解决这个问题。
幂法是一种计算实矩阵A的最大特征值的一种迭代法,它最大的优点是方法简单。
对于稀疏矩阵较合适,但有时收敛速度很慢。
用java来编写算法。
这个程序主要分成了三个大部分:第一部分为将矩阵转化为线性方程组;第二部分为求特征向量的极大值;第三部分为求幂法函数块。
其基本流程为幂法函数块通过调用将矩阵转化为线性方程组的方法,再经过一系列的验证和迭代得到结果。
关键词:幂法;矩阵最大特征值;j ava;迭代POWER METHOD TO CALCULATE THE MAXIMUMEIGENV ALUE MATRIXABSTRACTIn physics, mechanics and engineering technology of a lot of problems in math boil down to matrix eigenvalue problem, and in some engineering, physical problems, usually only the largest eigenvalue of the matrix (i.e., the main characteristics of the value) and the corresponding eigenvectors, the eigenvalue problem for solution, using the power law can effectively solve the problem.Power method is A kind of computing the largest eigenvalue of real matrix A of an iterative method, its biggest advantage is simple.For sparse matrix is right, but sometimes very slow convergence speed.Using Java to write algorithms.This program is mainly divided into three most: the first part for matrix can be converted to linear equations;The second part is the eigenvector of the maximum;The third part is the exponentiation method of function block.Its basic process as a power law function block by calling the method of matrix can be converted to linear equations, then after a series of validation and iteration to get the results.Key words: Power method; Matrix eigenvalue; Java; The iteration目录1幂法 (1)1.1 幂法基本思想 (1)1.2规范化 (2)2概要设计 (3)2.1 设计背景………………..…………………………………………………………. .32.2 运行流程 (3)2.3运行环境 (3)3 程序详细设计 (4)3.1 第一部分:矩阵转化为线性方程组……..………………………………………. .43.2 第二部分:特征向量的极大值 (4)3.3 第三部分:求幂法函数块 (5)4 运行过程及结果 (6)4.1 运行过程.........................................................………………………………………. .64.2 运行结果 (6)4.3 结果分析 (6)5 心得体会 (7)参考文献 (8)附录:源程序 (9)1 幂法设A n 有n 个线性相关的特征向量v 1,v 2,…,v n ,对应的特征值λ1,λ2,…,λn ,满足|λ1| > |λ2| ≥ …≥ |λn |1.1 基本思想因为{v 1,v 2,…,v n }为C n的一组基,所以任给x (0)≠ 0,∑==ni i i v a x 1)0( —— 线性表示所以有])([)(21111111)0(∑∑∑∑====+====ni ii ki kni k k i i ni ik i n i i i kk v a v a v a v A a v a A xA λλλλ若a 1 ≠ 0,则因11<λλi 知,当k 充分大时 A (k )x (0) ≈ λ1ka 1v 1 = cv 1 属λ1的特征向量,另一方面,记max(x ) = x i ,其中|x i | = ||x ||∞,则当k 充分大时,111111*********)0(1)0()max()max()max()max()max()max(λλλλλ==≈---v a v a v a v a x A x A k kk k k k若a 1 = 0,则因舍入误差的影响,会有某次迭代向量在v 1方向上的分量不为0,迭代下去可求得λ1及对应特征向量的近似值。
计算方法之计算矩阵的特征值和特征量

4
1 取对应于1=4的基础解向量 P1 1 则对应于1=4的全部特征向量为:kP1 (k 0)
(2)2=2 将1=2代入(A-E)X=0得(A-2E)X=0
3 2 1 x1 1 3 2 x 0 2
总可以用 Xi 的线性组合来表示: V(0)=1X1+ 2X2+...+ nXn(其中10) 取 V(1)=AV(0) V(2)=AV(1)=A2V(0) ……
10
V(k+1)=AV(k) =Ak+1V(0) 以构成向量迭代序列。 由矩阵特征值的定义有: AXi=iXi (i=1,2,...,n) 则有
k 1 1
i [ 1 X 1 i i2 1
n
k 1
Xi ]
11
V 同理可得:
(k )
i [ 1 X 1 i X i ] i2 1
n k 1 n k 1
k
V(k+1)的第j个分量:
16
(二)按模最大特征值是互为反号的实根 设n 阶方阵A有 n 个线性无关的特征向量 Xi , 其对应的特征值为i (i=1,2,...,n),且满足: |1| = |2|>|3| … |n|,设其中1>0, 1=- 2
由迭代变换: V ( k ) Ak V ( 0 )
3 1 求矩阵 A 1 3 的特征值与特征向量
3
解:计算特征多项式方程,即 3 1 A E ( 3 )2 1 0 1 3 解得A的两个特征值:1=4, 2=2。 (1)1=4 将1=4代入 (A-E)X=0得(A-4E)X=0
第7章矩阵特征值和特征向量的数值解

3 2.689 319 6.737 850 6.747 559 0.398 562 0.998 561 1.000 000
4 1.595 686 2.379 870 2.381 309 0.670 088 0.999 396 1.000 000
5 2.680 956 6.772 616 6.723 220 0.398 761 0.999 910 1.000 000
的常用方法是迭代每一步对向量 u (k ) 规范化。引入函数 max( u (k ) ),它表示取
向 量 u (k ) 中 按模 最大 的分 量,例 如, u (k ) =(2,-5,4)T,则 max( u (k ) )=-5,这 样
u(k) ma x(u
(k
)
)
的最大分量为
1,即完成了规范化。
7.1 幂法
(6) if mk m0 或 mk m0 (1 mk ) then 输
出 mk , vi (i 1,2,, n), 停止计算; (7) m0 mk ; k k 1; 返回第 3 步。
例 7.1.1 试用幂法求矩阵
7 3 - 2
A
3
4
-
1
- 2 -1 3
按模最大的特征值和相应的特征向量 ( 105 ) 。
k
u(k)
v(k)
0
0.4
0.5
0.6
0.666 667 0.833 33 1.000 00
1 2.833 335 7.000 06 7.166 673 0.395 349 0.976 744 1.000 00
2 1.604 652 2.372 096 2.395 352 0.669 902 0.990 291 1.000 000
幂法(指数迭代法)

幂法(指数迭代法) 幂法是通过迭代来计算矩阵的主特征值(按模最⼤的特征值)与其对应特征向量的⽅法,适合于⽤于⼤型稀疏矩阵。
基本定义 设A=(a ij)∈R n×n,其特征值为λi,对应特征向量x i(i=1,...,n),即Ax i=λi x i(i=1,...,n),且{x1,...,x n}线性⽆关。
任取⼀个⾮零向量v0∈R n,且v0≠0,构造⼀个关于矩阵A的乘幂的向量序列:v k=Av k−1=A2v k−2=A3v k−3=...=A k v0 称v k为迭代向量。
设特征值λi的前r个为绝对值最⼤的特征值(ppt中分为λ1强占优和⾮强占优,感觉没必要),即有:|λ1|=|λ2|=...=|λr|>|λr+1|≥...≥|λn| 由于{x1,...,x n} 线性⽆关,所以构成R n的⼀个基,于是v0能被表达为:v0=n∑i=1αi x i(且设α1...αr⾮全零) 由Ax i=λi x i:v k=Av k−1=...=A k v0=n∑i=1A kαi x i=n∑i=1λk iαi x i=λk1(r∑i=1αi x i+εk) 其中:εk=n∑i=r+1(λiλ1)kαix i 因为λ1最⼤,所以有|λiλ1|<1 (i=r+1,...,n),从⽽有:limk→∞(λiλ1)k=0 (i=r+1,...,n) 所以有:limk→∞εk=0limk→∞v k=limk→∞λk1(r∑i=1αi x i+εk)=limk→∞λk1(r∑i=1αi x i) 因为在上式中(r∑i=1αi x i)是固定项,可以看出,迭代到后期,v k+1和v k的各个元素有固定⽐值λ1,即:limk→∞(v k+1)i(v k)i=λ1 这样,收敛到主特征值后,还可另外计算它对应的⼀个特征向量(其实就是构成v0的前r项之和,⽽且只能算⼀个):lim k→∞v kλk1=r∑i=1αi x i 其中收敛速度由⽐值|λr+1λ1|决定,越⼩收敛越快。
矩阵特征值与特征向量的计算_OK

n阶方阵A的特征值是特征方程 PA()=det(A-E)=0
的根.
A的特征向量是齐次线性方程组 (A-E)x=0
的非零解.
PA()是的高次的多项式,它的求根是很困难的。设法通
过数值方法是求它的根。
通常对某个特征值,可以用些针对性的方法来求其近似值。
若要求所有的特征值,则可以对A做一系列的相似变换,
“收敛”到对角阵或上(下)三角阵,
可得
n
xk
Ak x0 max(Ak x0 )
11 m ax (11
i
(
i 1
)
k
i
i2
n
i
(
i 1
)
k
i
)
7
i2
所以
8.1.1 幂法
n
xk
Ak x0 max(Ak x0 )
11
i
(
i 1
)
k
i
i2
n
max(11
i
(
i 1
)
k
i
)
lim
k
xk
11 max (11 )
i2 1
max (1 )
y=x/max(x)为向量x例的如规,范设化向向量量x=. (2,1,-5,-1)T,则max(x)=-5,y=(-0.4,-
0.2,1,0.2)T.可见规范化向量y总满足‖y‖=1.
幂法的规范化计算公式为: 任取初始向量x0=y0 0,计算
yk
Axk1
mk max(yk ) xk yk / mk , k 1,2,3,
1 1 1 1
n
n1
n2
1
对应的特征向量为ξn, ξn-1,…, ξ1.
第10章MATLAB特征值与特征向量的计算实例解析

• A=[9 2 1 2 2;2 4 3 3 3;1 3 7 3 4;2 3 3 5 4;2 3 4 4 5];
• chol_test(A)
• B运=[行16结17果9:12 12;17 12 12 2 18;9 12 18 7 13;12 2 7 18 12;12 18 13 12 10];
• chCo=l_test(B)
k1 k2
m1
k2 m2
0
0
k2 m1 k2 k3 m2 k3 m3
0
0
k3 m2 k3 k4 m3 k4 m4
0
0
f1
f1
f2
2
f2
k4 m3
f3 f4
f3
f4
k4
m4
• 即2为上述系数矩阵的特征值。
• 若给定如下条件则可以编写程序example_10_10.m。
运行结果: x_nlimit =
即当n 时,
an
a0
1 2
b0 , bn
0, cn
c0
1 2
b0
a0 + b0/2
0
后代仅具有基因AA和aa。
b0/2 + c0
二、常染色体隐性病模型
1
M
=
0
1/ 2 1/ 2
最终隐性患者消失, 全部均为显性患者。
三、X—链遗传模型
X—链遗传是指雄性具有一个基因A或a,雌性具有两个基因AA或Aa或aa。其遗 传规律是雄性后代以相等概率得到母体两个基因中的一个,雌性后代从父体中 得到一个基因,并从母体的两个基因中等可能地得到一个。
2 4 6
【例10-1】给定矩阵
A
3
9
求矩阵特征值算法及程序

求矩阵特征值算法及程序简介1.幂法1、幂法规范化算法(1)输入矩阵A、初始向量( 0),误差eps;(2) k 1;(3)计算V(k)A(k 1);(4)m k max(V(k)) ,m k1max( V ( k 1));(5) (k)V(k)/m k;(6)如果m k m k 1eps,则显示特征值1和对应的特征向量x(1) ),终止;(7)k k 1, 转(3)注:如上算法中的符号max(V )表示取向量V 中绝对值最大的分量。
本算法使用了数据规范化处理技术以防止计算过程中出现益出错误。
2、规范化幂法程序Clear[a,u,x];a=Input[" 系数矩阵A="];u=Input[" 初始迭代向量u(0)="]; n=Length[u];eps=Input[" 误差精度eps ="]; nmax=Input[" 迭代允许最大次数nmax="];fmax[x_]:=Module[{m=0,m1,m2},Do[m1=Abs[x[[k]]];If[m1>m,m2=x[[k]];m=m1], {k,1,Length[x]}];m2]v=a.u;m0=fmax[u];m1=fmax[v]; t=Abs[m1-m0]//N;k=0;While[t>eps&&k<nmax,u=v/m1;v=a.u;k=k+1;m0=m1;m1=fmax[v];t=Abs[m1-m0]//N;Print["k=",k," 特征值=",N[m1,10]," 误差=",N[t,10]];Print[" 特征向量=",N[u,10]]];If[k nmax,Print[" 迭代超限"]]说明:本程序用于求矩阵A按模最大的特征值及其相应特征向量。
matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量

竭诚为您提供优质文档/双击可除matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量篇一:幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量数值计算解矩阵的按模最大最小特征值及对应的特征向量一.幂法1.幂法简介:当矩阵a满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵a需要满足的条件为:(1)|1||2|...|n|0,i为a的特征值xn(2)存在n个线性无关的特征向量,设为x1,x2,...,1.1计算过程:n对任意向量x,有x(0)(0)iui,i不全为0,则有i1x(k1)ax(k)...ak1x(0)aαiuiαiλik1uik1i1i1nnnk12k1λ1u1()a2u2()anun11k111u1k112|越小时,收敛越快;且当k充分大时,有可见,当|1 (k1)k111u1x(k1)x(k1)(k)x1(k),对应的特征向量即是。
kxx11u12算法实现(1).输入矩阵a,初始向量x,误差限,最大迭代次数n(2).k1,0;y(k)x(k)max(abs(x(k))(3).计算xay,max(x);(4).若||,输出,y,否则,转(5)(5).若kn,置kk1,,转3,否则输出失败信息,停机.3matlab程序代码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相当于ifabs(z-b) t=max(x);return;endwhileabs(z-b)>epsz=b;y=x./max(abs(x));x=a*y;b=max(x);end[m,index]=max(a(matlab用规范化乘幂法求以下矩阵的按模最大特征值及其特征向量)bs(x));%这两步保证取出来的按模最大特征值t=x(index);%是原值,而非其绝对值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析
幂法求矩阵A按模最大的特征值及其
特征向量
幂法的主要思想
设 n
n ij R a A ⨯∈=)( ,其特征值为i λ ,对应特征向量为
),
,,1(n i x i
=即
i i i x Ax λ= )
,,1(n i =,且
x 1,······,x n
线性无关。
求矩阵A
的主特征值及对应的特征向量。
幂法的基本思想: 任取一个非零初始向量
v 0 ∈R n 且v 0≠0,
由矩阵A 的乘幂构造一向量序列:
称{
v
k }为迭代向量,
A 特征值中 λ1为强占优,即▕ λ1▕>▏λ2 ▏>······>▏λn ▏,
{x 1,x 2,······,x n }线性无关,即{x 1,x 2,······,x n }为R n 中的一
个基,于是对任意的初始向量v 0
∈R n 且
v
0≠0有展开式。
(v
0 用{x i }
的线性组合表示)
(且设01
≠α) 则
当k =2,3,… 时,v
k =
A v
k-1 =
A k v 0
⎩
⎨⎧0
1Av v =0
212v A Av v ==01
1
v A Av v k k k ++==)
,,1,0(n k =∑==n i i i x v 1
0 α)(221101n n x x x A v A v
ααα+++==n
n x A x A x A
ααα+++=2211n
n n x x x λαλαλα+++=222111)
(111
+≡x k
αλk ε
其中 由假设▕ λ1▕>▏λ2 ▏>······>▏λn ▏,得 ,从而 即,0lim =∞→k k ε且收敛速度由比值||12λλ=r 确定。
所以有
说明,当k 充分大时,有1
11
x v k k
αλ≈,或 k k
v 1λ 越来越接近特征
向量
规范化幂法的算法
①输入矩阵A 、初始向量v (0),误差eps ,实用中一般取v (0)=
(1,1,···,1)T ; ②k ←1;
③计算v
(k) ←Au (k-1);
④
m k
←max{ v (k) },m k-1
←{ v (k-1) };
⑤u (k) ←v (k)/ m k
;
⑥如果▕ m k - m k-1▕<eps ,则显示特征值λ1
←和对应的特征向
量x (1),终止;
⑦k=k+1,转③。
n k n n k k x x
)()(
1
2122λλαλλαε++=),,2(1||1n i i =<λλ
),,,2(0)(lim 1n i k i k ==∞→λλ111
lim x v k k
k
αλ=∞
→。
11x
α
幂法- C语言程序
#include<stdio.h>
#include<math.h>
void LOOP(float a[20][20],float u[20],int); //矩阵最高阶数是20,可以更改最高阶数float MAX(float u[20],int);
void main(void)
{
float a[20][20],u[20],x[20],y,z;
int i,j,n;
printf("请输入方阵阶数:\n");
scanf("%d",&n);
printf("请按行输入各矩阵元素值:");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{
scanf("%f",&a[i][j]);
}
}
printf("请输入初次迭代向量:");
for(i=0;i<=n-1;i++)
{
scanf("%f",&u[i]);
}
y=MAX(u,n);
do
{
z=y;
LOOP(a,u,n);
y=MAX(u,n);
for(i=0;i<=n-1;i++)
{
x[i]=u[i]/y;
u[i]=x[i];
}
}
while(fabs(z-y)>=0.0000005);
printf("矩阵特征值λ=%f\n",y);
printf("矩阵特征向量x:\n");
for(i=0;i<=n-1;i++)
{
printf("%10f\n",x[i]);
}
}
void LOOP(float a[20][20],float u[20],int n) {
float S,U[20];
int i,j;
for(i=0;i<=n-1;i++)
{
U[i]=u[i];
}
for(i=0;i<=n-1;i++)
{
S=0.0;
for(j=0;j<=n-1;j++) {
S=S+a[i][j]*U[j]; }
u[i]=S;
}
}
float MAX(float u[20],int n)
{
float max;
int i;
max=u[0];
for(i=0;i<=n-1;i++)
{
if(u[i]>max)
{
max=u[i];
}
}
return(max);
}
幂法- C语言程序检验
(见书P89 页)
【例4-1】
得出的结果与书上结果相同!
创新点:本程序可以更改矩阵大小,使其更加符合选择性,还可以改变误差的范围,程序简单易懂,运用数组解决矩阵输入的问题,简化了C语言程序。
结语
通过本次数值分析实验的研究,我发现我收获颇多:这次研究不仅加深了我对幂法以及相关求矩阵的特征值及其特征向量方法的了解,还使我对数值分析这门课有了更深的领悟:数值分析在计算机使用方面有很强的实用性。
一个问题,只要给出一个算法,就可以编出一个完美的程序,而且程序在算法结构以及误差分析方面有很高的准确度。
我在C语言方面也得到了很大的提高,编程更加流畅且出现错误的机会大大减少,查错的能力也有很大的进步。