bljz_arr_empty = np.empty([hangNum, lieNum]) for i in range(hangNum): bljz_arr_empty[i] = array(newbiao[i]) bljz = bljz_arr_empty > 0.5 A = bljz # 记录 bljz的一次方 B = bljz # 记录 bljz的一次方 i = 0 while True: i += 1 if i == 1: A = np.dot(A, A) elif (A != B).any(): B = A A = np.dot(A, A) else: print('循环次数:', i, ",即:第", i - 1, '次', '与第', i, '次相等') print('------------可达矩阵为------------\n', A+0) break
时间: 2024-02-14 13:21:49 浏览: 70
这段代码的功能是计算一个二维数组的可达矩阵。具体实现过程如下:
1. 创建一个空的二维数组 bljz_arr_empty,并将输入的二维数组 newbiao 中的每个元素转换为布尔值,存储在 bljz_arr_empty 中。
2. 将 bljz_arr_empty 赋值给变量 A 和 B,用于记录 bljz_arr_empty 的一次方。
3. 进入一个 while 循环,每次循环将 A 的平方赋值给 A,直到 A 的 n 次方等于 A 的 n-1 次方为止,此时输出 A,即为可达矩阵。
4. 如果 A 的平方与上一次的 A 不相等,则将 A 的平方赋值给 B,并继续计算 A 的平方。
5. 如果 A 的平方与上一次的 A 相等,则说明 A 的 n 次方已经计算完成,输出可达矩阵 A 。
其中,变量的含义如下:
- hangNum:输入的二维数组 newbiao 的行数
- lieNum:输入的二维数组 newbiao 的列数
- newbiao:输入的二维数组
- bljz_arr_empty:转换后的布尔矩阵
- bljz:转换后的布尔矩阵
- A:记录 bljz 的一次方
- B:用于对比矩阵 A 中每一个元素是否与矩阵 A 的 n-1 次方相同
- i:循环次数
阅读全文