乘幂法求矩阵的特征值及特征向量
设A\textbf{A}是nn阶矩阵,如果数λ\lambda和nn维非零列向量x\textbf{x}使关系式:
\textbf{A}\textbf{x}=\lambda\textbf{x},
成立,则称数 λ\lambda为方阵 A\textbf{A}的特征值,非零向量 x\textbf{x}称为 A\textbf{A}的对应于特征值 λ\lambda的特征向量。
特征值问题是对方阵而言的,对应的特征向量x≠0\textbf{x}\neq 0;nn阶方阵A\textbf{A}的特征值,就是使其次线性方程组(A−λI)x=0(\textbf{A}- λ\textbf{I})\textbf{x}=0有非零解的λ\lambda值,即满足方程|A−λI|=0|\textbf{A}- λ\textbf{I}|=0的λ\lambda都是矩阵A\textbf{A}的特征值。
|\textbf{A}- λ\textbf{I}|=0 \Leftrightarrow \left |\begin{matrix}a_{11}-\lambda & a_{12} & \ldots & a_{1n} \\a_{21} & a_{22}-\lambda & \ldots & a_{2n} \\\vdots & \vdots & \vdots & \vdots \\a_{n1} & a_{n2} & \ldots & a_{nn}-\lambda \end{matrix}\right |=0.
一般计算方法是第一步先求解特征值λ\lambda:求A\textbf{A}的特征值λ\lambda就是求|A−λI|=0|\textbf{A}- \lambda\textbf{I}|=0的根;接下来再求解特征向量x\textbf{x}:求A\textbf{A}的相应于λ\lambda的特征向量就是求(A−λI)x=0(\textbf{A}- \lambda\textbf{I})\textbf{x}=0的非零解向量。求矩阵A\textbf{A}的特征值及特征向量问题就转化为求解多项式方程以及齐次线性方程组的通解问题。
不过在nn非常大时,直接求解特征值及其对应的特征向量开销会很大,因此可以用乘幂法解其数值。假定nn阶矩阵A\textbf{A}对应的nn个特征值按模从大到小的排序为:
|\lambda_1|> |\lambda_2|> |\lambda_3| \ldots > |\lambda_n|,
又假设关于λ1\lambda_1、λ2\lambda_2、…\ldots、λn\lambda_n的特征向量v1\textbf{v}_1、v2\textbf{v}_2、…\ldots、vn\textbf{v}_n线性无关。
任取初始向量x0=α1v1+α2v2+α3v3+…+αnvn,(αi≠0)\textbf{x}_0=\alpha_1\textbf{v}_1+\alpha_2\textbf{v}_2+\alpha_3\textbf{v}_3+\ldots+\alpha_n\textbf{v}_n,(\alpha_i \neq 0),建立迭代公式:xk+1=Axk\textbf{x}_{k+1}=\textbf{A}\textbf{x}_k.
\begin{align*}\textbf{x}_1=\textbf{A}\textbf{x}_0&=\alpha_1\textbf{A}\textbf{v}_1+\alpha_2\textbf{A}\textbf{v}_2+\alpha_3\textbf{A}\textbf{v}_3+\ldots+\alpha_n\textbf{A}\textbf{v}_n \\ &=\alpha_1\lambda_1\textbf{v}_1+\alpha_2\lambda_2\textbf{v}_2+\alpha_3\lambda_3\textbf{v}_3+\ldots+\alpha_n\lambda_n\textbf{v}_n\end{align*}
\begin{align*}\textbf{x}_2=\textbf{A}\textbf{x}_1&=\alpha_1\lambda_1\textbf{A}\textbf{v}_1+\alpha_2\lambda_2\textbf{A}\textbf{v}_2+\alpha_3\lambda_3\textbf{A}\textbf{v}_3+\ldots+\alpha_n\lambda_n\textbf{A}\textbf{v}_n \\ &=\alpha_1\lambda^2_1\textbf{v}_1+\alpha_2\lambda^2_2\textbf{v}_2+\alpha_3\lambda^2_3\textbf{v}_3+\ldots+\alpha_n\lambda^2_n\textbf{v}_n\end{align*}
……………………
\begin{align*}\textbf{x}_{k}=\textbf{A}\textbf{x}_{k-1}&=\alpha_1\lambda^{k}_1\textbf{v}_1+\alpha_2\lambda^{k}_2\textbf{v}_2+\alpha_3\lambda^{k}_3\textbf{v}_3+\ldots+\alpha_n\lambda^{k}_n\textbf{v}_n\\ &=\lambda^{k}_1[\alpha_1\textbf{v}_1+\alpha_2(\frac{\lambda_2}{\lambda_1})^{k}\textbf{v}_2+\alpha_3(\frac{\lambda_3}{\lambda_1})^{k}\textbf{v}_3+\ldots+\alpha_n(\frac{\lambda_n}{\lambda_1})^{k}\textbf{v}_n]\end{align*}.
因为 |λiλ1|<1,i=2,…,n|\frac{\lambda_i}{\lambda_1}|,故当 k→∞k \to \infty, xk→α1λk1v1\textbf{x}_{k} \to \alpha_1\lambda^{k}_1\textbf{v}_1。因此 xk\textbf{x}_{k}可看成是关于特征值 λ1\lambda_1的近似特征向量,不过有个缺点就是当 |λ1|>1|\lambda_1|>1(或 |λ1|<1|\lambda_1|), xk\textbf{x}_{k}中不为0的分量将随 kk的增大而无线增大,计算机就有可能出现上溢(或下溢)。所以在实际计算时,需按规范法计算,每步先对向量xk\textbf{x}_{k}进行规范化:
\textbf{z}_k=\frac{\textbf{x}_k}{||\textbf{x}_k||_{\infty}},\textbf{x}_{k+1}=\textbf{A}\textbf{z}_k.
通过上面的分析,可将乘幂法求矩阵的特征值及特征向量的方法可归纳如下:
计算特征值λi,i=1,2,3,…,n\lambda_i,i=1,2,3,\ldots,n,任选一个向量x0\textbf{x}_0,递归xk=Azk−1\textbf{x}_k=\textbf{A}\textbf{z}_{k-1};
当kk充分大时或误差 Frobenius Norm ||xk−xk−1||||\textbf{x}_k -\textbf{x}_{k-1}||足够小时,停止;
zk\textbf{z}_k就是当前A\textbf{A}的主特征向量,对应的特征值为:
λi=maxxk(xk中的最大分量);\lambda_i=\max \textbf{x}_{k}(\textbf{x}_{k}中的最大分量);
在A\textbf{A}中去掉主特征λi\lambda_i对应向量的因素
A=A−λizkzTk,\textbf{A}=\textbf{A}-\lambda_i \textbf{z}_k\textbf{z}^{T}_k,接下来再找下一个特征对,然后类似计算。
针对特征值相等的情况,假定|λ1|=|λ2|=…=|λm|>|λm+1|>…>|λn||\lambda_1|= |\lambda_2|=\ldots =|\lambda_m|> |\lambda_{m+1}|> \ldots > |\lambda_n|,由于向量α1v1+α2v2+α3v3+…+αmvm\alpha_1\textbf{v}_1+\alpha_2\textbf{v}_2+\alpha_3\textbf{v}_3+\ldots+\alpha_m\textbf{v}_m仍是属于λ1\lambda_1的特征向量,故利用上述方法依旧可求解λ1,λm+1,…,λi\lambda_1,\lambda_{m+1},\ldots,\lambda_{i}特征值及其对应的特征向量。
乘幂法求矩阵的特征值及特征向量相关推荐
- 乘幂法计算矩阵主特征值和特征向量-Matlab实现
文章目录 1.前言 2.方法介绍 3.算法步骤 4.数值实验 5.总结 6.Matlab代码 1.前言 乘幂法主要用于求实矩阵按模最大的特征值(主特征值)和相应特征向量.本文通过Matlab解决实际例 ...
- numpy求矩阵的特征值与特征向量(np.linalg.eig函数详解)
numpy求矩阵的特征值与特征向量(np.linalg.eig) 语法 np.linalg.eig(a) 功能 Compute the eigenvalues and right eigenvecto ...
- matlab编程 利用生成一个10阶魔方矩阵,求矩阵的特征值、特征向量,对于特征值,请按照降序进行排列,对应的特征向量进行同样的排序。...
您可以使用 Matlab 中的 eig 函数来计算矩阵的特征值和特征向量.例如,假设您要求解的矩阵为 A,则可以使用以下代码求解: [V,D] = eig(A);
- 用R求矩阵的特征值和特征向量
最近在学习多元统计分析的主成分分析时,发现需要经常计算矩阵的特征值和特征向量,自己就找了下用R来做计算的函数. 我们可以用sigen()函数来计算特征对. #创建一个矩阵 a <- matrix ...
- python求雅可比矩阵_雅可比算法求矩阵的特征值和特征向量
目的 求一个实对称矩阵的所有特征值和特征向量. 前置知识 对于一个实对称矩阵\(A\),必存在对角阵\(D\)和正交阵\(U\)满足$$D=U^TAU$$\(D\)的对角线元素为\(A\)的特征值,\ ...
- matlab中怎么求矩阵的特征值和特征向量
https://jingyan.baidu.com/article/d169e186047d86436611d88a.html matlab如何求矩阵特征值_xiaolu的专栏-CSDN博客_matl ...
- 利用OpenCV求矩阵的特征值和特征向量
来源: 互联网 首先安转和配置OpenCV windows版,在此不赘述! 首先看看OpenCV中的矩阵运算的相关知识:CvMat(多通道矩阵) CvMat的结构定义: typedef struct ...
- 求矩阵全部特征值和特征向量的QR方法
计算方法 本专栏为西安交通大学的<数值计算>研究生教材里面提供的计算方法撰写Python程序. ThinkZtoA ¥29.90 订阅博主 import numpy as np impor ...
- MATLAB反幂法求矩阵最小特征值及其特征向量
A=input('输入代解矩阵:'); x=input('输入特征向量的迭代初值(列向量):'); k=0; while 1jk=1;for j=2:numel(A(1,:)) % 由 numel(A ...
- matlab——求矩阵最大特征值对应的特征向量
A=[1,1,2,3,4;1,1,1,2,3;1/2,1,1,1,2;1/3,1/2,1,1,1;1/4,1/3,1/2,1,1];%待求矩阵[x,y]=eig(A);%求矩阵的特征值和特征向量,x为 ...
最新文章
- 董彬教授:用深度神经网络学习偏微分方程及其数值求解的离散格式
- 不会被计算机打败的棋类游戏,电脑首次打败人类围棋冠军意味着什么?
- spring源码分析之freemarker整合
- Petalinux 2017.4安装教程
- 定义数据表之间的关联 (DataSet.Relations.Add)
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
- 查md5或者sha1值
- 【Linux网络编程】循环服务器之TCP模型
- iphone mac地址是否随机_iOS8随机MAC地址功能:需要满足前提要求
- python排序元组两个元素_在python中对具有3个元素的元组列表进行排...
- java数组末尾添加元素_JavaScript 数组 Array对象增加和删除 元素
- 使用腾讯OCR,图片转表格
- Excel/WPS表格怎么设置输入密码才能打开文件
- struts启动过滤器异常_SpringCloud Gateway高阶之全局异常处理
- 一秒实现免费下载百度文库资料的方法
- 掘金万亿级市场,F5G开启湖北全光智慧城市
- 3dmax模型单位转换问题解决方法
- EPROCESS+KPCR+ETHREAD部分介绍-学习记录
- c语言中 #include < > 和include “ “的区别
- 2016寒假读书笔记