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 #用于对比矩阵A中每一个元素是否与矩阵A的n-1次方相同 i = 0 while True: i += 1 if i == 1: A = np.dot(A, A) #进行点乘 elif (A != B).any(): #判断矩阵A中每个元素是否与矩阵A的n-1次方相同 B = A #记录A的n-1次方 A = np.dot(A, A) else: print('循环次数:', i, ",即:第", i - 1, '次', '与第', i, '次相等') print('------------可达矩阵为------------\n', A+0) break
时间: 2024-04-02 10:35:07 浏览: 161
这段代码是使用 Python 语言编写的,实现了计算一个布尔矩阵的可达矩阵的功能。具体来说,先将输入的二维数组转换为布尔矩阵,然后通过进行点乘的方法计算出可达矩阵,直到计算出的矩阵与上一次计算的矩阵相同为止。最后输出可达矩阵。其中变量名的含义如下:
- hangNum:矩阵的行数
- lieNum:矩阵的列数
- newbiao:输入的二维数组
- bljz_arr_empty:用于存储转换后的布尔矩阵
- bljz:转换后的布尔矩阵
- A:记录 bljz 的一次方
- B:用于对比矩阵 A 中每一个元素是否与矩阵 A 的 n-1 次方相同
- i:循环次数
相关问题
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
这段代码的功能是计算一个二维数组的可达矩阵。具体实现过程如下:
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:循环次数
阅读全文