8.QR分解的python实现

import numpy as np
import math

#直到主对角线上的值变化很小时,结束循环
def is_same(a,b):
    print(a)
    print(b)
    n = len(a)
    for i in range(n):
        if(math.fabs(a[i]-b[i]) > 1e-9):
            return False
    return True

if __name__ == ‘__main__‘:
    a = np.array([0.65,0.28,0.02,0.15,0.67,0.18,0.12,0.36,0.52])
    n = int(math.sqrt(len(a)))
    a = a.reshape((n,n))
    #计算特征值和特征向量
    value,v = np.linalg.eig(a)
    # print("特征值:",value)
    # print("特征向量:",v)

    times = 0
    #diag矩阵的对角线元素
    while(True):
        # v1保存的是前一个矩阵的对角线元素
        v1 = np.diag(a)
        print(a)
        print(v1)
        #QR分解计算新的a
        q,r = np.linalg.qr(a)
        a = np.dot(r,q)
        times += 1
        if( is_same(np.diag(a),v1) ):
            break
        # print("正交阵:",q)
        # print("三角阵:",r)
        # print("近似阵",a)
        # print("==="*30)

    print("次数:",times," 近似值:",np.diag(a))
    print("精准特征值:",value)

原文地址:https://www.cnblogs.com/xiaochi/p/11223730.html

时间: 2024-10-12 10:21:34

8.QR分解的python实现的相关文章

机器学习中的矩阵方法03:QR 分解

1. QR 分解的形式 QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积.QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础.用图可以将分解形象地表示成: 其中, Q 是一个标准正交方阵, R 是上三角矩阵. 2. QR 分解的求解 QR 分解的实际计算有很多方法,例如 Givens 旋转.Householder 变换,以及 Gram-Schmidt 正交化等等.每一种方法都有其优点和不足.上一篇博客介绍了 Givens 旋转和 Householder

QR分解与最小二乘(转载自AndyJee)

转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的积. QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础. 定义: 实数矩阵 A 的 QR 分解是把 A 分解为Q.R,这里的 Q 是正交矩阵(意味着 QTQ = I)

QR分解

从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在于将矩阵转化成正交矩阵和上三角矩阵的乘积,对应的分解公式是A=Q*R.正交矩阵有很多良好的性质,比如矩阵的逆和矩阵的转置相同,任意一个向量和正交矩阵的乘积不改变向量的2范数等等.QR分解可以用于求解线性方程组,线性拟合.更重要的是QR分解是QR算法的基础,可以用于各种特征值问题,所以QR分集的应用非常广泛.

QR分解与最小二乘

主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现   一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的积. QR 分解经常用来解线性最小二乘法问题.QR 分解也是特定特征值算法即QR算法的基础. 定义: 实数矩阵 A 的 QR 分解是把 A 分解为Q.R,这里的 Q 是正交矩阵(意味着 QTQ = I)而 R 是上三角矩阵.类似的,我们可以定义 A 的 QL, RQ 和 LQ 分解. 更一般的说,我

数值分析--矩阵QR分解的三种方法

QR分解法是目前求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量.它是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法,与此正规正交矩阵的通用符号Q有关.

Householder 变换与 QR 分解

import random import copy EPS = 0.00001 class MatrixException( Exception ): pass class Matrix( object ): def __init__( self, rows, cols, values_list = None, description = None ): self.rows = rows self.cols = cols self.matrix = [ [ 0 for c in xrange(

矩阵的QR分解(三种方法)

Gram-Schmidt正交化 假设原来的矩阵为[a,b],a,b为线性无关的二维向量,下面我们通过Gram-Schmidt正交化使得矩阵A为标准正交矩阵: 假设正交化后的矩阵为Q=[A,B],我们可以令A=a,那么我们的目的根据AB=I来求B,B可以表示为b向量与b向量在a上的投影的误差向量: $$B=b-Pb=b-\frac{A^Tb}{A^TA}A$$

矩阵分解---QR正交分解,LU分解

相关概念: 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0 正定矩阵:如果对于所有的非零实系数向量x ,都有 x'Ax>0,则称矩阵A 是正定的.正定矩阵的行列式必然大于 0, 所有特征值也必然 > 0.相对应的,半正定矩阵的行列式必然 ≥ 0. QR分解 矩阵的正交分解又称为QR分解,是将矩阵分解为一个正交矩阵Q和一个上三角矩阵的乘积的形式. 任意实数方阵A,都能被分解为A=QR.这里的Q为正交单位阵,即

《Python数据分析常用手册》一、NumPy和Pandas篇

一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 3.数据分析常用库的离线安装包(pip+wheels)(百度云):http://pan.baidu.com/s/1dEMXbfN 密码:bbs2 二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和