「幂法和反幂法的matlab实现」.doc_第1页
「幂法和反幂法的matlab实现」.doc_第2页
「幂法和反幂法的matlab实现」.doc_第3页
「幂法和反幂法的matlab实现」.doc_第4页
「幂法和反幂法的matlab实现」.doc_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料仅供借鉴1 幂法求矩阵主特征值及对应特征向量 摘要 矩阵特征值的数值算法 在科学和工程技术中很多问题在数学上都归结为矩阵的特征 值问题 所以说研究利用数学软件解决求特征值的问题是非常必要的 实际问题中 有时 需要的并不是所有的特征根 而是最大最小的实特征根 称模最大的特征根为主特征值 幂法是一种计算矩阵主特征值 矩阵按模最大的特征值 及对应特征向量的迭代方法 它最大的优点是方法简单 特别适用于大型稀疏矩阵 但有时收敛速度很慢 用 java 来编写算法 这个程序主要分成了四个大部分 第一部分为将矩阵转化为线性 方程组 第二部分为求特征向量的极大值 第三部分为求幂法函数块 第四部分为页面设 计及事件处理 其基本流程为幂法函数块通过调用将矩阵转化为线性方程组的方法 再经 过一系列的验证和迭代得到结果 关键字 主特征值 特征向量 线性方程组 幂法函数块 POWER METHOD FOR FINDING THE EIGENVALUES AND CORRESPONDING EIGENVECTORS OF THE 资料仅供借鉴2 MATRIX ABSTRACT Numerical algorithm for the eigenvalue of matrix in science and engineering technology a lot 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 is the exponentiation function block The fourth part is the page design and event processing 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 matrix Key words Main eigenvalue characteristic vector linear equations power function block 目 录 1 幂法 1 1 1 幂法的基本理论和推导 1 1 2 幂法算法的迭代向量规范化 2 资料仅供借鉴3 2 概要设计 3 2 1 设计背景 3 2 2 运行流程 3 2 3 运行环境 3 3 程序详细设计 4 3 1 矩阵转化为线性方程组 4 3 2 特征向量的极大值 4 3 3 求幂法函数块 3 4 界面设计与事件处理 4 运行过程及结果 6 4 1 运行过程 6 4 2 运行结果 6 4 3 结果分析 6 5 结论 7 参考文献 8 附录 56 1 幂法 设实矩阵有一个完备的特征向量组 其特征值为 相应的特 nnij aA n 21 征向量为 已知 A 的主特征值是实根 且满足条件 n xxx 21n 321 资料仅供借鉴4 1 1 幂法的基本理论和推导 1 幂法的基本思想是任取一个非零的初始向量 由矩阵构造一向量序列 0 vA 称为迭代向量 0 1 1 0 2 12 01 vAAvv vAAvv Avv k kk 由假设 可表示为 设 1 0 v nnx xxv 22110 0 1 1 于是 n k nn kkk kk xxxvAAvv 22211101 1 111 2 1 111k k i n i k i i k xxx 2 其中 由假设 故 从而 i n i k i ik x 2 1 2 1 1 1 ni i lim0 k k 这说明序列越来越接近的对应于的特征向量 或者说当充分大 1 1 1 lim k k k v x 1 k k v A 1 k 时 即迭代向量为的特征值的近似向量 111 k k vx k v 1 下面再考虑主特征值的计算 用表示的第 个分量 则 1 k i v k vi 故 也就是说两相邻的迭代向量分量的 1111 1 11 kk iii k ik ii vx v x 1 1 lim k i k k i v v 比值收敛到主特征值 通过以上推论可以得出结论 设有个线性无关的特征向量 即非亏损的 nn RA n 主特征值满足 则对任何非零初始向量 构造的 1 n 321 v 0 1 向量序列收敛到主特征向量 收敛到主特征值 定理一 0 vAv k k 1 x ik ik v v 1 1 幂法只能对非亏损矩阵求实的主特征值 且常用于实对称矩阵 1 2 幂法算法的迭代向量规范化 2 3 资料仅供借鉴5 应用幂法计算的主特征值及对应的特征向量时 如果 或 迭A 1 1 1 1 1 代向量的各个不等于零的分量将随而趋向于无穷 或趋向于零 这样在计算机 k v k 实现时就可能 溢出 为了克服这个缺点 就需要将迭代向量加以规范化 设有一向量 将其规范化得到向量 其中表示向量的绝0 v v v u max vmaxv 对值最大的分量 即如果有 则 且为所有绝对值最大的分 i ni i vv 1 max 0 0 max i vv 0 i 量中的最小下标 任取一初始向量 构造向量序列 00 1 v vmax 0 0 0 1 0 0 2 0 2 2 2 2 0 0 2 12 0 0 1 1 1001 maxmax maxmaxmax maxmax vA vA u vA vA v vA vA v v u Av vA Auv Av Av v v uAvAuv k k k k k k 由 3 1 式有 n i i k i i k i n i k ii k xxxvA 2 1 111 1 0 n i i k i i k n i i k i i k k k k xx xx vA vA u 2 1 111 2 1 111 0 0 max max 2 1 2 1 11 2 1 11 max max x x xx xx i n i i k i i n i i k i i k 1 同理 可得到 资料仅供借鉴6 n i i k i i k n i i k i ik k xx xx v 2 1 1 11 1 1 2 1 11 1 max 2 1 2 1 1 11 2 1 111 max max max n i i k i i n i i k i i k xx xx v k 2 结论 设有个线性无关的特征向量 主特征值满足 nn RA n 1 则对任意非零初始向量 按下述方法构造的 n 321 0 100 uv 向量序列 k u k v kkk kk kk vu v Auv uv max 0 1 00 2 1 k 则有 2 3 2 4 1 1 max lim1 x x uk k 1 lim2 k k 2 概要设计 2 1 设计背景 用 java 程序来实现幂法求矩阵最大特征值及对应特征向量 资料仅供借鉴7 2 2 运行流程 本程序分为了几大部分 通过方法间的相互调用 达到求解目的 首先 matrixx 方法的作用是将矩阵 A 与向量 X 相乘 结果存储在 Y 中 即将方程组呈 现出来 slove 方法求出各未知数的最大值 程序的主体方法 mifa 通过 do while 循环中 调用 matrixx 方法实现幂法函数 同时建立页面 达到在页面中输入初向量和矩阵 程序读入这些数据并运行出结果 2 3 运行环境 MicrosoftWindows XP Professional MyEclipse 8 6 3 程序详细设计 4 5 首先在桌面里新建文件夹 并运行程序 MyEclipse 8 6 令一维矩阵 u 1 1 1 双 精度浮点型初值为 a 1 0 b 2 0 整型变量方程组的阶数 n 3 双精度浮点型方程组 系数矩阵为 A 3 4 3 4 6 3 3 3 1 3 1 矩阵转化为线性方程组 将二维矩阵 A 一维矩阵 x y 以及阶数 n 作为它的形参 通过 for 循环将 Ax 相乘得 到的结果存储在 Y 中 其执行程序如下 public void matrixx double A double x double y int n for inti 0 i n i y i 0 for int j 0 j n j y i A i j x j 3 2 特征向量的极大值 首先将形参 double 型一维矩阵 x 中的元素通过 for 循环取到最大值 并将最大值赋 予 max 其执行程序如下 资料仅供借鉴8 public double slove double x int n double max 0 for inti 0 ix i 1 x i x i 1 return max 3 3 求幂法函数块 这个方法有五个形参 二维矩阵 A 一维矩阵 u 双精度浮点型初值 a b 矩阵的阶数 n 该方法的主体部分在 do while 中 通过循环迭代 matrixx 方法和 solve 方法 解出 矩阵的特征值并且比较出最大特征值 通过 for 循环列出关于该矩阵的线性方程组的所有 特征向量 其执行程序如下 public void mifa double A double u doublea doubleb int n double c 0 0 double c1 0 0 int count 0 double temp 0 0 0 do double u1 u matrixx A u1 u n c slove u n c1 c guifanhua u n printfcount count u n count for inti 0 ia Math abs c1 c b System out println 最大特征值为 c System out println 特征向量为 for inti 0 i n i System out println u i 3 4 界面设计和事件处理 6 资料仅供借鉴9 通过调用以下的一系列的类 达到输入矩阵与向量 点击运算得出主特征值与特征向量 java awt EventQueue 是一个与平台无关的类 它将来自于底层同位体类和受信任的 应用程序类的事件列入队列 java awt event ActionEvent 当特定于组件的动作 比如被按下 发生时 由组件 比如 Button 生成此高级别事件 java awt event ActionListener 用于接收操作事件的侦听器接口 对处理操作 事件感兴趣的类可以实现此接口 而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册 java util Arrays 包含一个静态的工厂 允许数组被视为列表 javax swing JFrame 与其他所有 JFC Swing 顶层容器一样 JFrame 包含一个 JRootPane 作为其惟一的子容器 javax swing JPanel 里面有一个面板组件 就是由该类提供的 你可以new些对象 创建一个面板 则在界面中就可以有具体的显示 javax swing border EmptyBorder 设置组件边框 javax swing JLabel 可以通过设置垂直和水平对齐方式 指定标签显示区中标签内 容在何处对齐 javax swing JTextField api里面得一个文本主键 要掉用它就要import实现接口 javax swing JButton push 按钮的实现 java awt BorderLayout 这是一个布置容器的边框布局 它可以对容器组件进行安 排 并调整其大小 使其符合下列五个区域 北 南 东 西 中 4 运行过程及结果 4 1 运行过程 通过 J 6 0 用 for 循环将 Ax 相乘得到的结果存储在 Y 中 将形参 double 型数组 x 中通过 for 循环取到最大值 在 do while 中调用 matrixx 方法 及 solve 方法 并打印 最大特征值与特征向量 4 2 运行结果 资料仅供借鉴10 经多次调试程序 不再报错 结果如下图 4 3 结果分析 分析结果 由于误差的存在使得每一次迭代都将误差进一步的扩大 可能会偏离计算 方向 在计算结果可能会出现误差 这很正常 重要的是掌握这种迭代思想 并且为了进一步研究不同的初值对结果的影响 也做了实验 发现在不同初值下求出 的结果也各不相同 所以为了得到更精确的结果 在实验前一定要选取最合适的初值即初 向量 5 结论 通过实验我们可以看到 幂法程序可以用来计算矩阵绝对值最大的特征值及相应的特 征向量 幂法的缺点是开始的时候并不知道矩阵是否有单一的主特征值 也不知道如何选 择以保证它关于矩阵特征向量的表达中包含一个与主特征值相关的非零特征向量 0 v 在这次课程设计中 我学习到了许多知识 其中包括之前学过的迭代思想 在矩阵中 得到充分利用 包括 do while 循环语句的使用 不同类的定义等等解决特征值和特征向量 的方法还有很多 由于时间关系没有研究很多 在论文写作过程中 我发现了自己很多缺 资料仅供借鉴11 点 经常因为粗心大意在代码中打错一个符号 检查很久才检查出来 同时对 java 语言编 写也不够熟练 很多东西都要重新到书上去找 由于经验的匮乏 难免有许多考虑不周的 地方 在以后的时间里 我会继续学习 java 有关知识 改进自己的缺点 争取解决更多的 问题 参考文献 1 李庆杨 王能超 易大义 数值分析 第 4 版 M 北京 清华大学出版社 2006 2 侯风波 汪永高 求n阶实方阵A的全部模最大的特征值及其相应特征向量的幂法 J 工科数学 2000 16 2A 3 廖鸿志 幂法求特征值的若干问题 J 云南大学学报 1988 10 4A 4 张德丰 MATLAB 数值分析与仿真案例 M 北京 清华大学出版社 2011 5 金一庆 陈越 数值方法 M 北京 机械工业出版社 2003 6 JavaTM PlatformStandard Ed 附 录 页面设计与事件处理 页面设计与事件处理 package wewr import java awt EventQueue import java awt event ActionEvent import java awt event ActionListener import java util Arrays import javax swing JFrame import javax swing JPanel import javax swing border EmptyBorder import javax swing JLabel 资料仅供借鉴12 import javax swing JTextField import javax swing JButton import java awt BorderLayout public class MyBoundary extends JFrame private JPanel contentPane private JButton btnNewButton private double u 0 0 0 private double A 0 0 0 0 0 0 0 0 0 private String u1 private String A1 private String A2 private JTextField textField private JTextField textField 1 Launch the application public static void main String args EventQueue invokeLater new Runnable public void run try MyBoundary frame new MyBoundary frame setVisible true catch Exception e e printStackTrace Create the frame public MyBoundary setDefaultCloseOperation JFrame EXIT ON CLOSE setBounds 100 100 453 316 contentPane new JPanel contentPane setBorder new EmptyBorder 5 5 5 5 setContentPane contentPane contentPane setLayout null JLabel lblNewLabel new JLabel u5411 u91CF lblNewLabel setBounds 35 26 86 24 资料仅供借鉴13 contentPane add lblNewLabel JLabel lblNewLabel 1 new JLabel u77E9 u9635 lblNewLabel 1 setBounds 35 73 86 24 contentPane add lblNewLabel 1 textField new JTextField textField setBounds 131 28 214 22 contentPane add textField textField setColumns 10 textField 1 new JTextField textField 1 setBounds 131 75 219 22 contentPane add textField 1 textField 1 setColumns 10 btnNewButton new JButton u7ED3 u679C btnNewButton setBounds 140 160 93 23 btnNewButton addActionListener new ActionListener Override public void actionPerformed ActionEvent e u1 textField getText split for int i 0 i 3 i u i Integer parseInt u1 i A1 textField 1 getText split s for int i 0 i 3 i System out println Arrays deepToString A1 A2 i A1 i split for int j 0 j 3 j A i j Integer parseInt A2 i j trim new MifaSolve u A contentPane add btnNewButton 主特征值与特征向量计算 主特征值与特征向量计算 package wewr public class MifaSolve static double a 1 0 static double b 2 0 static int n 3 public MifaSolve double u double A 资料仅供借鉴14 mifa A u a b n public MifaSolve public static void main String args MifaSolve mifaSolve new MifaSolve double u 1 1 1 double A 3 4 3 4 6 3 3 3 1 mifaSolve mifa A u a b n 将矩阵A与向量X相乘 结果存储在Y中 用for循环将Ax相乘得到的结果存储在Y中 public void matrixx double A double x double y int n for int i 0 i n i y i 0 for int j 0 j n j y i A i j x j 获得迭代序列 求最大值 将形参double型数组x中通过for循环取到最大值 也就是书上的最大特征 值的模 public double slove double x int n double max 0 for int i 0 ix i 1 x i x i 1 return max 规范化函数 public v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论