for h in range(row - 1, i, -1): # 添加该列所有元素
Str.append(A[h][i])
Num = col - Str.index(next(filter(lambda x: x != 0, Str)))
A[Num - 1], A[i] = A[i], A[Num - 1] # 做行变换
消元运算
for j in range(i + 1, row, 1):
coeff = A[j][i] / A[i][i]
for k in range(i, col, 1):
A[j][k] = A[j][k] - coeff * A[i][k] # 系数矩阵消元
判断该方程组系数矩阵是否为非奇异矩阵
for i in range(row):
if A[i][i] == 0:
print(“Coefficient matrix is not a nonsingular matrix.”)
return ‘N’
print(“Coefficient matrix is a nonsingular matrix.”)
def GuassElimination(A, b):
row = len(A) # 系数矩阵行数
col = len(A[0]) # 系数矩阵列数
ε = 1E-5 # 定义一个小量
print(“coefficient matrix:”, A)
print(“Constant column:”, b)
控制第i步,高斯消元需要n-1步,A矩阵为n阶方阵
for i in range(row - 1):
if abs(A[i][i]) <= ε: # 若主元为一个小量,则采用列主消元
return None
消元运算
for j in range(i + 1, row, 1):
coeff = A[j][i] / A[i][i]
for k in range(i, col, 1):
A[j][k] = A[j][k] - coeff * A[i][k] # 系数矩阵消元
b[j] = b[j] - coeff * b[i] # 对应常数列消元
回代过程
x = [0] *