Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • 线性代数

    • 线性代数知识点总结
    • 方程组的几何解释
    • 矩阵消元
    • 乘法和逆矩阵
    • 矩阵的LU分解
    • 转换、置换、向量空间R
    • 列空间和零空间
    • 求解Ax=0主变量——特解
    • 求解Ax=b 可解性和解的结构
    • 线性相关性、基、维数
    • 四个基本子空间
    • 矩阵空间、秩1矩阵和小世界图
    • 图和网络
      • 图和网络
    • 正交向量与子空间
    • 子空间投影
    • 投影矩阵和最小二乘
    • 正交矩阵和Gram-Schmidt正交化法
    • 行列式及其性质
    • 行列式公式和代数余子式
    • 克拉默法则、逆矩阵、体积
    • 特征值和特征向量
    • 对角化和$A$的幂
    • 微分方程
    • 马尔科夫矩阵、傅里叶级数
    • 对称矩阵及正定性
    • 对称矩阵及正定性
    • 复数矩阵和快速傅里叶变换
    • 正定矩阵和最小值
    • 相似矩阵和若尔当形
    • 奇异值分解
    • 线性变换及对应矩阵
    • 基变换和图像压缩
    • 左右逆和伪逆
  • 概率论与数理统计

  • 矩阵

  • 分布

  • 数学笔记
  • 线性代数
Geeks_Z
2024-05-01
目录

图和网络

图和网络

import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline

dg = nx.DiGraph()
dg.add_edges_from([(1,2), (2,3), (1,3), (1,4), (3,4)])
edge_labels = {(1, 2): 1, (1, 3): 3, (1, 4): 4, (2, 3): 2, (3, 4): 5}

pos = nx.spring_layout(dg)
nx.draw_networkx_edge_labels(dg,pos,edge_labels=edge_labels, font_size=16)
nx.draw_networkx_labels(dg, pos, font_size=20, font_color='w')
nx.draw(dg, pos, node_size=1500, node_color="gray")
1
2
3
4
5
6
7
8
9
10
11
12

png

该图由4个节点与5条边组成,

node1node2node3node4edge1−1100edge20−110edge3−1010edge4−1001edge500−11

我们可以建立5×4矩阵 A=[−11000−110−1010−100100−11]

观察前三行,易看出这三个行向量线性相关,也就是这三个向量可以形成回路(loop)。

现在,解Ax=0: Ax=[−11000−110−1010−100100−11][x1x2x3x4]。

展开得到: [x2−x1x3−x2x3−x1x4−x1x4−x3]=[00000]

引入矩阵的实际意义:将x=[x1x2x3x4]设为各节点电势(Potential at the Nodes)。

则式子中的诸如x2−x1的元素,可以看做该边上的电势差(Potential Differences)。

容易看出其中一个解x=[1111],即等电势情况,此时电势差为0。

化简A易得rank(A)=3,所以其零空间维数应为n−r=4−3=1,即[1111]就是其零空间的一组基。

其零空间的物理意义为,当电位相等时,不存在电势差,图中无电流。

当我们把图中节点4接地后,节点4上的电势为0,此时的 A=[−1100−11−101−10000−1],各列线性无关,rank(A)=3。

现在看看ATy=0(这是应用数学里最常用的式子):

ATy=0=[−10−1−101−10000110−100011][y1y2y3y4y5]=[0000],对于转置矩阵有dimN(AT)=m−r=5−3=2。

接着说上文提到的的电势差,矩阵C将电势差与电流联系起来,电流与电势差的关系服从欧姆定律:边上的电流值是电势差的倍数,这个倍数就是边的电导(conductance)即电阻(resistance)的倒数。

电势差欧姆定律矩阵各边上的电流电势差→欧姆定律矩阵C各边上的电流y1,y2,y3,y4,y5,而ATy=0的另一个名字叫做“基尔霍夫电流定律”(Kirchoff's Law, 简称KCL)。

再把图拿下来观察:

import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline

dg = nx.DiGraph()
dg.add_edges_from([(1,2), (2,3), (1,3), (1,4), (3,4)])
edge_labels = {(1, 2): 1, (1, 3): 3, (1, 4): 4, (2, 3): 2, (3, 4): 5}

pos = nx.spring_layout(dg)
nx.draw_networkx_edge_labels(dg,pos,edge_labels=edge_labels, font_size=16)
nx.draw_networkx_labels(dg, pos, font_size=20, font_color='w')
nx.draw(dg, pos, node_size=1500, node_color="gray")
1
2
3
4
5
6
7
8
9
10
11
12

png

将ATy=0中的方程列出来: {y1+y3+y4=0y1−y2=0y2+y3−y5=0y4−y5=0

对比看ATy=0的第一个方程,−y1−y3−y4=0,可以看出这个方程是关于节点1上的电流的,方程指出节点1上的电流和为零,基尔霍夫定律是一个平衡方程、守恒定律,它说明了流入等于流出,电荷不会在节点上累积。

对于AT,有上文得出其零空间的维数是2,则零空间的基应该有两个向量。

  • 现在假设y1=1,也就是令1安培的电流在边1上流动;
  • 由图看出y2也应该为1;
  • 再令y3=−1,也就是让1安培的电流流回节点1;
  • 令y4=y5=0;

得到一个符合KCL的向量[11−100],代回方程组发现此向量即为一个解,这个解发生在节点1,2,3组成的回路中,该解即为零空间的一个基。

根据上一个基的经验,可以利用1,3,4组成的节点求另一个基:

  • 令y1=y2=0;
  • 令y3=1;
  • 由图得y5=1;
  • 令y4=−1;

得到令一个符合KCL的向量[001−11],代回方程可知此为另一个解。

则N(AT)的一组基为[11−100][001−11]。

看图,利用节点1,2,3,4组成的大回路(即边1,2,5,4):

  • 令y3=0;
  • 令y1=1;
  • 则由图得y2=1,y5=1,y4=−1;

得到符合KCL的向量[110−11],易看出此向量为求得的两个基之和。

接下来观察A的行空间,即AT的列空间,方便起见我们直接计算 AT=[−10−1−101−10000110−100011] 的列空间。

易从基的第一个向量看出前三列AT的线性相关,则AT的主列为第1,2,4列,对应在图中就是边1,2,4,可以发现这三条边没有组成回路,则在这里可以说线性无关等价于没有回路。由4个节点与3条边组成的图没有回路,就表明AT的对应列向量线性无关,也就是节点数减一(rank=nodes−1)条边线性无关。另外,没有回路的图也叫作树(Tree)。

再看左零空间的维数公式:dimN(AT)=m−r,左零空间的维数就是相互无关的回路的数量,于是得到loops=edges−(nodes−1),整理得:

nodes−edges+loops=1

此等式对任何图均有效,任何图都有此拓扑性质,这就是著名的欧拉公式(Euler's Formula)。零维(节点)一维(边)二维(回路)零维(节点)−一维(边)+二维(回路)=1便于记忆。

总结:

  • 将电势记为e,则在引入电势的第一步中,有e=Ax;
  • 电势差导致电流产生,y=Ce;
  • 电流满足基尔霍夫定律方程,ATy=0;

这些是在无电源情况下的方程。

电源可以通过:在边上加电池(电压源),或在节点上加外部电流 两种方式接入。

如果在边上加电池,会体现在e=Ax中;如果在节点上加电流,会体现在ATy=f中,f向量就是外部电流。

将以上三个等式连起来得到ATCAx=f。另外,最后一个方程是一个平衡方程,还需要注意的是,方程仅描述平衡状态,方程并不考虑时间。最后,ATA是一个对称矩阵。

上次更新: 2025/06/25, 11:25:50
矩阵空间、秩1矩阵和小世界图
正交向量与子空间

← 矩阵空间、秩1矩阵和小世界图 正交向量与子空间→

最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式