Gaussian elimination 高斯消元法 python实现

高斯消元法是一种程序化的求解线性方程组的方法。是一种易于使用程序实现的方法。

这里是我实现的一种简单的未经优化过的高斯消元法的 Python 实现

"""
step 0 : elimination  # 消元
step 1 : back substitution # 回代
"""

# step0 消元
def step0(matrix):
    row = matrix.shape[0]
    
    # 保证主元为一 或者主元所在行全为 0 
    for i in range(0, row):
        if not matrix[i, i]:
            for j in range(i + 1, row):
                if matrix[j, i]:
                    matrix[[i, j], :] = matrix[[j,i], :]
                    break
                
    # 开始消元
    for i in range(0, row - 1): # 以这些行的主元作为参照依次消除主元以下元素
        for j in range(i + 1, row):
            matrix[j, :] = matrix[j, :] - matrix[i, :]/matrix[i, i]*matrix[j,i]
          
    return matrix

# step1 回代 
def step1(matrix):
    row = matrix.shape[0]
    # 从倒数第二行开始消元
    for i in range(row - 2, -1, -1):
        for j in range(i + 1, row):
            matrix[i, :] = matrix[i, :] - matrix[j, :]/matrix[j, j]*matrix[i,j]
            
    return matrix

# 高斯消元法
def Gaussian(matrix):
    return step1(step0(matrix))

你可能感兴趣的:(Gaussian elimination 高斯消元法 python实现)