实验6反幂法求矩阵按模最小特征值

合集下载

数值方法课程设计幂法反幂法计算矩阵特征值和特征向量-附Matlab程序

数值方法课程设计幂法反幂法计算矩阵特征值和特征向量-附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 相关定理。

实验6反幂法求矩阵按模最小特征值

实验6反幂法求矩阵按模最小特征值

西华数学与计算机学院上机实践报告课程名称:计算方法A年级: 上机实践成绩: 指导教师:严常龙姓名: 上机实践名称:反幂法求矩阵按模最小特征值 学号:上机实践日期: 上机实践编号:1上机实践时间: 一、目的1.通过本实验加深对反幂法的构造过程的理解;2.能对反幂法提出正确的算法描述编程实现,得到计算结果。

二、内容与设计思想自选方阵,用反幂法求解其按模最小特征值。

可使用实例:⎪⎪⎪⎭⎫ ⎝⎛---=90688465441356133A三、使用环境操作系统:Windows XP软件环境:Microsoft Visual C++四、核心代码及调试过程#include<stdio.h>#include<math.h>#define MAX_N 20 //矩阵最大维数#define MAXREPT 100#define epsilon 0.00001 //求解精度int main(){int n;int i,j,k;double xmax,oxmax;static double a[MAX_N][MAX_N];static double l[MAX_N][MAX_N],u[MAX_N][MAX_N];static double x[MAX_N],nx[MAX_N];printf("\n 请输入矩阵阶数n:"); //输入矩阵维数scanf("%d",&n);if(n>MAX_N){printf("the input n is larger than MAX_N,please redefine the MAX_N.\n");return 1;}if(n<=0){printf("please input a number between 1 and %d.\n",MAX_N);return 1;}//输入A矩阵printf("请输入矩阵的值a[i][j] i,j=0...%d;\n",n-1);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%lf",&a[i][j]);for(i=0;i<n;i++)x[i]=1;oxmax=0;for(i=0;i<MAXREPT;i++){for(j=0;j<n;j++) //幂乘{nx[j]=0;for(k=0;k<n;k++)nx[j]+=a[j][k]*x[k];}xmax=0.0;for(j=0;j<n;j++) //规范化if(fabs(nx[j])>xmax)xmax=fabs(nx[j]);for(j=0;j<n;j++)nx[j]/=xmax;for(j=0;j<n;j++)x[j]=nx[j];if(fabs(xmax-oxmax)<epsilon){printf("solve...max lamda=%lf\n",xmax); //输出printf("the vector is:\n");for(i=0;i<n;i++)printf("%f\n",nx[i]);break;//return 0;}oxmax=xmax;}//printf("after %d repeat ,max no result ...\n",MAXREPT); for(i=0;i<n;i++)u[i][i]=1; //U矩阵对角元为for(k=0;k<n;k++){for(i=k;i<n;i++) //计算L矩阵{l[i][k]=a[i][k];for(j=0;j<=k-1;j++)l[i][k]-=(l[i][j]*u[j][k]);}for(j=k+1;j<n;j++) //计算U矩阵{u[k][j]=a[k][j];for(i=0;i<=k-1;i++)u[k][j]-=(l[k][i]*u[i][j]);u[k][j]/=l[k][k];}}for(i=0;i<n;i++)x[i]=1;for(i=0;i<MAXREPT;i++){for(j=0;j<n;j++) //反幂乘{nx[j]=x[j];for(k=0;k<=j-1;k++)nx[j]-=l[j][k]*nx[k];nx[j]/=l[j][j];}for(j=n-1;j>=0;j--){x[j]=nx[j];for(k=j+1;k<n;k++)x[j]-=u[j][k]*x[k];}xmax=0.0;for(j=0;j<n;j++)if(fabs(x[j])>xmax)xmax=fabs(x[j]);for(j=0;j<n;j++)x[j]/=xmax;if(fabs(xmax-oxmax)<epsilon){printf("solve... min lamda=%lf\n",1/xmax); //输出printf("the vector is:\n");for(i=0;i<n;i++)printf("%f\n",x[i]);break;//return 0;}oxmax=xmax;}return 1;}五、总结本次试验利用C语言实现了用反幂法求解其按模最小特征值,通过本实验加深对反幂法的构造过程的理解。

逆幂迭代法求特征值

逆幂迭代法求特征值

逆幂迭代法求特征值
逆幂迭代法是一种求解特征值的方法,主要应用于对称矩阵或非奇异矩阵。

它通过不断迭代矩阵的逆幂次来逼近矩阵的最小特征值和对应的特征向量。

具体步骤如下:
1.选择一个初始向量x0,通常为一个随机向量。

2.计算xn+1 = A^-1xn,其中A为给定矩阵,A^-1为A的逆矩阵。

3.对向量xn进行归一化,得到单位向量xn+1。

4.计算新的特征值逼近λn+1= xn+1^T A xn+1。

5.判断λn+1和λn的差值是否满足收敛条件,如果满足则结束迭代,否
则将λn+1作为新的逼近特征值,重复步骤2-5。

逆幂迭代法相比其他数值方法的优点在于,它可以快速地找到近似特征值,并且收敛速度较快。

然而,逆幂迭代法也存在一些局限性,例如对初始特征值逼近的选择较为敏感,不同的初始值可能导致不同的结果。

此外,逆幂迭代法在求解重复特征值时可能会出现困难。

对于非对称矩阵的特征值问题,逆幂迭代法可能无法收敛。

以上信息仅供参考。

矩阵特征值快速求法

矩阵特征值快速求法

矩阵特征值快速求法矩阵特征值是矩阵分析中十分重要的概念。

它在物理、工程、数学等许多领域都有着广泛的应用。

矩阵特征值是指矩阵运动时特殊的运动状态,是一种宏观量度矩阵运动的指标。

求解矩阵特征值是一项复杂的任务,通常需要使用高级算法来完成。

本文将介绍几种常用的求解矩阵特征值的算法,其中包括幂法、反幂法、QR算法、分裂Broyden算法等。

一、幂法幂法是求解矩阵特征值的一种基础算法,其基本思想是通过迭代来逐步逼近矩阵的最大特征值。

幂法的核心公式如下:x_(k+1)=A*x_k/||A*x_k||其中,x_k表示第k次迭代中得到的特征向量,A表示原始矩阵。

幂法通过不断的迭代来逼近A的最大特征值,当迭代次数趋近于无限大时,得到的特征向量就是A的最大特征值所对应的特征向量。

幂法的运算量较小,适用于比较简单的矩阵。

反幂法与幂法类似,不同之处在于每次迭代时采用的是A的逆矩阵来进行计算。

其核心公式如下:x_(k+1)=(A-λI)^(-1)*x_k其中,λ表示要求解的特征值。

反幂法能够求解非常接近于特征值λ的特征向量,并且对于奇异矩阵同样适用。

需要注意的是,在实际计算中,如果A-λI的秩不满,那么反幂法就无法使用。

三、QR算法1. 将原矩阵A进行QR分解,得到A=Q*R。

2. 计算A的近似特征矩阵A1=R*Q。

5. 重复步骤3-4,直到A的对角线元素全部趋近于所求特征值为止。

QR算法的计算量较大,但其具有收敛速度快、精度高等优点,广泛应用于科学计算中。

四、分裂Broyden算法分裂Broyden算法是QR算法的一种改进算法,其基本思想是将矩阵分解成上下三角形式,然后再对其进行QR分解,以减少QR算法中的乘法运算量。

具体实现过程如下:2. 构造一个倒数矩阵B=U^(-1)*L^(-1)。

4. 计算A的近似特征矩阵A1=Q^(-1)*L^(-1)*A*R^(-1)*U^(-1)*Q。

分裂Broyden算法的计算量较小,能够有效地解决QR算法中的乘法运算量过大的问题。

计算方法之计算矩阵的特征值和特征量

计算方法之计算矩阵的特征值和特征量

计算方法之计算矩阵的特征值和特征量计算矩阵的特征值和特征向量是线性代数中的一个重要问题,它在科学研究和工程应用中有着广泛的应用。

本文将介绍计算矩阵特征值和特征向量的方法,包括特征方程法、幂法、反幂法和QR方法。

一、特征值和特征向量的定义给定一个n阶方阵A,如果存在一个非零向量x和一个标量λ,满足以下方程:Ax=λx其中,x被称为A的特征向量,λ被称为A的特征值。

二、特征方程法特征方程法是计算矩阵特征值和特征向量的一种常用方法,其基本思想是通过求解矩阵的特征方程来求得特征值。

对于一个n阶方阵A,其特征方程为:A-λI,=0其中,I是n阶单位矩阵,A-λI,表示A-λI的行列式。

解特征方程可以得到n个特征值λ₁,λ₂,...,λₙ。

然后,将这些特征值带入原方程组(A-λI)x=0,求解线性方程组得到n个特征向量x₁,x₂,...,xₙ。

三、幂法幂法是一种通过迭代来计算矩阵最大特征值和对应的特征向量的方法。

首先,随机选择一个非零向量b₀,并进行归一化,得到单位向量x₀=b₀/,b₀。

然后,通过迭代的方式,计算xₙ₊₁=Axₙ,其中xₙ为第k次迭代得到的向量。

在迭代过程中,向量xₙ的模长会逐渐趋近于最大特征值对应的特征向量。

当迭代收敛后,xₙ就是矩阵A的最大特征值对应的特征向量。

四、反幂法反幂法是一种通过迭代来计算矩阵最小特征值和对应的特征向量的方法。

首先,随机选择一个非零向量b₀,并进行归一化,得到单位向量x₀=b₀/,b₀。

然后,通过迭代的方式,计算xₙ₊₁=(A-σI)⁻¹xₙ,其中σ为待求的特征值。

在迭代过程中,向量xₙ的模长会逐渐趋近于特征值σ对应的特征向量。

当迭代收敛后,xₙ就是矩阵A的特征值为σ的特征向量。

五、QR方法QR方法是一种通过迭代来计算矩阵特征值和特征向量的方法。

首先,将矩阵A进行QR分解,得到矩阵A=QR,其中Q是正交矩阵,R是上三角矩阵。

然后,计算矩阵B=RQ,重复以上步骤,直到矩阵B收敛。

矩阵特征值求法的十种求法(非常经典)

矩阵特征值求法的十种求法(非常经典)

矩阵特征值求法的十种求法(非常经典)以下是矩阵特征值求法的十种经典求法:1. 幂法(Power Method)幂法(Power Method)幂法是求解特征值的常用方法之一。

它基于一个重要的数学原理:对于一个非零向量$x$,当它连续乘以矩阵$A$的$k$次幂后,$Ax$的方向将趋于特征向量相应的特征值。

这种方法通常需要进行归一化,以防止向量过度增长。

2. 反幂法(Inverse Power Method)反幂法(Inverse Power Method)反幂法是幂法的一种变体。

它通过计算矩阵$A$的逆来求解最小的特征值。

使用反幂法时,我们需要对矩阵$A$进行LU分解,以便更高效地求解线性方程组。

3. QR方法QR方法QR方法是一种迭代方法,可以通过将矩阵$A$分解为$QR$形式来逐步逼近特征值。

这种方法是通过多次应用正交变换来实现的,直到收敛为止。

QR方法不仅可以求解特征值,还可以求解特征向量。

4. Jacobi方法Jacobi方法Jacobi方法是一种迭代方法,通过施加正交相似变换将矩阵逐步变为对角矩阵。

在每个迭代步骤中,Jacobi方法通过旋转矩阵的特定元素来逼近特征值。

这种方法适用于对称矩阵。

5. Givens旋转法Givens旋转法Givens旋转法是一种用于特征值求解的直接方法。

它通过施加Givens旋转矩阵将矩阵逐步变为对角矩阵。

这种方法是通过旋转矩阵的特定元素来实现的。

6. Householder变换法Householder变换法Householder变换法是一种用于特征值求解的直接方法。

它通过施加Householder变换将矩阵逐步变为Hessenberg形式,然后再进一步将其变为上三角形式。

这种方法是通过对矩阵的列向量进行反射来实现的。

7. Lanczos方法Lanczos方法Lanczos方法是一种迭代方法,用于对称矩阵的特征值求解。

该方法创建一个Krylov子空间,并使用正交投影找到最接近特征值的Krylov子空间中的特征值。

反幂法用来计算矩阵按模最小的特征值及其特征向量

反幂法用来计算矩阵按模最小的特征值及其特征向量
(2.12)构造的向量序列{vk },{u满k足}
(1)
lim
k
uk

xj
,
max (x j )
(2)
lim
k
max(
vk
)

j
1
p
,即
6
p

1 max (vk
)

j
(当k ),
且收敛速度由比值 r j p / mi确inj 定.i p
由该定理知,对 A(其p中I 可用来计算特征向量 x .j
) p应用反j 幂法,
只要选择的 是p 的一j 个较好的近似且特征值分离情
况较好,一般 r很小,常常只要迭代一二次就可完成特征
向量的计算.
反幂法迭代公式中的 是vk通过解方程组
( A pI )vk uk1
求得的. 为了节省工作量,可以先将 A 进pI行三角分解
7
P( A pI ) LU ,
x3 (1, 1 3, 2 3)T (1, 0.73205, 0.26795)T , 由此看出 u是2 的x3相当好的近似.
特征值3 1.2679 1/ 2 1.267949013 , 的真值 3 3 3 1.26794912 .
v1 (12692, 9290.3, 3400.8)T ,
11
u1 (1, 0.73198, 0.26795)T , 由 LUv2 ,P得u1
v2 (20404, 14937, 5467.4)T , u2 (1, 0.73206, 0.26796)T ,
对3 应的特征向量是
如果矩阵 ( A 存p在I ),1 其特征值为
3

幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量(DOC)

幂法,反幂法求解矩阵最大最小特征值及其对应的特征向量(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); % 是原值,而非其绝对值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西华数学与计算机学院上机实践报告
课程名称:计算方法A
年级:2010级 上机实践成绩: 指导教师:严常龙
姓名:李国强 上机实践名称:反幂法求矩阵按模最小特征值
学号:362011********* 上机实践日期:2013.12.18
上机实践编号:6
上机实践时间:14:00 一、目的
1.通过本实验加深对反幂法的构造过程的理解;
2.能对反幂法提出正确的算法描述编程实现,得到计算结果。

二、内容与设计思想 自选方阵,用反幂法求解其按模最小特征值。

可使用实例:
⎪⎪⎪⎭
⎫ ⎝⎛---=90688465441356133A
三、使用环境
操作系统:Win 8
软件平台:Visual C++ 6.0
四、核心代码及调试过程
#include<stdio.h>
#include<math.h>
#define MAX_N 20 //矩阵最大维数
#define MAXREPT 100
#define epsilon 0.00001 //求解精度
int main()
{
int n;
int i,j,k;
double xmax,oxmax;
static double a[MAX_N][MAX_N];
static double l[MAX_N][MAX_N],u[MAX_N][MAX_N];
static double x[MAX_N],nx[MAX_N];
printf("\n 请输入矩阵阶数n:"); //输入矩阵维数
scanf("%d",&n);
if(n>MAX_N)
{
printf("the input n is larger than MAX_N,please redefine the MAX_N.\n");
return 1;
}
if(n<=0)
{
printf("please input a number between 1 and %d.\n",MAX_N);
return 1;
}
//输入A矩阵
printf("请输入矩阵的值a[i][j] i,j=0...%d;\n",n-1);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
for(i=0;i<n;i++)
x[i]=1;
oxmax=0;
for(i=0;i<MAXREPT;i++)
{
for(j=0;j<n;j++) //幂乘
{
nx[j]=0;
for(k=0;k<n;k++)
nx[j]+=a[j][k]*x[k];
}
xmax=0.0;
for(j=0;j<n;j++) //规范化
if(fabs(nx[j])>xmax)
xmax=fabs(nx[j]);
for(j=0;j<n;j++)
nx[j]/=xmax;
for(j=0;j<n;j++)
x[j]=nx[j];
if(fabs(xmax-oxmax)<epsilon)
{
printf("solve...max lamda=%lf\n",xmax); //输出
printf("the vector is:\n");
for(i=0;i<n;i++)
printf("%f\n",nx[i]);
break;
//return 0;
}
oxmax=xmax;
}
//printf("after %d repeat ,max no result ...\n",MAXREPT); for(i=0;i<n;i++)
u[i][i]=1; //U矩阵对角元为
for(k=0;k<n;k++)
{
for(i=k;i<n;i++) //计算L矩阵
{
l[i][k]=a[i][k];
for(j=0;j<=k-1;j++)
l[i][k]-=(l[i][j]*u[j][k]);
}
for(j=k+1;j<n;j++) //计算U矩阵
{
u[k][j]=a[k][j];
for(i=0;i<=k-1;i++)
u[k][j]-=(l[k][i]*u[i][j]);
u[k][j]/=l[k][k];
}
}
for(i=0;i<n;i++)
x[i]=1;
for(i=0;i<MAXREPT;i++)
{
for(j=0;j<n;j++) //反幂乘
{
nx[j]=x[j];
for(k=0;k<=j-1;k++)
nx[j]-=l[j][k]*nx[k];
nx[j]/=l[j][j];
}
for(j=n-1;j>=0;j--)
{
x[j]=nx[j];
for(k=j+1;k<n;k++)
x[j]-=u[j][k]*x[k];
}
xmax=0.0;
for(j=0;j<n;j++)
if(fabs(x[j])>xmax)
xmax=fabs(x[j]);
for(j=0;j<n;j++)
x[j]/=xmax;
if(fabs(xmax-oxmax)<epsilon)
{
printf("solve... min lamda=%lf\n",1/xmax); //输出
printf("the vector is:\n");
for(i=0;i<n;i++)
printf("%f\n",x[i]);
break;
//return 0;
}
oxmax=xmax;
}
return 1;
}
显示结果:
五、总结
本次试验利用C语言实现了用反幂法求解其按模最小特征值,通过本实验加深对反幂法的构
造过程的理解。

对于利用C语言实现该算法有了进一步的掌握,为今后的深入学习打下坚实基础。

六、附录
《数值计算方法与算法(第二版)》,张韵华主编,2012.1。

相关文档
最新文档