特征多项式法(characteristic polynomial )求特征值(结合lanczos和householder)(python,数值积分)

article/2025/10/22 10:51:13

第三十四篇 特征多项式法求对称三对角矩阵的特征值

特征多项式

在之前的篇章中介绍过的,一个矩阵的特征值可以形成一个n阶多项式的根,称为“特征多项式”。线性方程的求解方法可以用来求这些根,详情可以翻看我之前写过的文章。但这并不是一个有效方法。还有一些更有效的方法是基于特征多项式的性质,当要求解特征值的矩阵是一个三对角矩阵时,使用这种性质可以很容易求出特征值。因此这种方法与前面描述的Householder法转换成三对角矩阵或Lanczos法转换成三对角矩阵变换结合使用非常方便。

计算三对角矩阵的行列式值

在上一篇中,已经介绍过将矩阵转化为三对角等价的非迭代方法。得到n × n系统的特征值方程为
在这里插入图片描述
因此,这个问题就成了求行列式方程的根的问题
在这里插入图片描述
虽然我们不能直接找到这些根,但想一下上面方程左边行列式的计算
对于 n = 1
在这里插入图片描述
对于 n = 2
在这里插入图片描述
对于n = 3
在这里插入图片描述
可以看出一个递归关系,使det3(λ)可以简单地从det2(λ)和det1(λ)的值来评估。如果使det0(λ) = 1,一般的递归式可以写成下面这样。
在这里插入图片描述
因此,对于任何λ值,都可以很快计算λ,并且如果知道根λ = 0的范围,它的值可以通过二分法来计算。难点是把λ代入方程确保它是一个根。由于第二个方程的“主次方程”所具有的一个特殊性质,即“Sturm序列”性质,使得这个问题变得容易得多。

Sturm序列性质

对于n = 5,第二个方程左边的例子如下:
在这里插入图片描述
|a |的主余子式是虚线勾勒出的子矩阵的行列式,即消去[A]的第n行、(n−1)行得到。[A]的λ值和它的余子式的λ值在下面给出。
在这里插入图片描述
从上面的推导中得到,它们的根,也就是它们的特征值。从上表可以看出,[A]n, [A]n−1,[A]n−2等的每一个后续的特征值集合总是从前一个集合插值出来的,即[Ai−1]的特征值总是出现在[Ai]的特征值之间的间隙中。对于所有对称[A],这种分离性质被发现,称为“Sturm序列”性质。
它最有用的结论是,对于任何猜测的λ, i = 0,1,2,···,n时,deti(λ)符号变化的次数等于比λ值小[A]的的特征值数量。当计数符号变化时,应该设置det0(λ) = 1,并规定deti(λ) = 0不算作变化。
对于上面所示的具体例子,假设λ = 4,计算deti(4), i = 0,1,2,···,5,得出表格
在这里插入图片描述
从det0(4) = 1.0开始,沿表向下移动,我们看到5个符号变化,因此有5个特征值小于4。
现在让我们试试λ = 3.5。在本例中,表格是
在这里插入图片描述
在这里插入图片描述
我们只看到4个符号变化,因此有4个小于3。5的特征值。这两个结果表明,最大特征值在3.5 <λ< 4范围内。下表总结了λ值的选择结果。
在这里插入图片描述
程序如下:
本程序使用之前的文章中得出的三对角矩阵,其中有一个主程序和检查收敛的子程序check

#LR转化求特征值
import numpy as np
import B
n=5;j=1;al=2.5;almax=5.0;tol=1e-5;limit=100
det=np.zeros(n+1)
alpha=np.array([2.0,2.0,2.0,2.0,2.0])
beta=np.array([-1.0,-1.0,-1.0,-1.0])
print('主对角线项',alpha)
print('非主对角线项',beta)
print('需要的特征值,1=最大,2=第二大...',j)
print('特征值   行列式的值    少于此值的根的数量')
iters=0;det[n]=1.0;aold=almax
while(True):iters=iters+1det[0]=alpha[0]-alfor i in range(2,n+1):det[i-1]=(alpha[i-1]-al)*det[i-2]-beta[i-2]*beta[i-2]*det[i-3]number=0for i in range(1,n+1):if abs(det[i-1])<1.0e-20:continueif abs(det[i-2])<1.0e-20:sign=det[i-1]*det[i-3]else:sign=det[i-1]*det[i-2]if sign<1.0e-20:number=number+1if number<=n-j:oldl=al;al=0.5*(al+almax)else:almax=al;al=0.5*(oldl+al)if det[n-1]<1.0e-20:number=number-1if j%2==0:number=number-1print('{:13.4e}'.format(al),end='')print('{:13.4e}'.format(det[n-1]),end='    ')print(number)if B.check(al,aold,tol) or iters==limit:breakaold=al
print('迭代到收敛次数',iters)
check
def check(x1,x0,tol):check=not abs(x1-x0)/abs(x0)>tolreturn check

终端输出结果如下
在这里插入图片描述
可知,得到的最大特征值为3.7321。


http://chatgpt.dhexx.cn/article/5YiKwYea.shtml

相关文章

Matlab求特征值和特征向量 + find函数的基本简单用法

A[1 5 4; 3 2 1;5 6 6] 计算矩阵A的特征值和特征向量的函数是eig&#xff08;A&#xff09;&#xff0c;常用方法为&#xff1a; 1.求矩阵的特征值 每一列有一个特征值&#xff0c;可知A有三个特征值 设矩阵A的全部特征值构成向量E Eeig(A) 执行选中内容命令行窗口如下&…

Eigen求特征值与特征向量

这里列举三种方式求矩阵的特征值与特征向量 #include <stdio.h> #include <stdlib.h> #include<Eigen/Eigen>using namespace std; using namespace Eigen;void main() {MatrixXd m(3, 3);m << 1,-2,2,-2,-2,4,2,4,-2;cout << m << endl …

matlab 求特征值的命令,matlab怎么求特征值

matlab怎么求特征值&#xff1f; 求矩阵的特征值和特征向量方法 方法/步骤 第一步我们首先需要知道计算矩阵的特征值和特征向量要用eig函数&#xff0c;可以在命令行窗口中输入help eig&#xff0c;查看一下eig函数的用法&#xff0c;如下图所示&#xff1a; 第二步在命令行窗口…

转: 特征值和特征向量--1

转&#xff1a;https://jingyan.baidu.com/article/27fa7326afb4c146f8271ff3.html 一、特征值和特征向量的定义 1 首先让我们来了解一下特征值和特征向量的定义&#xff0c;如下&#xff1a; 2 特征子空间基本定义&#xff0c;如下&#xff1a; END 二、特征多项式 1 特征多项…

线性代数(8):特征值、特征向量和相似矩阵

一、特征值和特征向量 &#xff08;2&#xff09;定义 有矩阵 A 为 n 阶矩阵&#xff0c;Ax λx &#xff08; λ 为一个实数&#xff0c;x为 n 维非零列向量 &#xff09;&#xff0c;则称 λ 为方阵 A 的特征值&#xff0c; x 为特征向量&#xff1b; &#xff08;2&#x…

mosquitto入门教程

参考大神的博客&#xff1a; http://mqtt.org/ MQTT 是一个轻型协议&#xff0c;使用基于 TCP/IP 协议的发布/订阅消息转发模式&#xff0c;专门用于机器对机器 (M2M) 通信。 MQTT 协议的中心是 MQTT 服务器或代理 (broker) &#xff0c;支持发布程序和订阅程序进行访问&…

mosquitto源码分析(一)

关于mqtt、mosquito的技术交流&#xff0c;可入群&#xff1a;221779856 本文由逍遥子撰写&#xff0c;转发请标注原址&#xff1a; http://blog.csdn.net/houjixin/article/details/21461225 一、 Mosquitto简介 mosquitto是一款实现了消息推送协议MQTT v3.1 的开源消息代理…

mosquitto安装与使用

Eclipse Mosquitto 是实现MQTT协议版本5.0、3.1.1和3.1的开源消息代理&#xff08;经EPL / EDL许可&#xff09;。mosquitto 是一个开源的轻量级的C实现&#xff0c;适合在从低功耗单板计算机到完整服务器的所有设备上使用。mosquitto包括服务端和客户端。官网&#xff1a;http…

NMOS和PMOS管

这里我先说一下我自己分辨MOS管的方法 对于NMOS我们看下图中的箭头&#xff0c;都是远离源头。 对于PMOS我们看箭头&#xff0c;都是指向源头 P&#xff1a;POSITIVE积极的寻找自己的起源 N&#xff1a;NEGTIVE消极的远离自己的源头 首先明确一点&#xff0c;S是源极&#xff…

mosquitto接口流程图

接口流程图 1、mosquitto_new2、mosquitto_reinitialise3、mosquitto_connect_async4、mosquitto_loop5、mosquitto_loop_start6、mosquitto_loop_stop7、mosquitto_loop_forever8、mosquitto client自定义开发流程 1、mosquitto_new 2、mosquitto_reinitialise 3、mosquitto_c…

Mosquitto常用命令

1 mosquitto服务器的搭建 服务器这里使用了阿里云的服务器&#xff0c;mosquitto默认需要1883的TCP入端口。需要在安全策略里设置一下。端口当然也可以选其他端口进行配置。 服务安装 # 服务器终端安装mosquitto和mosquitto-clients&#xff0c;后者是一些客户端&#xff0c;…

mosquitto 在 Windows 上的安装

文章目录 第一步&#xff1a;准备安装文件第二步&#xff1a;安装Mosquitto第三步&#xff1a;安装OpenSSL第四步&#xff1a;将要求的DLL放置Mosquitto安装目录下第五步&#xff1a;添加环境变量第六步&#xff1a;验证 第一步&#xff1a;准备安装文件 安装文件点此下载 注…

Mosquitto --topic

订阅树的概念 Mosquitto通过订阅树的方式来管理所有的topic以及客户端的订阅关系&#xff0c;它首先将所有的topic按照/分割并组织成一棵树结构&#xff0c;从根节点到树中的每个节点即组成该节点所对应的一个topic&#xff0c;每个topic都保存一个订阅列表&#xff0c;…

Mosquitto简介及搭建

文章钢要&#xff1a; 1、了解Mosquitto服务器 2、在Liunx中搭建Mosquitto服务器 3、设置Mosquitto集群 一、Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件&#xff0c;提供轻量级的&#xff0c;支持可发布/可订阅的的消息推送模式&#xff0c;使设备对…

[移动] Mosquitto简要教程(安装/使用/测试)

上篇文章《 Android主流推送方案分析&#xff08;MQTT/XMPP/GCM&#xff09;》中&#xff0c;我们给大家介绍了&#xff0c;如何在移动领域使用灵巧的消息传输协议MQTT来完成消息推送&#xff0c;最后也提到了开源项目Mosquitto。实际上&#xff0c;Mosquitto是一个实现了MQTT…

MQTT Broker mosquito配置以及使用tls证书登录附上Python调用代码

MQTT Broker mosquito配置以及使用tls证书登录 文章目录 MQTT Broker mosquito配置以及使用tls证书登录1. 前言2. 安装3. mosquito相关命令3.1 运行停止查看状态3.2 创建可以登录mosquito的用户3.3 配置权限规则文件3.4 配置mosquito3.5 使用mosquito_pub和mosquito_sub测试3.5…

Mosquitto安装及使用

本文简要介绍MQTT服务器mosquitto的安装以及最基本的使用。 第一步&#xff0c; 下载 我的ubuntu是16.4 64bit的虚拟机&#xff0c; mosquitto-1.5.tar.gz 从https://mosquitto.org/download/下载。 第二步 编译和安装 我们先解压&#xff0c;然后执行make&#xff0c; mak…

Mosquitto安装及使用简介

1、源码下载&#xff1a; &#xff08;1&#xff09;官方源码下载&#xff1a;http://mosquitto.org/files/source/ &#xff08;2&#xff09;性能优化版源码下载&#xff1a;https://github.com/houjixin/mosquitto-1.4.11-opt &#xff08;3&#xff09;性能优化版优化方…

SQL--数据查询

特别提示&#xff1a;图片有水印&#xff0c;请不要直接使用 pcshop——Oracle版本 CREATE TABLE customers ( customer_id varchar2(10) NOT NULL, firstname varchar2(32) default NULL, lastname varchar2(32) default NULL, city varchar2(32) default NULL, address var…

SQL查询优化

SQL查询优化 一、获取有性能问题SQL的三种方法 通过用户反馈获取存在性能问题的SQL 通过慢查询日志获取存在性能问题的SQL 实时获取存在性能问题的SQL 二、慢查询日志介绍 1、使用慢查询日志获取有性能问题的SQL (1) 参数配置 slow_query_log 启动停止记录慢查询日志 .…