Python使用for循环递归更新R矩阵并打印每轮迭代结果的实现方法
实现代码
你已经完成了初始化和归一化转置邻接矩阵的函数定义,在此基础上补充对应循环逻辑即可:
固定迭代轮次版本
适合已知需要迭代固定次数的场景,以下是迭代3轮的示例,和你给出的预期输出完全匹配:
# 提前计算固定的归一化转置邻接矩阵,避免循环中重复计算提升效率 M = normalized_Adj_matrix_transpose(A) # 设置迭代轮次 iter_num = 3 for i in range(iter_num): R = M.dot(R) print(f"iteration {i+1}: {R.reshape((1,4))}")
自动收敛停止版本
如果需要迭代到R不再明显变化时自动停止,可以加入收敛判断逻辑:
import numpy as np M = normalized_Adj_matrix_transpose(A) # 收敛阈值,可根据自身精度需求调整大小 threshold = 1e-8 prev_R = R.copy() iter_count = 0 while True: iter_count += 1 R = M.dot(R) print(f"iteration {iter_count}: {R.reshape((1,4))}") # 用二范数判断两次迭代的差异 if np.linalg.norm(R - prev_R) < threshold: print(f"已达到收敛条件,总迭代轮次:{iter_count}") break prev_R = R.copy()
内容的提问来源于stack exchange,提问作者DaCard
相关产品推荐
相关产品推荐

