当前位置:网站首页>使用Matlab实现:幂法、反幂法(原点位移)
使用Matlab实现:幂法、反幂法(原点位移)
2022-07-02 06:25:00 【霏霏小雨】
幂法
例题
使用幂法,计算下面矩阵的主特征值及对应的特征向量。
A = [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] A= \left[\begin{array}{ccc} 2 & -1 & 0\\ -1 & 2 & -1\\ 0 & -1 & 2 \end{array}\right] A=⎣⎡2−10−12−10−12⎦⎤
实现
幂法的数学迭代公式为:
取 v ( 0 ) ≠ 0 , α ≠ 0 , 令 u ( 0 ) = v ( 0 ) 取 v^{(0)} \neq 0,\alpha \neq 0, 令 u^{(0)} = v^{(0)} 取v(0)̸=0,α̸=0,令u(0)=v(0)
v ( 1 ) = A v ( 0 ) = A u ( 0 ) v^{(1)} = A v^{(0)} = A u^{(0)} v(1)=Av(0)=Au(0)
u ( 1 ) = v ( 1 ) m a x ( v ( 1 ) ) = A v ( 0 ) m a x ( A v ( 0 ) ) u^{(1)} = \frac{v^{(1)}}{max(v^{(1)})} = \frac{A v^{(0)}}{max(A v^{(0)})} u(1)=max(v(1))v(1)=max(Av(0))Av(0)
v ( 2 ) = A u ( 1 ) = A v ( 1 ) m a x ( A v ( 0 ) ) = A 2 v ( 0 ) m a x ( A 2 v ( 0 ) ) v^{(2)} = A u^{(1)} = \frac{Av^{(1)}}{max(A v^{(0)})} = \frac{A^2 v^{(0)}}{max(A^2 v^{(0)})} v(2)=Au(1)=max(Av(0))Av(1)=max(A2v(0))A2v(0)
u ( 2 ) = v ( 2 ) m a x ( v ( 2 ) ) = A 2 v ( 0 ) m a x ( A 2 v ( 0 ) ) u^{(2)} = \frac{v^{(2)}}{max(v^{(2)})} = \frac{A^2 v^{(0)}}{max(A^2 v^{(0)})} u(2)=max(v(2))v(2)=max(A2v(0))A2v(0)
依次类推。
使用Matlab实现:
format long g;
v0 = [1;1;1];
u0 = [1;1;1];
A = [2,-1,0;-1,2,-1;0,-1,2];
v = A * u0;
u = v / norm(v, inf);
i = 0;
while norm(u - u0, inf) >= 1e-5
u0 = u;
v = A * u0;
u = v / norm(v, inf);
i ++;
end;
norm(v, inf)
i
u
求解得:
i = 8 , u ( 9 ) = ( 0.70711 , − 1 , 0.70711 ) T , λ = m a x ( v ( 9 ) ) = 3.41422 i = 8,u^{(9)} = (0.70711, -1, 0.70711)^T,\lambda = max(v^{(9)}) = 3.41422 i=8,u(9)=(0.70711,−1,0.70711)T,λ=max(v(9))=3.41422
反幂法
例题
已知下列矩阵有特征值 λ \lambda λ 的近似值 p = 4.3 p = 4.3 p=4.3 ,用原点位移的反幂法,求对应的特征向量 u u u ,并改善 λ \lambda λ 。
A = [ 3 0 − 10 − 1 3 4 0 1 − 2 ] A= \left[\begin{array}{ccc} 3 & 0 & -10\\ -1 & 3 & 4\\ 0 & 1 & -2 \end{array}\right] A=⎣⎡3−10031−104−2⎦⎤
实现
反幂法,是基于幂法,推导出来的一个求最小特征值的方法。由于特征值的性质,可以用来求某个近似值的精确特征值。
其数学迭代方法如下:
首先,对矩阵 A − p I A - p I A−pI进行三角分解,便于以后求方程组的解。
A − p I = L U A - p I = L U A−pI=LU
求 v ( k ) v^{(k)} v(k) 时,相当于求两个三角方程组。
{ L y ( k ) = u ( k − 1 ) U v ( k ) = y ( k ) \begin{cases} L y^{(k)} = u^{(k - 1)}\\ U v^{(k)} = y^{(k)}\\ \end{cases} { Ly(k)=u(k−1)Uv(k)=y(k)
又有:
u ( k ) = v ( k ) m a x ( v ( k ) ) u^{(k)} = \frac{v^{(k)}}{max(v^{(k)})} u(k)=max(v(k))v(k)
使用Matlab实现:
A = [3,0,-10;-1,3,4;0,1,-2];
I = eye(3,3);
p = 4.3;
u0 = [1;1;1];
v = inv(A - p * I) * u0;
u = v / norm(v, inf);
i = 0;
while norm(u - u0, inf) > 1e-5
u0 = u;
v = inv(A - p * I) * u0;
u = v / norm(v, inf);
i ++;
end;
i
u
x = p + 1 / norm(v, inf)
求解得:
i = 6 , u ( 7 ) = ( − 0.96606 , 1 , 0.15210 ) T , λ = p + 1 m a x ( v ( k ) ) = 4.57447 i = 6,u^{(7)} = (-0.96606, 1, 0.15210)^T,\lambda = p + \frac{1}{max(v^{(k)})} = 4.57447 i=6,u(7)=(−0.96606,1,0.15210)T,λ=p+max(v(k))1=4.57447
边栏推荐
- JS divides an array into groups of three
- sqli-labs通关汇总-page2
- SSM二手交易网站
- sqli-labs通关汇总-page1
- php中的数字金额转换大写数字
- Yaml file of ingress controller 0.47.0
- Message queue fnd in Oracle EBS_ msg_ pub、fnd_ Application of message in pl/sql
- sparksql数据倾斜那些事儿
- JS judge whether the object is empty
- Sqli-labs customs clearance (less1)
猜你喜欢

Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence

ssm+mysql实现进销存系统

2021-07-05C#/CAD二次开发创建圆弧(4)

Check log4j problems using stain analysis

Wechat applet Foundation

Oracle EBS ADI development steps

Message queue fnd in Oracle EBS_ msg_ pub、fnd_ Application of message in pl/sql

PHP Session原理简析

MapReduce与YARN原理解析

oracle apex ajax process + dy 校验
随机推荐
Sqli - Labs Clearance (less6 - less14)
php中通过集合collect的方法来实现把某个值插入到数组中指定的位置
sqli-labs通关汇总-page2
離線數倉和bi開發的實踐和思考
pySpark构建临时表报错
MySQL组合索引加不加ID
Review of reflection topics
php中获取汉字拼音大写首字母
Oracle 11.2.0.3 handles the problem of continuous growth of sysaux table space without downtime
Wechat applet Foundation
Flex Jiugongge layout
Uniapp introduces local fonts
Oracle EBS DataGuard setup
ssm超市订单管理系统
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
Tool grass welfare post
Analysis of MapReduce and yarn principles
SSM二手交易网站
How to call WebService in PHP development environment?
Explanation of suffix of Oracle EBS standard table