(Fortran编程)数值分析之幂法
数值方法课程设计幂法反幂法计算矩阵特征值和特征向量-附Matlab程序

矩阵的特征值与特征向量的计算摘要物理,力学,工程技术中的很多问题在数学上都归结于求矩阵特征值的问题,例如振动问题(桥梁的振动,机械的振动,电磁振动等)、物理学中某些临界值的确定问题以及理论物理中的一些问题。
矩阵特征值的计算在矩阵计算中是一个很重要的部分,本文使用幂法和反幂法分别求矩阵的按模最大,按模最小特征向量及对应的特征值。
幂法是一种计算矩阵主特征值的一种迭代法,它最大的优点是方法简单,对于稀疏矩阵比较合适,但有时收敛速度很慢。
其基本思想是任取一个非零的初始向量。
由所求矩阵构造一向量序列。
再通过所构造的向量序列求出特征值和特征向量。
反幂法用来计算矩阵按模最小特征向量及其特征值,及计算对应于一个给定近似特征值的特征向量。
本文中主要使用反幂法计算一个矩阵的按模最小特征向量及其对应的特征值。
计算矩阵按模最小特征向量的基本思想是将其转化为求逆矩阵的按模最大特征向量。
然后通过这个按模最大的特征向量反推出原矩阵的按模最小特征向量。
关键词:矩阵;特征值;特征向量;冥法;反冥法THE CALCULATIONS OF EIGENVALUE AND EIGENVECTOR OF MATRIXABSTRACTPhysics, mechanics, engineering technology in a lot of problems in mathematics are attributed to matrix eigenvalue problem, such as vibration (vibration of the bridge, mechanical vibration, electromagnetic vibration, etc.) in physics, some critical values determine problems and theoretical physics in some of the problems. Matrix eigenvalue calculation is a very important part in matrix computation. In this paper, we use the power method and inverse power method to calculate the maximum of the matrix, according to the minimum characteristic vector and the corresponding characteristic value.Power method is an iterative method to calculate the eigenvalues of a matrix. It has the advantage that the method is simple and suitable for sparse matrices, but sometimes the convergence rate is very slow. The basic idea is to take a non - zero initial vector. Construct a vector sequence from the matrix of the matrix. Then the eigenvalues and eigenvectors are obtained by using the constructed vector sequence.The inverse power method is used to calculate the minimum feature vectors and their eigenvalues of the matrix, and to calculate the eigenvalues of the matrix. In this paper, we use the inverse power method to calculate the minimum eigenvalue of a matrix and its corresponding eigenvalues. The basic idea of calculating the minimum characteristic vector of a matrix is to transform it to the maximum characteristic vector of the modulus of the inverse matrix. Then, according to the model, the minimum feature vector of the original matrix is introduced.Key words: Matrix;Eigenvalue;Eigenvector;Iteration methods;目录1 引言 (1)2 相关定理。
幂法(指数迭代法)

幂法(指数迭代法) 幂法是通过迭代来计算矩阵的主特征值(按模最⼤的特征值)与其对应特征向量的⽅法,适合于⽤于⼤型稀疏矩阵。
基本定义 设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|决定,越⼩收敛越快。
数值分析 -第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圆盘.
幂法和反幂法

此例中比值为 2 2 . 1 3
例2:用幂法计算下面矩阵的主特征值及对应的特征向量。
解: 取初始向量 01
2 4 A 3 9
4 16
v u 1 1 1 ,按(3.7)迭代5次得到数据T如下 表: 00
1 11
11
ukT
6 15 36
k
vkT
(规范化向量)
5 0.1859 0.4460 1 8.156 19.57 43.88
v (i) k 1 v (i) k
1?
即两相邻迭代向量的对应非零分量的比值一定收敛到主特征值?
不一定. 先讨论以下情况:
情形1: 设n n阶实矩阵A的特征值i (i 1, 2, , n) 满足 1 2 n 且与i (i 1, 2, , n)相应的特征
向量x1 , x2 , , xn 线性无关。
v (1) 2
v (1) 1
0.41 ,
v (2) 2
v (2) 1
0.41666,
v (1) 3
0.41260,
v (2) 3
0.41249,
v (1) 2
v (2) 2
v (1) 4
v (1) 3
0.41263,
v (2) 4
v (2) 3
0.41263,
问题:是否任何矩阵的幂法,当k比较大时,一定有
故按模特征值为:
1 43.88 对应的特征向量为:
u1 0.1859 0.4460 1.0000T
例3 用幂法求矩阵 的主特征值和主特征向量.
1 1 0.5 A 1 1 0.25
0.5 0.25 2
解 : 取初始向量u0 (1,1,1)T , 按(3.2)的计算结果如表9 1。
北航数值分析大作业第二题(fortran)

!计算A(r+1) DO I=1,N DO J=1,N A(I,J)=A(I,J)-W(I)*U(J)-U(I)*P(J) ENDDO ENDDO ENDIF ENDDO RETURN END
!***************符号函数子程序*****************! FUNCTION SGN(X) REAL(8) X IF(X>0) THEN SGN=1 ELSE IF(X<0) THEN SGN=-1 ELSE IF(X==0) THEN SGN=0 ENDIF END
DIMENSION A(N,N),A1(N,N),A2(N,N),C(2,N),Q(N,N),R(N,N),CR(N),CM(N)!C为存储特征值的数 组,1为实部,为虚部 REAL(8) A,A1,A2,C,Q,R,CM E=1E-12 L=1000 !精度水平 !迭代最大次数
OPEN(1,FILE='数值分析大作业第二题计算结果.TXT') DO I=1,N DO J=1,N IF(I==J) THEN A(I,J)=1.52*COS(I+1.2*J) ELSE A(I,J)=SIN(0.5*I+0.2*J) ENDIF ENDDO ENDDO A1=A WRITE(*,"('矩阵A为:')") WRITE(1,"('矩阵A为:')") DO I=1,N DO J=1,N WRITE(*,"(2X,E20.13,2X,\)") A(I,J) WRITE(1,"(2X,E20.13,2X,\)") A(I,J) ENDDO WRITE(*,"(' ')") WRITE(1,"(' ')") ENDDO !使用矩阵的拟上三角化的算法将矩阵A化为拟上三角矩阵A(n-1) CALL HESSENBERG(A,N) WRITE(*,"('拟上三角化后矩阵A(n-1)为:')") WRITE(1,"('拟上三角化后矩阵A(n-1)为:')") DO I=1,N DO J=1,N WRITE(*,"(2X,E20.13,2X,\)") A(I,J) WRITE(1,"(2X,E20.13,2X,\)") A(I,J) ENDDO WRITE(*,"('')") WRITE(1,"('')") ENDDO !计算对矩阵A(n-1)实行QR方法迭代结束后所得矩阵 A2=A CALL QRD(A2,N,Q,R)
数值分析试验幂法与反幂法matlab教程文件

数值分析试验幂法与反幂法m a t l a b一、问题的描述及算法设计(一)问题的描述我所要做的课题是:对称矩阵的条件数的求解设计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)若|mk =m1-k|<ε,则停止计算(1/mk作为绝对值最小特征值nλ,u)(k作为相应的特征向量);否则置k=k+1,转(3).二、算法的流程图(一)幂法算法的流程图(二)反幂法算法的流程图三、算法的理论依据及其推导(一)幂法算法的理论依据及推导幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
幂法 数值分析

(其中,k = 1,2,…,39)。 6. 求出 A 的条件数 cond(A)2 以及 A 的行列式
detA,其中: cond(A)2 = |λ m|/|λ s|; detA = det(LU) = detU。
二、全部源程序:
//1.主程序 #include "stdafx.h" #include "iostream.h" #include "iomanip.h" #include "head.h" #include "math.h"
为:"<<u_min<<endl; cout<<endl;
//求出 A 最大的特征值
//创建初始向量 u0 for ( i = 0; i < n; ++i) u0[i] = 5; u0[0] = 1.0;
//生成矩阵 A 的非零元素 arr_ger( a_U, a_D, a_L, s, r, n, fabs(u_max));
int i, j; //生成上带宽矩阵 a_U 的非 0 元素 for ( i = 0; i < s; ++i ) {
a_U[i] = new double [n-1-i]; } for ( j = 0; j < n-1; ++j ) {
a_U[0][j] = 0.16; } for ( j = 0; j < n-2; ++j ) {
//将带状矩阵 A 压缩为矩阵 C arr_compress( c, a_D, a_U, a_L, s, r, n);
幂法和反幂法的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. 幂法简介:当矩阵A 满足一定条件时,在工程中可用幂法计算其主特征值(按模最大)及其特征向量。
矩阵A 需要满足的条件为: (1) 的特征值为A i n λλλλ,0||...||||21≥≥≥>(2) 存在n 个线性无关的特征向量,设为n x x x ,...,,211.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); % 是原值,而非其绝对值。
幂法及反幂法

, r 不全为零),则有 r r n k k k i k [ x [ x ( ) x ] vk Avk 1 A v0 1 i i k ] 1 i i i i 1 i 1 i 1 i r 1 n i k ( ) xi ,且 lim k 0, 其中 k i k 1 i r 1
从而
k
幂法: n n (且设 1 , 2 , 对任意的初始向量 v0 R , 且 v0 0, 有v0 i xi ,
i 1
k 1 i 1 vk 因此,当k充分大时, k 接近于与 1 对应的特征向量的某个 1 r 线性组合 i xi( 1 , 2 ,, r 不全为零) 。
(当k 时, k 0)
)k xi 0 (当k )。
(2) 对迭代向量序列: {vk } k Ak v0 1 (1 x1 k ) 1 x1 k vk 1 k 1 k 1 1 (1 x1 k 1 )) max(A v0 ) max( max( 1 x1 k 1 ) max( 1 x1 k ) max( v ) 1 当k k )) 于是, k k 1 1, (当 max( 1 x1 k 1 ) 即 vk 绝对值最大的分量当 k 时,趋向于特征根 1 。 结论: 定理 8 (1)设 A R n n 有n个线性无关的特征向量; (2)设A特征值满足 | 1 || 2 | | n |, 且 Axi i xi (i 1,, n); (3){uk } 及 {vk }由改进幂法得到的规范化向量序列及迭代向量 序列((2.7)式),则有 x1 lim k lim max( v k ) 1 . (a ) limuk ; (b) k k k max(x1 ) 2 r | | 确定。 且收敛速度由比值 1
数值分析课程设计+幂法与反幂法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).二、算法的流程图(一)幂法算法的流程图(二)反幂法算法的流程图三、算法的理论依据及其推导(一)幂法算法的理论依据及推导幂法是用来确定矩阵的主特征值的一种迭代方法,也即,绝对值最大的特征值。
稍微修改该方法,也可以用来确定其他特征值。
幂法的一个很有用的特性是它不仅可以生成特征值,而且可以生成相应的特征向量。
实际上,幂法经常用来求通过其他方法确定的特征值的特征向量。
数值分析3.1幂法和反幂法

第三章 矩阵的特征值与特征向量
3.1 幂法与反幂法 3.2 Jacobi方法
3.3 QR方法
第三章 矩阵的特征值与特征向量
3.1幂法与反幂法
一、乘幂法 二、反幂法
三、带原点位移的反幂法
四、反幂法的特点
第三章 矩阵的特征值与特征向量
3.1幂法与反幂法
一、乘幂法
1、基本思想
2、算法(迭代公式) ◆一般算法
具体算法: (1)使用范数 2
1 X 1 yk , k 1 1 X 1
(2)使用范数
uk A yk 1
令
k
er u k er y k 1
T
T
k
lim k 1
留为作业自学
具体算法: (1)使用范数 2 1 X 1 yk , k 1 1 X 1
1 2 n
第三章 矩阵的特征值与特征向量
一、乘幂法 1、基本思想 设A有n个线性无关的特征向量 X 1 , X 2 ,, X n ,
AX j j X j , j 1,2,, n
3.1幂法与反幂法
★ 设 1为实数而且是单根: 1 2 n
u0 1 X 1 2 X 2 n X n
具体算法: 按取范数的不同, 迭代公式也不同。 (1)使用范数 2
任取初始向量u0 R n T k 1 u k 1 u k 1 u k 1 yk 1 k 1 (3.4) u k A yk 1 k yk 1T uk k 1,2,
T
精确结果:
X 1 (0,0.5,1) , 1 45
T
max( uk ) 表示 u k 的绝对值最大的分量。 (3)
数值分析(10)幂法

n
设矩阵 A (aij ) R
nn
,令
n Z i z : z aii aik k 1 k i
则矩阵 A 的所有特征值包含于
Z
n
i
数值分析
数值分析
数值分析
数值分析
数值分析
数值分析
数值分析
数值分析
数值分析
数值分析
Vk yi( k11) i V yi(kk ) i
因1 x (1) m x ( m )也是矩阵A相应于1的特征向量,故有 X1 Xm
Vk )为相应的特征向量,即对这种情况幂法仍然有效。 y( k
数值分析
数值分析
(2)1 2 , 1 3 , 且矩阵A有n个线性无关的特征向量。
当 k 时, lim Vk X 1 / max X 1
k
数值分析
数值分析
Ak 1V0 AkV0 U k AVk 1 A k 1 max A V0 max Ak 1V0
i k [1 X 1 ( ) i X i ] i 2 1 n k 1 i k 1 max 1 [1 X 1 ( ) i X i ] i 2 1
k
数值分析
数值分析 两种特殊情况
前面假定 1 2 .如果按模最大的特征值有多个,即
1 2 m m 1 n 幂法是否有效?
( )1 是m重根,即1 2 m , 矩阵A仍有n个线性无 1 关的特征向量。此时有 y ( k ) 1k [1 x (1) m x ( m ) X1 Xm Vk
n k 1
n i k 1 max 1 X 1 ( ) i X i i 2 1 Ck max(U k ) n i k 1 max 1 X 1 ( ) i X i i 2 1
数值分析之幂法及反幂法C语言程序实例

数值分析之幂法及反幂法C 语言程序实例1、算法设计方案:①求1λ、501λ和s λ的值:s λ:s λ表示矩阵的按模最小特征值,为求得s λ直接对待求矩阵A 应用反幂法即可。
1λ、501λ:已知矩阵A 的特征值满足关系 1n λλ<<L ,要求1λ、及501λ时,可按如下方法求解:a . 对矩阵A 用幂法,求得按模最大的特征值1m λ。
b . 按平移量1m λ对矩阵A 进行原点平移得矩阵1m BA I λ=+,对矩阵B 用反幂法求得B 的按模最小特征值2m λ。
c . 321m m m λλλ=-则:113min(,)m m λλλ=,13max(,)n m m λλλ=即为所求。
②求和A 的与数5011140k k λλμλ-=+最接近的特征值ik λ(k=0,1,…39):求矩阵A 的特征值中与k μ最接近的特征值的大小,采用原点平移的方法: 先求矩阵 B=A-k μI 对应的按模最小特征值k β,则k β+k μ即为矩阵A 与k μ最接近的特征值。
重复以上过程39次即可求得ik λ(k=0,1,…39)的值。
③求A 的(谱范数)条件数2cond()A 和行列式det A :在(1)中用反幂法求矩阵A 的按模最小特征值时,要用到Doolittle 分解方法,在Doolittle 分解完成后得到的两个矩阵分别为L 和U ,则A 的行列式可由U 阵求出,即:det(A)=det(U)。
求得det(A)不为0,因此A 为非奇异的实对称矩阵,则: max 2()scond A λλ=,max λ和s λ分别为模最大特征值与模最小特征值。
2、程序源代码:#include<>#include<>#include<>#define N 501 3e\n",k,k,value_s);}}void main(){float cond;double value_det;printf("Contact me\n");Init_matrix_A(); 3e\n",value_1);printf("λ501=%.13e\n",value_N);value_det=Det_matrix(); 3e\n",value_s);cond=Get_cond_A(); 3e\n",cond);printf("value_det=%.13e\n",value_det); }3、程序运行结果:4、迭代初始向量的选取对计算结果的影响:本次计算实习求矩阵A的具有某些特征的特征值,主要用到的方法是幂法和反幂法,这两种方法从原理上看都是迭代法,因此迭代初始向量的选择对计算结果会产生一定影响,主要表现在收敛速度上。
fortran常用算法程序集

fortran常用算法程序集Fortran是一种高级编程语言,广泛应用于科学计算和数值分析领域。
它的强大之处在于它提供了丰富的算法库,使程序开发人员能够快速实现各种常见算法。
本文将介绍一些Fortran常用的算法程序集,帮助读者更好地理解和应用这些算法。
一、线性代数算法线性代数是科学计算和数值分析的基础,Fortran提供了许多用于求解线性方程组、矩阵分解和矩阵运算的算法。
其中一些常用的算法包括:1. 高斯消元法高斯消元法是一种求解线性方程组的方法,可以将线性方程组转化为上三角或下三角矩阵,并进一步求解。
Fortran提供了多种高斯消元法的实现,如LU分解法和托伯利兹矩阵法。
2. 特征值与特征向量计算特征值与特征向量计算是矩阵分解的一种重要问题。
Fortran提供了多种算法来计算矩阵的特征值与特征向量,如幂法、反幂法、QR算法等。
3. 矩阵乘法和矩阵求逆矩阵乘法和矩阵求逆是线性代数中常见的操作。
Fortran提供了多种高效的算法来实现矩阵乘法和矩阵求逆,如Strassen算法、LU分解法等。
二、数值计算算法数值计算算法广泛应用于科学计算、数值模拟和数据分析等领域。
Fortran提供了多种数值计算算法的实现,如数值积分、函数逼近、插值算法等。
以下是一些常用的数值计算算法:1. 数值积分数值积分可以用来对函数进行近似求积,求解曲线下面积或计算定积分。
Fortran提供了多种数值积分方法的实现,如梯形法则、辛普森法则和龙贝格方法等。
2. 函数逼近函数逼近是将多项式或其他数学函数与给定函数进行拟合,用于简化函数计算或数据分析。
Fortran提供了多种函数逼近的方法,如最小二乘逼近、最大误差逼近等。
3. 插值算法插值算法用于根据已知的离散数据点估计未知点的值。
Fortran提供了多种插值算法的实现,如拉格朗日插值法、牛顿插值法和样条插值法等。
三、优化算法优化算法用于求解最优化问题,如寻找函数最大值或最小值的点。
幂法

在实际计算中 , 需要对计算结果进行规 范化。因为当 〈 时,vk 趋于零, 1 1 当1 1 时, vk的非零分量趋于无穷。 从而计算时会出现下溢 或上溢。 为此, 对 ( z1 , z2 ,......,zn )T R n , 记max() zi , 其中zi .这样, 我们有
应的n个线性无关的特征向量为xi (i 1, 2,...n),给定初值向量v0 i xi,
i 1 n
1 0,则由( 1)生成的向量序列有
lim u k
k
x1 , lim max( vk ) 1。 k max(x1 )
• 用幂法计算矩阵的主特征值及对应的特征 向量。
k 1
i 1 n
其中 k
k
i i 1 xi .若1 0, x1 l 0,
k i2
n
则由 lim k 0知 lim
k
vk
k 1
1 x1 ,
vk 1 l lim k v k il
1。
可见,当k充分大时, vk 近似于主特征值, vk 1与vk的 对应非零分量的比值近 似于主特征值。
v0 ,由矩阵A构造一向量序列
vk Avk 1 Ak v0 , k 1,2.....
由假设v0可表示为
v0 1 x1 2 x2 .... n xn .
若记(vk )l 为vk的第l个分量, 则有
vk A v0 i k i xi
k
n
i k k [1 x1 i ( ) xi ] 1 (1 x1 K ), i 2 1 (vk 1 )l 1 (1 x1 k 1 )l , (vk )l (1 x1 k )l
幂法谱半径 python

首先,确保你已经安装了NumPy:
pip
然后,可以使用以下Python代码进行幂法和计算谱半径:
forinrange
#进行矩阵-向量乘法
#计算谱半径
#归一化特征向量
#检查迭代是否收敛
if
break
return
#示例用法
#定义一个矩阵41来自23#调用幂法#计算谱半径
abs
#打印结果
print"最大特征值:"
print"对应的特征向量:"
print"谱半径:"
这个示例中,我们使用了NumPy来进行矩阵运算,通过幂法计算了矩阵的最大特征值及其对应的特征向量,并计算了矩阵的谱半径。
importas
def10001e-6
"""
使用幂法计算矩阵的最大特征值及其对应的特征向量
:param matrix:输入的方阵
:param max_iterations:最大迭代次数
:param tolerance:容差,用于判断迭代收敛
:return:最大特征值和对应的特征向量
"""
len
#随机选择一个初始向量