矩阵理论——Gerschgorin定理,以及用python绘制Gerschgorin圆盘动图

2023-11-21 00:52

本文主要是介绍矩阵理论——Gerschgorin定理,以及用python绘制Gerschgorin圆盘动图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

矩阵理论——Gerschgorin定理,以及用python绘制Gerschgorin圆盘动图

在矩阵的特征值估计理论当中,有一节是盖尔圆盘定理:

对于一个n阶复数矩阵A,每个特征值lambda位于至少一个Gerschgorin圆盘中,这些圆盘的中心为矩阵A的对角线元素aii,半径为该行(或列)的非对角线元素的绝对值之和:

D(i) = {z ∈ C : |z - aii| ≤ Σ|aij|, j ≠ i}

其中,D(i)表示第i个Gerschgorin圆盘,aii表示矩阵A的第i行(或第i列)的对角线元素,aij表示矩阵A的第i行(或第i列)的非对角线元素。

根据Gerschgorin定理,可以得出以下结论:

  1. 矩阵A的所有特征值都位于所有Gerschgorin圆盘的并集内。
  2. 如果某个Gerschgorin圆盘不与其他任何圆盘有交集,则该圆盘内至少有一个特征值。
  3. 如果k个Gerschgorin圆盘连通,则连通区域中有且仅有k个特征值。此时可能有的圆盘没有特征值

为了更好的理解这个定理,用python绘制动图,将更好理解这个过程。

其中:
A = [ 1 − 0.8 0.5 0 ] = B + D = [ 1 0 0 0 ] + [ 0 − 0.8 0.5 0 ] A = \begin{bmatrix} 1 & -0.8 \\ 0.5 & 0 \end{bmatrix} = B+D= \begin{bmatrix}1 & 0 \\0 & 0\end{bmatrix}+\begin{bmatrix}0 & -0.8 \\0.5 & 0\end{bmatrix} A=[10.50.80]=B+D=[1000]+[00.50.80]

A ( ε ) = B + ε D = [ 1 0 0 0 ] + ϵ [ 0 − 0.8 0.5 0 ] A(\varepsilon)=B+\varepsilon D= \begin{bmatrix}1 & 0 \\0 & 0\end{bmatrix}+\epsilon\begin{bmatrix}0 & -0.8 \\0.5 & 0\end{bmatrix} A(ε)=B+εD=[1000]+ϵ[00.50.80]

动图:
请添加图片描述

代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 20 13:48:19 2023@author: wangshouguo
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation# 创建一个图形窗口
fig = plt.figure(figsize=(6, 6))
ax = plt.gca()
# 设置坐标轴范围
ax.set_xlim(-2, 3)
ax.set_ylim(-2, 3)# 初始化两个空的圆对象
circle1 = plt.Circle((0, 0), 0.1, edgecolor='black', facecolor='none')
circle2 = plt.Circle((1, 0), 0.1, edgecolor='black', facecolor='none')# 初始化两条空的线对象
line1, = ax.plot([], [], 'r-', lw=2)
line2, = ax.plot([], [], 'b-', lw=2)x1,y1,x2,y2 = [],[],[],[]# 初始化函数,用于绘制每一帧的内容
def init():ax.add_patch(circle1)ax.add_patch(circle2)line1.set_data([], [])line2.set_data([], [])return circle1, circle2, line1, line2# 更新函数,用于更新每一帧的内容
def update(frame):delta = frame/100;radius1 = 0.5*deltaradius2 = 0.8*deltaB = np.array([[1,0],[0,0]])D = np.array([[0,-0.8],[0.5,0]])A = B+D*deltaa,b = np.linalg.eigvals(A)circle1.center = (0, 0)circle1.set_radius(radius1)circle2.center = (1, 0)circle2.set_radius(radius2)x1.append(np.real(a))y1.append(np.imag(a))x2.append(np.real(b))y2.append(np.imag(b))line1.set_data(x1, y1)line2.set_data(x2, y2)if frame==99:x1.clear()x2.clear()y1.clear()y2.clear()return circle1, circle2, line1, line2# 创建动画对象
ani = FuncAnimation(fig, update, frames=100, init_func=init,interval=20, blit=True)# 显示动画
plt.show()

这篇关于矩阵理论——Gerschgorin定理,以及用python绘制Gerschgorin圆盘动图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/398671

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交