根据问题的条件,我需要用高斯法得到逆矩阵。在这种情况下,需要将中间矩阵输出到控制台。
该方法的本质:我们用单位矩阵代替给定矩阵并变换行。脚本分为正向和反向。
我应用了以下逻辑:我们转换字符串,每次都将它们添加到一个空列表中bank_of_matrix。但是,循环生成六行,即两个矩阵。现在它们在我的变量中bank_of_matrix的一“串”行中。有必要将它们分开。通过柜台办理?但是,即使我计算了所需的行数,我如何进行截断以便将下一个“部分”行“写入”到另一个矩阵中?
代码:
import numpy as np
matrix_origin = np.array([[3.8, 6.7, -1.2],
[6.4, 1.3, -2.7],
[2.4, -4.5, 3.5]])
n = matrix_origin.shape[0]
matrix_ = np.hstack((matrix_origin, np.eye(n)))
bank_of_matrix = []
# nrow равен номеру строки
# row содержит саму строку матрицы
for nrow, row in enumerate(matrix_):
divider = row[nrow] # диагональный элемент
# делим на диагональный элемент:
row /= divider
bank_of_matrix.append(row)
# теперь вычитаем приведённую строку из всех нижележащих строк:
for lower_row in matrix_[nrow + 1:]:
factor = lower_row[nrow] # элемент строки в колонке nrow
lower_row -= factor * row # вычитаем, чтобы получить ноль в колонке nrow
bank_of_matrix.append(lower_row)
for i in bank_of_matrix:
print(i)
第二个问题:我试图在输出到控制台时用 0 和 1 切断左矩阵。但是,我收到一个错误。代码:
for i in bank_of_matrix[:, n:]:
print(i)
如果我正确地理解了问题以便有中间矩阵的输出,那么它将是这样的
第二个问题