美文网首页
Gaussian elimination 高斯消元法 pytho

Gaussian elimination 高斯消元法 pytho

作者: 东东是个鬼 | 来源:发表于2018-12-02 12:25 被阅读26次

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

    这里是我实现的一种简单的未经优化过的高斯消元法的 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 高斯消元法 pytho

          本文链接:https://www.haomeiwen.com/subject/nvxjcqtx.html