高斯消元法是一种求解线性方程组的方法,其基本思想是通过消元法将方程组化为上三角矩阵,然后通过回代法求解。
具体步骤如下:
- 选择主元(部分主元法)
- 在每一列中选择当前及以下行中绝对值最大的元素作为主元
- 将包含主元的行与当前行交换位置
- 消元过程
- 将当前行以下的所有行进行消元运算
- 使用公式:当前行 = 当前行 - (消元系数 × 主元所在行)
- 消元系数 = 待消元元素 / 主元
- 回代求解
- 从最后一个方程开始,依次求解每个未知数
标准代码如下
def partial_pivoting(A_aug, row_num, col_num):
rows, cols = A_aug.shape
max_row = row_num
max_val = abs(A_aug[row_num, col_num])
for i in range(row_num, rows):
current_val = abs(A_aug[i, col_num])
if current_val > max_val:
max_val = current_val
max_row = i
if max_row != row_num:
A_aug[[row_num, max_row]] = A_aug[[max_row, row_num]]
return A_aug
def gaussian_elimination(A, b):
rows, cols = A.shape
A_aug = np.hstack((A, b.reshape(-1, 1)))
for i in range(rows-1):
A_aug = partial_pivoting(A_aug, i, i)
for j in range(i+1, rows):
A_aug[j, i:] -= (A_aug[j, i] / A_aug[i, i]) * A_aug[i, i:]
x = np.zeros_like(b, dtype=float)
for i in range(rows-1, -1, -1):
x[i] = (A_aug[i, -1] - np.dot(A_aug[i, i+1:cols], x[i+1:])) / A_aug[i, i]
return x