前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >幂迭代法求矩阵特征值的Fortran程序

幂迭代法求矩阵特征值的Fortran程序

作者头像
fem178
发布2018-04-08 16:23:03
3.7K0
发布2018-04-08 16:23:03
举报

昨天所发布的迭代法称为正迭代法,用于求矩阵的主特征值,也就是指矩阵的所有特征值中最大的一个。其算法如下:

满足精度要求后停止迭代,xj是特征向量,λj是特征值。

Fortran代码如下:

以一个四阶矩阵A来验证:

程序输出结果为:

MATLAB自带的eig函数的计算结果为:

二者结果一致。需要注意的是,特征值所对应的特征向量不是唯一的。

后记

正迭代法,用于求矩阵的主特征值,也就是指矩阵的所有特征值中最大的一个。有正迭代法就有逆迭代法,逆迭代法可以求矩阵的最小特征值以及对应的特征向量。幂迭代法是子空间迭代,Lancos迭代等方法求结构自振频率的基础。

稍后会推出逆迭代法,敬请关注。

对于计算特征值,没有直接的方法。2阶或3阶矩阵可以采用特征多项式来求。但如果试图求下列矩阵的特征值,我们试图用特征多项式

P(x)=(x-1)(x-2)...(x-20)

求特征值是不明智的。

考察一个二阶矩阵A

矩阵有主特征值4与特征向量[1,1],以及另一个特征值-1与特征向量[-3,2],这里主特征值是指矩阵的所有特征值中最大的一个。

把矩阵A乘以任意向量x0(比如[-5,5]),得到以下结果:

用矩阵A反复乘以初始任意向量,其结果是把这个向量平移到非常接近A的主特征向量。这不是巧合,完全可以再换一个向量试试。

当这些步骤提供了求特征向量的方法后,如何求近似特征值?换句话说,假设矩阵A和近似特征向量已经知道,如何求相应近似特征值?考虑特征方程

xξ = Ax

这里x是近似特征向量,ξ是特征值,且ξ未知。借助于最小二乘,得到:

以上求特征值的方法叫幂迭代法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档