You need to enable JavaScript to run this app. Python for循环计算仅返回单值问题排查与Matplotlib绘图实现
优惠活动
大模型
产品
解决方案
定价
更多

Python for循环计算仅返回单值问题排查与Matplotlib绘图实现

现有代码的核心问题
  • 函数名不匹配:定义的函数名是Dialer_Problems,循环内调用时漏写了末尾的s,会直接触发NameError运行报错
  • 函数逻辑冗余失效:函数内部写了无关的for S in range(0,9)循环,没有使用传入的参数S,无论输入什么N值,返回结果完全固定,是最终只输出单个结果的核心原因
  • 邻接矩阵运算错误:计算图上N步可达路径数需要用矩阵幂运算,原代码用numpy逐元素幂的写法,得到的结果完全不符合图论路径计数规则
  • 语法拼接错误:Dialer_Problems(5,10)t1=time.time()两行代码粘连,且t1=time.time漏写括号,无法正确获取时间戳
  • 结果无持久存储:循环内每次计算的结果直接被下一轮覆盖,没有写入独立容器,自然无法累计得到200组连续序列
批量收集200组计算结果的修正实现
import numpy as np
import time
import matplotlib.pyplot as plt

# 初始化图邻接矩阵
A = np.array([[0,0,0,0,0,0,0,0,1,0],
              [0,0,1,0,1,0,0,0,0,0],
              [0,1,0,1,0,1,0,0,0,0],
              [0,0,1,0,0,0,1,0,0,0],
              [0,1,0,0,0,1,0,1,0,0],
              [0,0,1,0,1,0,1,0,1,0],
              [0,0,0,1,0,1,0,0,0,1],
              [0,0,0,0,1,0,0,0,1,0],
              [1,0,0,0,0,1,0,1,0,1],
              [0,0,0,0,0,0,1,0,1,0]])

omega_1 = np.array([1,1,1,1,1,1,1,1,1,1])

def Dialer_Problems(start_node, step_n):
    # 修正:去掉冗余循环,用正确的矩阵幂计算N步路径矩阵
    path_matrix = np.linalg.matrix_power(A, step_n - 1)
    omega = omega_1 @ path_matrix
    return omega

# 初始化空列表存储每一轮的计算结果
result_list = []
# 生成N取值序列,范围1到200
n_values = list(range(1, 201))
t1 = time.time()
for n in n_values:
    current_res = Dialer_Problems(start_node=5, step_n=n)
    # 这里可根据分析需求选择存储值:可存全量10维节点结果,也可提取单值(比如总路径数、特定节点的路径计数)
    # 示例:提取全节点总路径数作为绘图用标量
    total_path = current_res.sum()
    result_list.append(total_path)
t2 = time.time()
print(f"200组计算总耗时:{t2 - t1:.4f} 秒")
print(f"累计收集结果数量:{len(result_list)} 组")
适配场景的Matplotlib绘图实现

配合存储的连续结果序列,直接配对x轴(N值)和y轴(对应计算值)即可生成趋势图,完整绘图代码如下:

# 解决Matplotlib中文显示、负号显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10, 6))
plt.plot(n_values, result_list, linewidth=1.5, marker='o', markersize=2, label='不同步长N对应的总路径数')
plt.xlabel('步长N')
plt.ylabel('计算结果(合法路径总数)')
plt.title('拨号问题计算结果随N的变化趋势')
plt.grid(alpha=0.3, linestyle='--')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 02:45:03