求解矩阵特征值的QR算法

article/2025/9/28 20:30:59

1. 算法原理介绍:

1. Householder变换:

在这里插入图片描述

2. Givens变换:

在这里插入图片描述

3. 矩阵的QR分解

在这里插入图片描述
在这里插入图片描述

4. 计算特征值的QR方法

在这里插入图片描述

5. 上Hessenberg矩阵方法:

在这里插入图片描述

2. 实施过程:

1. 约化过程:

1. Householder变换:

在这里插入图片描述

2. Givens变换:

在这里插入图片描述在这里插入图片描述

2. 矩阵的QR分解:

1. Householder变换:

在这里插入图片描述

2. Givens变换:

在这里插入图片描述

3. 计算矩阵特征值的QR方法:

在这里插入图片描述

4. 化为上Hessenberg矩阵:

在这里插入图片描述

3. 代码实现:

import numpy as np# Householder变换
def householder(x, i=0):x = x.reshape(len(x), 1)ei = np.zeros((len(x), 1))ei[i] = 1y = np.linalg.norm(x, ord=2) * eiif x[i] > 0:w = (x + y) / np.linalg.norm(x + y)else:w = (x - y) / np.linalg.norm(x - y)H = np.eye(len(x)) - 2 * np.dot(w, w.T)return H# Givens变换
def givens(x, i=0):y = np.zeros(x.shape)y[:i + 1] = x[:i + 1]xj = x.copy()dim = len(x)for j in range(i + 1, dim):theta = np.arctan2(xj[j], xj[i])Pi = np.eye(dim)Pi[i, i] = np.cos(theta)Pi[j, j] = Pi[i, i]Pi[i, j] = np.sin(theta)Pi[j, i] = -Pi[i, j]if j == i + 1:P = Pielse:P = np.dot(Pi, P)xj[i] = np.sqrt(xj[i] ** 2 + xj[j] ** 2)y[i] = xj[i]return y, P# QR分解
def QRFact(A, mode):dim = len(A)Ri = A.copy()if mode == 'householder':for i in range(dim - 1):x = Ri[i:, i]Hi = householder(x)Ri[i:, i:] = np.dot(Hi, Ri[i:, i:])Qi = np.eye(dim)Qi[i:, i:] = Hiif i == 0:Q = Qielse:Q = np.dot(Qi, Q)if mode == 'givens':for i in range(dim - 1):x = Ri[:, i]y, Pi = givens(x, i)Ri = np.dot(Pi, Ri)if i == 0:Q = Pielse:Q = np.dot(Pi, Q)D = np.asmatrix(np.diag(np.where(np.diag(Ri) < 0, -1, 1)))R = D * np.asmatrix(Ri)Q = np.asmatrix(Q.T) * D.Ireturn Q, R# 迭代求特征值
def eig_QR(A, mode):Ak = A.copy()flag = 1n = 0eps = 1e-7while flag:Ak0 = Ak.copy()Qk, Rk = QRFact(Ak, mode)Ak = Rk * Qkif (np.sum(np.diag(np.abs(Ak - Ak0))) < eps):flag = 0n = n + 1return np.diag(Ak), n# 化为上Hessenberg矩阵
def Hessenberg(A):dim = len(A)Ri = A.copy()for i in range(1, dim - 1):x = Ri[i:, i - 1]Hi = householder(x)Qi = np.eye(dim)Qi[i:, i:] = Hiif i == 1:Q = Qielse:Q = np.dot(Qi, Q)Ri = np.dot(np.dot(Qi, Ri), Qi)hMat = np.asmatrix(Ri)return hMatif __name__ == '__main__':n = int(input('请输入矩阵阶数:'))A = np.random.randint(0, 10, (n, n))A = A.dot(A.T)eig, n = eig_QR(A, 'givens')print('Givens变换迭代次数为:{}\n求得特征值为:{}'.format(n, eig))hMat = Hessenberg(A)eig, n = eig_QR(hMat, 'householder')print('上Hessenberg矩阵Householder变换迭代次数为:{}\n求得特征值为:{}'.format(n, eig))eigval, vec = np.linalg.eig(A)print('numpy内置函数求得特征值:{}'.format(eigval))

4. 数值算例:

以随机生成的30阶的实对称矩阵为例:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/XPSy8Nan.shtml

相关文章

【OpenCV4】计算对称矩阵特征值和特征向量 cv::eigen() 用法详解和代码示例(c++)

函数原型&#xff1a; bool cv::eigen ( InputArray src,OutputArray eigenvalues,OutputArray eigenvectors noArray() ) 解析&#xff1a; src&#xff1a;输入矩阵&#xff0c;只能是 CV_32FC1 或 CV_64FC1 类型的方阵&#xff08;即矩阵转置后还是自己&#xff09;eig…

实对称矩阵的特征值求法_线性代数中的二次型,实际上是特征值的几何应用,概念需加强理解...

线性代数中的二次型,实际上是特征值的几何应用,概念仍需加强理解 二次型:实际上是特征值的几何应用 1、二次型化标准形:特征值、特征向量、相似对角化 2、二次型的正定性 3、合同:坐标变换 正交变换化二次型为标准形,标准为求二次型矩阵 A 的特征值,求坐标变换就是求 A 的特…

实对称矩阵的特征值求法_矩阵论系列——特征值篇

特征值篇1——特征值和特征向量 特征值篇1--特征值和特征向量_thompson的博客-CSDN博客​blog.csdn.net 特征值篇2——特征子空间 特征值篇2--特征子空间_thompson的博客-CSDN博客​blog.csdn.net 特征值篇3——矩阵可相似对角化的充要条件 特征值篇3--矩阵可相似对角化的充要条…

matlab矩阵特征值分解,矩阵特征值分解与奇异值分解含义解析及应用

原文在此,仅仅将原文的Matlab代码改为Python3版本。 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是“前一个矩阵的行乘以后一个矩阵的列”,还会一点的可能还会说“前一个矩阵的列数等于后一个矩阵的行数才能相乘”,然而,这里却会和你说——那都是表象。 矩…

c语言求矩阵特征值的程序,如何用C语言编写求对称矩阵的特征值和特征向量的程序编写对称矩阵的特征值和特征向量,其中矩阵用二维数组保存.特征向量要求有大到小放到数组里....

优质解答 //数值计算程序-特征值和特征向量 // //约化对称矩阵为三对角对称矩阵 //利用Householder变换将n阶实对称矩阵约化为对称三对角矩阵 //a-长度为n*n的数组,存放n阶实对称矩阵 //n-矩阵的阶数 //q-长度为n*n的数组,返回时存放Householder变换矩阵 //b-长度为n的数组,返回…

实对称矩阵的特征值求法_机器学习与线性代数 - 特殊矩阵

在线性代数中,有一些特殊的矩阵具有易于分析和操作的特性。它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。 操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不是罕见的。在机器学习和许多应用…

实对称矩阵特征值特征向量求解算法C语言实现

一 算法原理 雅可比方法用于求解实对称矩阵的特征值和特征向量,对于实对称矩阵 A A A,必有正交矩阵 U U U,使得 U T A U D U^{T}AUD UTAUD. D D D是一个对角阵,主对角线的元素是矩阵 A A A的特征值,正交矩阵 U U U的每一列对应于属于矩阵 D D D的主对角线对应元素的特征向量.…

【矩阵论】对称矩阵特征值的性质与直积

前言 在许多实际问题中&#xff0c;所产生的矩阵往往都是对称矩阵&#xff0c;比如我们耳熟能详的实对称矩阵也是重要的研究对象。以下就从实对称矩阵的角度出发&#xff0c;利用特征值的极小极大原理&#xff0c;从普通特征值问题 A x λ x Ax\lambda x Axλx衍生到广义特征…

对称矩阵的特征值与特征向量

对称矩阵&#xff1a; A A的转置 这里讨论的是实对称矩阵 两个好的性质&#xff1a; 1&#xff0c; 特征值是实数 2&#xff0c;特征向量是两两正交的 一个对称矩阵A可以进行如下分解&#xff1a; AQQ的转置 对于对称矩阵来说&#xff0c;有一个性质&#xff1a;主元的符…

【Java】 IDEA使用教程

前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。其实笔者也是一枚从Eclipse转IDEA的探索者&#xff0c;随着近期的不断开发实践和调试&#xff0c;逐步体会到这款智能IDE带来的巨大开发便利&…

IDEA 使用入门

intellij 来阿里之前&#xff0c;还在使用eclipse&#xff0c;后来受无独 同学影响&#xff0c;开始使用intellij&#xff0c;从此以后再也没想过回到eclipse。最近周边的人使用intellij越来越多&#xff0c;还有一部分在eclipse和intellij之间徘徊选择&#xff0c;本文目的是…

idea新手使用教程总结

前言 本教程建立在建设你对idea有一个初步的概念,方便你更快的掌握和使用Intellij Idea开发工具。 由于本人使用的是Windows系统,故下方的所有演示均在Windows系统环境下 Windows下安装 系统环境要求 系统支持:Microsoft Windows 8 / 7 / Vista / 2003 / XP(每个系统版本…

IntelliJ IDEA 使用教程(2019图文版)

前言&#xff1a;IntelliJ IDEA 如果说IntelliJ IDEA是一款现代化智能开发工具的话&#xff0c;Eclipse则称得上是石器时代的东西了。其实笔者也是一枚从Eclipse转IDEA的探索者&#xff0c;随着近期的不断开发实践和调试&#xff0c;逐步体会到这款智能IDE带来的巨大开发便利…

IntelliJ IDEA使用教程创建Java 应用程序

前言 在本教程中&#xff0c;您将学习如何创建、运行和打包打印到系统输出的简单 Java 应用程序。在此过程中&#xff0c;您将熟悉IntelliJ IDEA功能&#xff0c;以提高开发人员的工作效率&#xff1a;编码辅助和补充工具。 IDE解释 IDE&#xff08;集成开发环境&#xff09;&a…

IDEA的使用教程

JDK、JRE、JVM JDK&#xff1a;Java Development Kit&#xff08;java开发者工具&#xff09;要开发java程序就需要有JDKJRE&#xff1a;Java Runtime Environment&#xff08;Java运行环境&#xff09;有JRE就可以运行Java程序JVM&#xff1a;Java Virtual Machine&#xff0…

IntelliJ IDEA 实用操作教程

作者&#xff1a;胡川港 知乎主页&#xff1a;zhihu.com/people/hu-chuan-gang-58 GitHub主页&#xff1a;https://github.com/xiaoxiunique 本文介绍了 IDEA 中令人相见恨晚的技巧&#xff0c;文中从入门、简单项目创建开始&#xff0c;介绍 IDEA 中多光标操作、常用配置、插件…

[IDE]IntelliJ IDEA使用教程(很全)

这个编辑器我就不再多做介绍了。直接开始新建maven hello world 的Java web项目啦 你电脑上得有jdk1.7&#xff0c;或者1.8&#xff0c;然后就是maven3.x吧&#xff0c;再有就是tomcat7以上吧。还得有我这个编辑器。这些是准备条件 下面就直接开始看图啦&#xff1a; 这个我刚…

IntelliJ IDEA的使用教程

1. 下载 地址: IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 2. 个性化设置 2.1 intellij设置经典样式(背景为黑色的经典样式Darcula) 2.2 代码编辑字体修改 2.3 修改字符编码集 为了消除乱码问题与配置的简化&#xff0c;实际的项目中&#xf…

idea使用教程-idea简介

集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09;是用于提供程序开发环境的应用程序&#xff0c;一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…

Java基础语法(十九):IDEA使用教程

目录 一、下载IDEA 二、常用设置 三、常用快捷键 四、常用插件 五、中文汉化 一、下载IDEA 下载地址&#xff1a;IDEA官网 然后点击下载按钮。 然后自行选择所需要的版本。 Ultimate &#xff08;旗舰&#xff09;版本功能最全&#xff0c;但是只有30天的有效期&#x…