高斯消元法是一种求解线性方程组的方法,其基本思想是通过消元法将方程组化为上三角矩阵,然后通过回代法求解。

具体步骤如下:

  1. 选择主元(部分主元法)
    • 在每一列中选择当前及以下行中绝对值最大的元素作为主元
    • 将包含主元的行与当前行交换位置
  2. 消元过程
    • 将当前行以下的所有行进行消元运算
    • 使用公式:当前行 = 当前行 - (消元系数 × 主元所在行)
    • 消元系数 = 待消元元素 / 主元
  3. 回代求解
    • 从最后一个方程开始,依次求解每个未知数

标准代码如下

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