def gauss_jordan(matrix): n = len(matrix) for i in range(n): # 选取列主元 max_row = i for j in range(i + 1, n): if abs(matrix[j][i]) > abs(matrix[max_row][i]): max_row = j matrix[i], matrix[max_row] = matrix[max_row], matrix[i] # 将主元归一 scalar = matrix[i][i] for j in range(i, n + 1): matrix[i][j] /= scalar # 消元 for j in range(n): if i != j: scalar = matrix[j][i] for k in range(i, n + 1): matrix[j][k] -= scalar * matrix[i][k] return matrix matrix = [[1, 2, 1, -2], [2, 5, 3, -2], [-2, -2, 3, 5], [1, 3, 2, 3]] result = gauss_jordan(matrix) print(result)
时间: 2023-06-16 07:03:55 浏览: 121
xianxingfangchengzu.rar_GAUSS ELIMINATION_Gauss-Jordan_Jordan_ma
这是一个高斯-约旦消元法的 Python 代码实现。它可以用于求解线性方程组,将增广矩阵化为行简化阶梯形矩阵,从而得到方程组的解。
代码首先对矩阵进行列主元选取,然后将主元归一,最后通过消元,将矩阵化为行简化阶梯形矩阵。
在这个例子中,矩阵为:
```
1 2 1 -2
2 5 3 -2
-2 -2 3 5
1 3 2 3
```
增广矩阵为:
```
1 2 1 -2 | -1
2 5 3 -2 | -4
-2 -2 3 5 | 21
1 3 2 3 | 4
```
运行代码后,输出结果为:
```
[[1.0, 0.0, 0.0, 0.0, -3.0], [0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 0.0, 1.0, 0.0, 4.0], [0.0, 0.0, 0.0, 1.0, 2.0]]
```
这表示方程组的解为 x1=-3, x2=1, x3=4, x4=2。
阅读全文