利用QR算法求解矩阵的特征值和特征向量

为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值.
根据定义的话,很可能需要求解高阶方程...
这明显是个坑...高阶方程你肿么破...

折腾了好久
1.我要求特征值和特征向量.
2.找到一种算法QR分解矩阵求解特征值
3.QR矩阵分解需要Gram-schimidt正交化分解

有一种很明显的感觉,往往在现在很难有 很系统 很深入 的学习某一个学科的某一门知识.
往往学的时候"靠,学这东西有什么用""学了这么久,也不知道怎么用,不想学"
到后来要解决问题的时候,要解决问题很可能这个问题里包含其他子问题,自问题里又有自问题,一层层的递归下去,直到解决所有子问题,才能递归回去,解决我们最初想搞定的问题.

又会懊恼,没有很系统的学习过那门知识.

骚年,Hold 住,你能递归的去死磕一个问题多深,如果你能安全的返回到原来你最初想要解决的问题,没有"爆栈",那么这个深度就代表你的学习能力.深度越深,学习能力是越强的.人不可能一直拥有一个足够舒适的环境去系统的把所有东东都搞定,不可能把所有的基础知识都搞定了再上项目,去解决实际问题.在实际问题中发现问题,解决问题,才是真真的学习能力!!!不是TM卷子上多少分!给朕Hold住!


啊,呼喊万能的wiki帝
http://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors

先回顾一下对于一般的矩阵求特征值是怎么破的

你会发现,上帝啊,这家伙要求解方程...一般的二阶方程可能还能搞得定,但是矩阵的规模一大,高阶方程就坑爹了,你去求解高阶方程组?两个字,呵呵.当前我找到的可行解是矩阵的QR算法.

其实也没有什么难的,就是一次次的迭代,对矩阵A做QR分解,然后由于Q是个正交阵他的逆和转置是一样的,所以你会看到上面图中的公式推到.
迭代次数足够多的时候,可以得到足够接近矩阵特征值的数值解.

再次强调,计算机只能求解数值解,不能求解析解.

    def eig(self, A) :if A is None :returnfor i in range(0, 20) :(Q, R) = self.qr_decomposition(A)A = self.multiply(R, Q)return A

对角线上的就是矩阵的特征值

找到特征值之后根据

Ax=βx

Ax = \beta x

然后对 A−β A - \beta矩阵求逆即可


输出的第一个矩阵的对角线上的都是特征值
函数实现:

    def eig(self, A) :if A is None :returntmp_mat = copy.deepcopy(A)for i in range(0, 20) :(Q, R) = self.qr_decomposition(tmp_mat)tmp_mat = self.multiply(R, Q)row = len(tmp_mat)col = len(tmp_mat[0])for i in range(0, row) :for j in range(0, col) :if i != j :tmp_mat[i][j] = 0eig_vec = self.inverse(self.sub(A, tmp_mat))return (tmp_mat, eig_vec)

以上函数实现中涉及的"未知"函数实现都能在线面的Link里面找到
http://blog.csdn.net/cinmyheart/article/details/43976423

如果你细心的话就会发现,上面的实现是无法对特征值为0的情况进行求解的,不然BUG.
注意事项 :
这里算法要求待求解矩阵是要满足行列式的值非0.即,矩阵的特征值不能为0.

推土机压过
旧日的家只剩下门前电线杆和灰蒙的天房檐下
伸手去捧雨天的房檐水屋后桔园里
从秋千上摔下边疼边笑日落时
有爷爷的三轮车从镇上回来门前
有人坐着小木凳
眨巴着眼
痴痴地等太阳不等你
我等你时间开着推土机
无情的碾过童年

摄于二零一五年二月六日

利用QR算法求解矩阵的特征值和特征向量相关推荐

  1. 如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量

    利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了 ...

  2. numpy求解矩阵的特征值和特征向量

    python2.7代码如下: #-*- encoding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import ...

  3. C语言通过QR分解计算矩阵的特征值和特征向量

    #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h>// ...

  4. python求雅可比矩阵_雅可比算法求矩阵的特征值和特征向量

    目的 求一个实对称矩阵的所有特征值和特征向量. 前置知识 对于一个实对称矩阵\(A\),必存在对角阵\(D\)和正交阵\(U\)满足$$D=U^TAU$$\(D\)的对角线元素为\(A\)的特征值,\ ...

  5. QR分解求矩阵全部特征值

    QR算法求矩阵全部特征值的基本思想是利用矩阵的QR分解通过迭代格式 将A=A1化成相似的上三角阵,从而求出矩阵A的全部特征值. QR方法的计算步骤如下: 下面就依次进行介绍. 一. 将一般矩阵化为上H ...

  6. 斐波那契数列和矩阵的特征值于特征向量的关系

    从事软件开发的人对斐波那契数列可以说在熟悉不过了,一般是学习递归算法的入门案例写在教科书中,它用递推公式表达是这个样子的: 作为一名自尊自爱的码农,看到这个公式不免既心痒又难骚,必须要安排它一下,就拿 ...

  7. 矩阵的特征值和特征向量的雅克比算法C/C++实现

    矩阵的特征值和特征向量是线性代数以及矩阵论中非常重要的一个概念.在遥感领域也是经常用到,比如多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量. 根据普通线性代数 ...

  8. 雅可比旋转求解对称二维矩阵的特征值和特征向量

    问题描述: 给定一个矩阵,如下: A=[a11a21a12a22] A=\begin{bmatrix} a_{11}&a_{12}\\ a_{21}& a_{22} \end{bmat ...

  9. 利用 L-BFGS 算法求解基追踪问题_matlab

    实例:利用 L-BFGS 算法求解基追踪问题_matlab 构建基追踪问题 L-BFGS 求解x 正则化系数 α\alphaα 为 555 正则化系数 α\alphaα 为 101010 结果可视化 ...

最新文章

  1. 记录服务器连接jupyter notebook过程
  2. oracle的结构是什么,Oracle的软件结构是什么呢?
  3. 关于在Android中一个XML文件包含另外一个XML的方法
  4. 文巾解题 1646. 获取生成数组中的最大值
  5. [云炬创业学笔记]第一章创业是什么测试8
  6. PHP stripos strpos,strpos()和stripos()函数的区别
  7. mysql是哪五个字符集_MySQL中涉及的几个字符集
  8. html按钮按下效果_CSS+HTMLlt;水滴按钮效果gt;
  9. 读取/书写Java的XML格式properties文件
  10. 【Python】字典dict类型转换为列表list类型
  11. linux压缩与解压
  12. map任务和reduce任务个数如何计算
  13. vue-cli项目在IE下运行钩子函数抛出异常“ReferenceError: “Promise”未定义“”的解决办法
  14. HDU2108 Shape of HDU【多边形凹凸】
  15. [转载] Python字符串操作方法详解
  16. win10双显卡怎么切换amd和英特尔_win10双显卡怎么切换
  17. 【译】采用微前端架构
  18. PMO结项审计管理规范指南
  19. 剪映+json解析将视频中的声音转换成文本
  20. AMD AM4主板首曝:A320芯片组 惠普打造

热门文章

  1. java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码
  2. 计算机知识小课堂宣传标语,创建高效课堂宣传标语50条
  3. 【图像隐藏】基于混合 DWT-HD-SVD 的数字图像水印方法技术附matlab代码
  4. oracle1422,Oracle错误:数据泵导出时报错ORA-1422
  5. 语音转文字的测试用例aqq端
  6. 手工制作F450四旋翼无人机的工具准备以及apm调参 GPS调参等相关工作
  7. 2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
  8. 七月在线python数据分析_七月在线Python数据分析-入门学习笔记
  9. java 打包 ios项目_[转]Unity之打包IOS流程
  10. 双11大战 || 今天,你盖楼了吗?