python列主元消去法具体例子代码
时间: 2023-10-12 12:21:45 浏览: 98
数值计算方法 MATLAB实验 实验报告 01 列主元消去法 含全部源代码.pdf
5星 · 资源好评率100%
下面是列主元消去法的Python代码:
```python
import numpy as np
# 定义一个矩阵
A = np.array([[2, 1, -1], [4, 5, -3], [-2, 5, -2]])
# 定义向量b
b = np.array([1, -9, -3])
n = len(b)
# 高斯消元法
for i in range(n):
# 首先找到第i列的主元(即该列中绝对值最大的元素)
max_idx = abs(A[i:, i]).argmax() + i
# 如果该列中绝对值最大的元素为0,则矩阵不可逆,无解
if A[max_idx, i] == 0:
raise ValueError("矩阵不可逆,无解")
# 将第i行与第max_idx行交换,保证主元在对角线上
A[[i, max_idx]] = A[[max_idx, i]]
b[[i, max_idx]] = b[[max_idx, i]]
# 将第i列以下的元素全部消为0
for j in range(i + 1, n):
ratio = A[j, i] / A[i, i]
A[j, i:] -= ratio * A[i, i:]
b[j] -= ratio * b[i]
# 回代
x = np.zeros(n)
for i in range(n - 1, -1, -1):
x[i] = (b[i] - np.dot(A[i, i+1:], x[i+1:])) / A[i, i]
print('解为', x)
```
注意:本代码仅作为例子,实际应用中可能需要进行优化,例如加入主元素的绝对值小于某个阈值时的容错机制。
阅读全文