MIT线性代数笔记十二 图、网络、关联矩阵

2023-11-07 08:40

本文主要是介绍MIT线性代数笔记十二 图、网络、关联矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  本讲讨论线性代数在物理系统中的应用。可参考链接为:https://www.juanklopper.com/wp-content/uploads/2015/03/I_13_Graphs_Incidence_matrices_Kirchhoff_laws.html

文章目录

  • 1. 图和网络 Graphs & Networks
  • 2. 关联矩阵(Incidence matrices)
    • 2.1 零空间
    • 2.2 列空间
    • 2.3 左零空间
    • 2.4 行空间

1. 图和网络 Graphs & Networks

  图是结点(node)和边(edge)的一个集合。
在这里插入图片描述
  边线上的箭头代表从结点流出的正方向。上图里包含 4 个结点,5 条边,我们可以将每条边都指定参考方向用于区分正负,比如一个电路网络。 在此例子中,将使用电势、回路、电流之类的词汇(当然这个模型还可以表示为液压系统、建筑结构等)。我们通过构造一个incidence matrix 关联矩阵来解析这个图的含义。

2. 关联矩阵(Incidence matrices)

  构造一个矩阵来表示图的内在含义,此矩阵称为关联矩阵,图中每个结点代表一列,每边代表一行。 则上图为 5 ∗ 4 5*4 54矩阵。 反过来从这个矩阵出发我们也能画出图。

在这里插入图片描述

  第一行代表边①,从结点 1 流出记为-1,从结点 2 流入记为 1。也就是从结点1流向了结点2。

  边①、边②和边③构成了一个回路,称为环(loop)。反映在矩阵上是这三个行向量线性相关。

在这里插入图片描述
  源于现实问题的关联矩阵,通常描述了问题的结构。如果我们研究一个很大的图,则会构建一个很大的矩阵,但这个矩阵会是稀疏矩阵。

2.1 零空间

  考察矩阵的零空间,即求 A x = 0 Ax=0 Ax=0的解。零空间告诉我们列向量线性组合的状态。这里 x x x的分量表示的是每个节点。

A x = [ x 2 − x 1 x 3 − x 2 x 3 − x 1 x 4 − x 1 x 4 − x 3 ] = [ 0 0 0 0 0 ] Ax= \left[ \begin{array} { c } { x _ { 2 } - x _ { 1 } } \\ { x _ { 3 } - x _ { 2 } } \\ { x _ { 3 } - x _ { 1 } } \\ { x _ { 4 } - x _ { 1 } } \\ { x _ { 4 } - x _ { 3 } } \end{array} \right] = \left[ \begin{array} { l } { 0 } \\ { 0 } \\ { 0 } \\ { 0 } \\ { 0 } \end{array} \right] Ax=x2x1x3x2x3x1x4x1x4x3=00000

  如果 x x x为结点上的电势,则 A x Ax Ax给出了每个边上的电势差。 求解可以得到零空间为一维 d i m N ( A ) = 1 dim\ N(A)=1 dim N(A)=1,它的基就是 [ 1 1 1 1 ] \left[ \begin{array} { l } { 1 } \\ { 1 } \\ { 1 } \\ { 1 } \end{array} \right] 1111,解集则是 x = c [ 1 1 1 1 ] x=c\left[ \begin{array} { l } { 1 } \\ { 1 } \\ { 1 } \\ { 1 } \end{array} \right] x=c1111,代表等电势,说明等电势条件下不会有电流产生。常数 c 的确定需要边界条件,比如我们将结点 4 接地,则 x 4 = 0 x_4=0 x4=0

2.2 列空间

  若求 A x = b Ax=b Ax=b的解,则相当于在给定了电压 b b b的情况下,求各点的电势,但实际上我们得不到电势的准确值,因为零空间有常数解 c c c,各点得到的电势需要加上常数 c c c,这很类似于求积分要加上常函数,常数值需要边界条件来确定。

  矩阵的列数为 4,而其零空间的维数为 1,则矩阵的秩为 3,矩阵第 1 列、第2列和第 4 列的列向量线性无关。

  考察矩阵列空间,一个重要的问题就是对于什么样的 b b b A x = b Ax=b Ax=b有解。边①、边②和边③构成了环,这三个行向量线性相关,同样的情况还有边④、边⑤和边③构成的环。

  我们沿着第一幅图中的一个环边(1,3,-2)对电势差求和:
( x 2 − x 1 ) + ( x 3 − x 2 ) − ( x 3 − x 1 ) = 0 (x_2-x_1)+(x_3-x_2)-(x_3-x_1)=0 (x2x1)+(x3x2)(x3x1)=0

x 2 − x 1 = b 1 , x 3 − x 2 = b 3 , x 3 − x 1 = b 2 x_2-x_1=b_1,x_3-x_2=b_3,x_3-x_1=b_2 x2x1=b1,x3x2=b3,x3x1=b2

  所以 b b b的分量满足 b 1 + b 3 − b 2 = 0 b_1+b_3-b_2=0 b1+b3b2=0以及 b 3 − b 4 + b 5 = 0 b_3-b_4+b_5=0 b3b4+b5=0。如果把边①、边②、边④、边⑤构成的大环也表示出来则还可以得到一个等式 b 1 − b 2 + b 4 − b 5 = 0 b_1-b_2+b_4-b_5=0 b1b2+b4b5=0,但实际上这个等式就是之前这两个等式的组合。这两个等式就是基尔霍夫电压定律(Kirchhoff’s Voltage law),即环路电势差之和为零。

2.3 左零空间

  矩阵的左零空间是满足 A T y = 0 A^Ty=0 ATy=0的向量 y 的集合。 其中 y y y的每个分量表示的是每个边。 因为矩阵 A T A^T AT有 5 列,且矩阵的秩为 3,因此矩阵的左零空间维数为 2。这反应了行向量的线性关系,整个“图”中,环数为 2。

A T y = [ − 1 0 − 1 − 1 0 1 − 1 0 0 0 0 1 1 0 − 1 0 0 0 1 1 ] = [ 0 0 0 0 ] A ^ { T } y = \left[ \begin{array} { c c c c c } { - 1 } & { 0 } & { - 1 } & { - 1 } & { 0 } \\ { 1 } & { - 1 } & { 0 } & { 0 } & { 0 } \\ { 0 } & { 1 } & { 1 } & { 0 } & { - 1 } \\ { 0 } & { 0 } & { 0 } & { 1 } & { 1 } \end{array} \right]=\left[ \begin{array} { l } { 0 } \\ { 0 } \\ { 0 } \\ { 0 } \end{array} \right] ATy=11000110101010010011=0000

  其中y的分量的值为“边”上的电流。

  在电势差和电流之间建立联系就是欧姆定律(Ohm’s Law)。

在这里插入图片描述
  我们求解 A T y = 0 A^Ty=0 ATy=0就是在求 5 个满足基尔霍夫电流定律(Kirchhoff’s Law)的电流值。

   A T y = 0 A^Ty=0 ATy=0的方程形式 { − y 1 − y 3 − y 4 = 0 y 1 − y 2 = 0 y 2 + y 3 − y 5 = 0 y 4 + y 5 = 0 \left\{ \begin{array} { r } { - y _ { 1 } - y _ { 3 } - y _ { 4 } = 0 } \\ { y _ { 1 } - y _ { 2 } = 0 } \\ { y _ { 2 } + y _ { 3 } - y _ { 5 } = 0 } \\ { y _ { 4 } + y _ { 5 } = 0 } \end{array} \right. y1y3y4=0y1y2=0y2+y3y5=0y4+y5=0,每一个方程关于一个结点,方程表示结点电流值为 0,即流入等于流出。

  从图上解方程,而不是采用消元法解方程。如果我们设定 y 1 = 1 y_1=1 y1=1,并且让 y 1 y_1 y1 y 2 y_2 y2 y 3 y_3 y3组成的回路的“环流“为 0,则有 y 2 = 1 y_2=1 y2=1 y 3 = − 1 y_3=-1 y3=1。可解得 y = [ 1 1 − 1 0 0 ] y=\left[ \begin{array} { c } { 1 } \\ { 1 } \\ { - 1 } \\ { 0 } \\ { 0 } \end{array} \right] y=11100。取另一个回路的环流为 0,则有 y 3 = 1 y_3=1 y3=1 y 4 = − 1 y_4=-1 y4=1 y 5 = 1 y_5=1 y5=1 y = [ 0 0 1 − 1 1 ] y = \left[ \begin{array} { c } { 0 } \\ { 0 } \\ { 1 } \\ { - 1 } \\ { 1 } \end{array} \right] y=00111

  如果设定 y 1 y_1 y1 y 2 y_2 y2 y 4 y_4 y4 y 5 y_5 y5组成的大回路环流为 0,则可以得到另一个向量 y,而该向量在零空间内,是前两个向量的线性组合。

2.4 行空间

  考察矩阵的行空间,因为矩阵 r = 3 r=3 r=3,所以存在 3 个线性无关的向量。**第 1 行、第 2 行和第 4 行为线性无关,在“图”中,边①、边②和边④构成了一张小图,这三个边没有形成回路。**线性相关问题等价于形成回路。没有回路的小图包含4个结点和 3 条边,再添加一条边就会产生回路,在矩阵里表现为在第 1 行、第 2 行和第 4行之上再添加一个行向量就会变为线性相关。没有回路的图称为“树”。

  思考一下维数公式的在“图”中的意义:
  左零空间维数 d i m N ( A T ) = m − r dim\ N(A^T)=m-r dim N(AT)=mr
  等价于 “ 环 ” 数 量 = “ 边 ” 数 量 − ( “ 结 点 ” 数 量 − 1 ) “环”数量=“边”数量-(“结点”数量-1) =1
  即 Eular 公式: “ 结 点 ” − “ 边 ” + “ 环 ” = 1 “结点”-“边”+“环”=1 +=1。对所有图都成立。
  矩阵的秩 r = “ 结 点 ” − 1 r=“结点”-1 r=1,因为 r 表示了线性无关的边的数目,也就是“树”中“边”的数目。
在这里插入图片描述
  之前的讨论都是针对于一个无源的电场,如果加入电源则情况又不同,例如加入电流源相当于将基尔霍夫定律的方程变为 A T y = f A^Ty=f ATy=f,f 就是外部流入的电流。

  将 e = A x e=Ax e=Ax y = C e y=Ce y=Ce A T y = f A^Ty=f ATy=f,三个等式结合得到应用数学中的基本方程 A T C A x = f A^TCAx=f ATCAx=f

   v = A u , y = C v , f = A T y v=Au, y=Cv,f=A^Ty v=Auy=Cvf=ATy

  关于方程 A T C A x = f A^TCAx=f ATCAx=f的更多内容可以阅读 GS 老先生 08 的书“Computational science and engineering”的第二章。

这篇关于MIT线性代数笔记十二 图、网络、关联矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解