上一集,介绍了小号想借助VibeCoding,学习一下线性代数和图论的内容。小号向AI讨教。AI也很知趣,一来二去就进入了正题:以可视化的方式展现线性代数(行列式、矩阵)与图(graph)之间的关系,并且给出了Python代码。(学Python5️⃣0️⃣ 实战VibeCoding+人工debug)
上一集还说到,AI给出的代码似乎有个小bug,小号依据自己的理解,做了一些修改,然后代码就跑通了,而且得到了预期的结果。

代码跑通了,心里很有些小激动。但是小号也知道,说代码“跑通了”,其实只是“跑起来了”。就是说,看似“跑通”了,但结果不一定正确。虽然“可视化”的目的看似已经实现了,但其中一定还有些不足之处。
还记得小号曾经说过,在代码调试中遇到错误,一般有以下几步方面可以逐项尝试:


import matplotlibmatplotlib.use('TkAgg') # 强制使用 Tkinter 图形界面后端import numpy as npimport networkx as nximport matplotlib.pyplot as plt# 中文字体设置 - 放在所有绘图代码之前plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'SimSun']plt.rcParams['axes.unicode_minus'] = FalseA = np.array([[0.5, 1.0, 0.0],[0.2, 0.0, 0.8],[0.0, 1.8, 0.0]])# 1. 创建有向图G = nx.DiGraph()# 2. 添加节点(3个)G.add_nodes_from([0, 1, 2])# 3. 遍历矩阵添加加权边for i in range(A.shape[0]):for j in range(A.shape[1]):if A[i][j] != 0:G.add_edge(i, j, weight=A[i][j])# 4. 打印所有边看看for u, v, data in G.edges(data=True):print(f"{u} -> {v} (权重: {data['weight']})")# 5. 绘制图形(可选)fig, ax = plt.subplots(figsize=(6, 6))pos = nx.spring_layout(G) # 布局labels = nx.get_edge_attributes(G, 'weight')nx.draw(G, pos, with_labels=True, node_color='lightblue',node_size=500, arrowsize=20)nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)#plt.title("Visualization of 3x3 Adjacency Matrix as a Directed Graph")plt.title("3节点有向图\n3x3 有向图 邻接矩阵 可视化")plt.show()

A = np.array([ [0.5, 1.0, 0.0], [0.2, 0.0, 0.8], [0.0, 1.8, 0.0]])如果有这样一个3×3行列式,想把它转化成图(graph)。应该怎样做?
好了,今天就分享到这里吧,祝大家周末愉快!
VibeCoding的话题有可能比较费脑子,大家也可以找一找前后两份代码的差异。(提示:重点在19~30行之间)欢迎大家到评论区交流。

备注:小号最近把自己用的PyCharm升级到了2026最新版(免费),操作更方便了,当然也有些小变化。小号也准备写一篇升级安装PyCharm2026最新版的实操,欢迎大家关注。



