幂法求矩阵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);%是原值,而非其绝对值。
幂法是求方阵最大特征值及对应特征向量
若a1= 0,则因舍入误差的影响,会有某次迭代向量在v1方向上的分量不为0,迭代下去可求得1及对应特征向量的近似值。
2.
在实际计算中,若|1| > 1则|1ka1|,若|1| < 1则|1ka1|0都将停机。
须采用“规范化”的方法
例1,用幂法求 的最大模特征值及对应特征向量
见P312
function y = maxa(x)
k=1;n=length(x);
for i=2:n
if (abs(x(i))>abs(x(k)),k=i;
end;
end;
y=x(k);
A=[2,4,6;3,9,15;4,16,36];
x0=[1;1;1];
,k= 0,1,2,…
定理3.2-1任给初始向量 有,
证明:
而
注:若 的特征值不满足条件(3.2.1),幂法收敛性的分析较复杂,但若1=2=…=r且|1| > |r+1|…|n|则定理结论仍成立。
此时不同初始向量的迭代向量序列一般趋向于1的不同特征向量。
3.
求maxa(x)的流程,设数组x(n)数向量x的n个分量
y=x0/maxa(x0)
x1=A*y
while(abs(maxa(x1)-maxa(x0)))>0.001
x0=x1;
y=x0/maxa(x0)
x1=A*y
end;
y
maxa(x1)
数组x = [n]
k = 1
for(i = 2Байду номын сангаасto n, i++)
若|x[i]| > |x[k]|
幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量(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); % 是原值,而非其绝对值。
矩阵特征值和特征向量计算.ppt
j
=1
1
1
1
j
i
n 2
i
i 1
k
1
j
i
n 2
i
i 1
k
1
i
j
i
j
( 4.2)
lim
uk
j
k
uk1
j
1 ,
故k充
分
大
时
, uk
j
uk1
j
1 ,
(j
1,2,, n)
由(4.1)显然知k充分大时, 0 ,
x 故 uk ( 1k1 1 )就 是1对 应 的 近 似 特 征 向 量 。
v u v u u 如用
m
m
或 m
m
代替 继续迭代, m
u( )m max
(u ) min m
u u u 这里(
m )max 和(
m )min 分 别 表 示 向 量(
)的 绝 对 值
m
最 大 的 分 量 和 最 小 分 量;
4. 由(4.1),乘 幂 法 的 速 度 与 比 值| 2 | 有 关, 1
n
A1
x
1
x
一 定 是A1的
按
模
最
大
的
征值,故对A1用乘幂法— 反幂法,可得1 的近似值
算法(步1)骤:u0 0
n
( 2) (3)
计 算u k
1 A uk 1
(k 1,2,3,)
u 若k充分大后 ( u(
k)j c, ) k 1 j
则n
1 ,
c
uk
就
是n
注:实际相计对算应: A的u特征u向量三。角分解A LU ,
用幂法求解矩阵特征值和特征向量
x= -0.3930 -0.9774 0.2921 1.0000 第五题 A=[-1 2 1; 2 -4 1; 1 1 -6 ]; v0=[1 1 1]'; tol=1e-4; [lda,x]=mifa(A,v0,tol) lda = -6.4209
第4页
数值分析实验指导
x= -0.0463 -0.3746 000
( 1, 0, 1, 0, 0, 1 )T 105
1 21.30525 6 1.62139 x1 0.8724,0.5401,0.9973,0.5644,0.4972,1.0 T
第1页
数值分析实验指导
2 1 1 2 1 (3) A= 1 2 1 1 2 1 1 2 T 0 104 取 =( 1, 1, 1, 1, 1 ) 参考结果: 3.7321 3 4 2 1 1 3 1 5 (4) A= 3 1 6 2 4 5 2 1 T 2 取 0 =( 1, 1, 1, 1 ) , 10 。
第3页
数值分析实验指导
x= 0.5000 -0.8660 1.0000 -0.8660 0.5000 第四题 A=[2 1 3 4; 1 -3 1 5; 3 1 6 -2; 4 5 -2 -1 ]; v0=[1 1 1 1]'; tol=1e-2; [lda,x]=mifa(A,v0,tol) lda = -8.0136
下面再考虑主特征值 1 的的计算,用 (vk )i 表示 vk 的第 i 个分量,则
( x ) ( k 1 )i (vk 1 )i 1 1 1 i , (vk )i 1 ( x1 )i ( k )i
故
用幂法求矩阵的按模最大特征值例题
用幂法求矩阵的按模最大特征值例题上线性代数中,矩阵的特征值和特征向量是非常重要的概念。
特征值可以用于描述矩阵的特性和行为,而特征向量则可以帮助我们理解矩阵的变换规律。
而求解矩阵的特征值和特征向量是线性代数中的一个重要问题,其中幂法是一种常用的数值方法。
幂法是一种迭代算法,用于计算矩阵的按模最大特征值和对应的特征向量。
其基本思想是通过矩阵的幂次来逼近特征向量,从而得到特征值的近似值。
接下来,我们将通过一个具体的例题来介绍如何使用幂法求解矩阵的按模最大特征值。
例题:考虑矩阵\[A = \begin{bmatrix} 4 1 \\ 2 3 \end{bmatrix}\]我们的目标是使用幂法求解矩阵A的按模最大特征值和对应的特征向量。
步骤如下:1. 选择一个初始向量\(\mathbf{v}_0\),并将其归一化得到单位向量\(\mathbf{q}_0\)。
通常可以选择\(\mathbf{v}_0 = [1, 1]^T\)作为初始向量。
2. 计算矩阵A与单位向量\(\mathbf{q}_0\)的乘积:\(\mathbf{z}_1 = A\mathbf{q}_0\)。
3. 根据\(\mathbf{z}_1\)更新单位向量\(\mathbf{q}_1\):\(\mathbf{q}_1 = \frac{\mathbf{z}_1}{||\mathbf{z}_1||}\)。
4. 重复步骤2和步骤3,直到收敛或达到预定迭代次数。
接下来,我们通过代码来实现这个幂法求解矩阵的按模最大特征值的过程:```pythonimport numpy as np# 定义矩阵AA = np.array([[4, 1], [2, 3]])# 设定初始向量v = np.array([1, 1])# 设定迭代次数max_iter = 1000tolerance = 1e-6# 进行幂法迭代for i in range(max_iter):z = np.dot(A, v)v = z / np.linalg.norm(z)eigenvalue = np.dot(np.dot(v, A), v)if i > 0 and np.abs(eigenvalue - old_eigenvalue) < tolerance: breakold_eigenvalue = eigenvalueprint("按模最大特征值:", eigenvalue)print("对应的特征向量:", v)```通过运行上面的代码,我们可以得到矩阵A的按模最大特征值和对应的特征向量。
幂法求矩阵A按模最大的特征值及其特征向量
幂法求矩阵A按模最大的特征值及其特征向量幂法(Power Method)是一种求解矩阵特征值的迭代算法,在数值线性代数中被广泛使用。
它利用矩阵的特征向量的特性,通过迭代过程逼近矩阵按模最大的特征值及其对应的特征向量。
假设我们要求解一个n阶矩阵A的按模最大的特征值及其特征向量,其中特征值的绝对值最大,特征向量对应的是这个特征值。
我们设矩阵A的特征值为λ,对应的特征向量为x。
幂法的基本思想是:通过连续的矩阵向量乘法,不断迭代一个向量,使其逼近于x。
迭代过程中,向量的每个元素都会趋近于特征向量对应的分量,最终收敛到x。
下面是幂法的具体步骤:1.选择一个初始向量b0,可以是任意向量,但最好与特征向量接近。
2.进行迭代过程,直到满足终止条件:a) 计算向量bn(第n次迭代):bn = Abn-1b) 计算归一化因子:cn = ,bn,(向量bn的欧几里得范数)c) 归一化向量:xn = bn / cn(将向量bn除以归一化因子,得到归一化向量)3. 判断是否满足收敛要求,如果满足,算法终止,特征值λ的近似值为λ≈cn,特征向量x的近似值为x≈xn。
接下来,我们通过一个数值示例来说明幂法的计算过程。
假设有以下3x3矩阵A:A=[0.80.30.2]0.10.70.40.10.00.5我们将使用幂法来计算矩阵的按模最大的特征值及其特征向量。
步骤1:选择初始向量b0。
我们选择初始向量为b0=[1,1,1],即x 的两个分量值为1步骤2:进行迭代过程。
a)计算向量b1:b1=Ab0b1=[0.8*1+0.3*1+0.2*1,0.1*1+0.7*1+0.4*1,0.1*1+0.0*1+0.5*1] =[1.3,1.9,0.6]b)计算归一化因子c1:c1=,b1,=√(1.3^2+1.9^2+0.6^2)≈2.498c)归一化向量:x1=b1/c1x1=[1.3/2.498,1.9/2.498,0.6/2.498]=[0.520,0.760,0.240]步骤3:判断是否满足收敛要求。
求矩阵的特征值与特征向量
(0) T
迭代条件:
y ( k ) y ( k 1)
1
计算结果:
1 mk
u1 y
k k x( k ) Ax( k 1) 11 u1 2k u 2 2 n nun )
k k 2 n k 1 1u1 2 u u n 2 n 1 1
xHale Waihona Puke k )5.1.2 幂法的计算公式
分三种情况讨论: (1) 1 为实根,
且 1 2
x 1 x
( k 1) i (k ) i
, u1 x
1 2
(k )
(2) 1 为实根, 且 1 2 及 2 3
xi( k 2 ) 1 ( k ) x i ( k 1) (k ) u1 x 1 x
给出初值x(0),按迭代公式计算:x(k+1)=Ax(k) 根据迭代序列各分量的变化情况求根:
若各分量单调变化(相邻两个向量的各分量之比 趋向于常数c),则按情况一处理。
若奇序列、偶序列的各个分量比趋于常数,则按 情况二处理。 若序列的各分量表现为其它情况,则结束。
5.1.3 幂法的实际计算公式
Ax( k 1) x( k ) , k 0,1,
实际计算公式:
(1)先对A作LU分解;( LU分解的要点: ??) (2)再解方程组: ( k 1) (k )
3-1特征值与特征向量的计算(一)
u 0 1 x1 2 x2 n xn
其中系数 i 不全为零。
u k Au k 1 A 2 u k 2 A k u 0 A k 1 x1 2 x2 n xn
例题1:用幂法求矩阵
12 6 6 A 21 3 24 12 12 51
按模最大的特征值及对应的特征向量,要求 k k 1
k 0.0001 。
二、降阶法(收缩法) 采用幂法可以求出矩阵A按模最大的特征值及相应的特征向量, 能否在此基础上继续求出按模次大的特征值及相应的特征向量并依
T
r T s s 2 z B z
rT z 1 s r z 2 s s 2 1
rT z ~ u 2 2 1 z
~ 从而矩阵A的对应于模次大的特征值 2 对应的特征向量 u 2 Tu 2 。
k 2 k k 11 x1 2 k x2 n k xn 1 1 x1 2 x2 n n 2 n 1 1 k xn
k (1) 设 1 0 , 当 k 充分大时 , u k 11 x1 c1 x1 , 1
1 引入 T y
1
1 0T , T 1 y I n 1
0T I n 1
a11 r T y T AT t a y yr T y A y 11 22
又因为 Au1 1u1 ,即
T A22 yr rT
matlab求矩阵特征值特征向量 乘幂法
摘 要根据现代控制理论课程的特点, 提出并利用MATLAB 设计了现代控制理论课程的实验, 给出了设计的每个实验的主要内容及使用到的MATLAB 函数, 并对其中的一个实验作了详细说明。
通过这些实验, 将有助于学生理解理论知识, 学习利用MATLAB 解决现代控制理论问题。
关键词:现代控制理论、MATLAB 、仿真。
1设计目的、内容及要求1.1设计目的本课程设计以自动控制理论、现代控制理论、MATLAB 及应用等知识为基础,求连续系统对应的离散化的系统,并用计算系数阵按模最大的特征根法判别离散系统的稳定性,目的是使学生在现有的控制理论的基础上,学会用MATLAB 语言编写控制系统设计与分析的程序,通过上机实习加深对课堂所学知识的理解,掌握一种能方便地对系统进行离散化的实现和分析系统的稳定性的设计的工具。
1.2设计内容及要求1 在理论上对连续系统离散化推导出算法和计算公式2 画出计算机实现算法的框图3 编写程序并调试和运行4 以下面的系统为例,进行计算⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----=041020122A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=100B ,[]111-=c 5 分析运算结果6 幂法迭代精度为ep=0.001,离散系统展开项数为207 程序应具有一定的通用性,对不同参数能有兼容性。
2算法选择及推导2.1连续系统离散化算法书P67离散化意义已知被控对象的状态方程为:()()()()()()t t u t y t t u t =+=+ xAx B Cx D对方程求解,得:0()()0()()()ott t t t t e t e u d τττ--=+⎰A A x x B设0t kT =,(1)t k T =+,代入上式,得:H 公式若省略T 则为{⎰+-++Φ=+Tk kTd kT Bu T k kt x T T k x )1()(])1[()()(])1([(ττφ不改变与离散后时刻,即得连续离散化方程则:相当于)+=(上限相当于下限设令D C kT Du kT Cx kT y kT t kT u T H kT x T G T k x Bdt t Bdt e T H t T k T t kT d dt T k t Bd e T H e T T G TTAT T k kT T k A AT )()()()()()()(])1([(:)()(0,1,,)1()()()(0)1(])1[(+==+=+Φ=====-=-+=⋅==Φ=⎰⎰⎰+-+ττττττ2.2判别离散系统的稳定性2.2.1方法选择这里选用乘幂法,即求矩阵A 按模最大的特征值和相应的特征向量的方法判别离散系统的稳定性。
julia 幂法求矩阵特征值
julia 幂法求矩阵特征值Julia中的幂法求矩阵特征值可以使用Eigen.jl库来实现。
以下是一个简单的示例代码:juliausing Eigen# 定义矩阵AA = [1 2; 3 4]# 计算矩阵A的特征值和特征向量eigenvalues, eigenvectors = eig(A)# 输出特征值和特征向量println("特征值:", eigenvalues)println("特征向量:\n", eigenvectors)在这个示例中,我们首先定义了一个2x2的矩阵A,然后使用eig()函数计算矩阵A的特征值和特征向量。
最后,我们输出了特征值和特征向量。
需要注意的是,Julia中的矩阵特征值计算默认使用QR分解方法,而幂法通常用于计算按模最大的特征值和相应的特征向量。
因此,如果只需要计算按模最大的特征值和特征向量,可以使用eigsh()函数,如下所示:juliausing Eigen# 定义矩阵AA = [1 2; 3 4]# 计算按模最大的特征值和特征向量eigenvalue, eigenvector = eigsh(A, 1, "smallestabs")# 输出特征值和特征向量println("按模最大的特征值:", eigenvalue)println("相应的特征向量:\n", eigenvector)在这个示例中,我们使用eigsh()函数计算按模最大的特征值和特征向量,并指定返回一个结果。
最后,我们输出了按模最大的特征值和相应的特征向量。
幂法求矩阵A按模最大的特征值及其特征向量
数值分析幂法求矩阵A按模最大的特征值及其特征向量幂法的主要思想设 nn 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 的乘幂构造一向量序列:称{vk }为迭代向量,A 特征值中 λ1为强占优,即▕ λ1▕>▏λ2 ▏>······>▏λn ▏,{x 1,x 2,······,x n }线性无关,即{x 1,x 2,······,x n }为R n 中的一个基,于是对任意的初始向量v 0∈R n 且v0≠0有展开式。
(v0 用{x i }的线性组合表示)(且设01≠α) 则当k =2,3,… 时,vk =A vk-1 =A k v 0⎩⎨⎧01Av v =0212v A Av v ==011v A Av v k k k ++==),,1,0(n k =∑==n i i i x v 10 α)(221101n n x x x A v A vααα+++==nn x A x A x Aααα+++=2211nn n x x x λαλαλα+++=222111)(111+≡x kαλk ε其中 由假设▕ λ1▕>▏λ2 ▏>······>▏λn ▏,得 ,从而 即,0lim =∞→k k ε且收敛速度由比值||12λλ=r 确定。
所以有说明,当k 充分大时,有111x v k kαλ≈,或 k kv 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,转③。
- 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语言方面也得到了很大的提高,编程更加流畅且出现错误的机会大大减少,查错的能力也有很大的进步。