高斯消元法是一种程序化的求解线性方程组的方法。是一种易于使用程序实现的方法。
这里是我实现的一种简单的未经优化过的高斯消元法的 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))
网友评论