[算法] 高斯消元法(Python)
高斯消元法可用于求解n元1次方程组
伪代码:
def gauss():
for i = 1 to n-1:
for j = i+1 to n:
c = -a[j][i]/a[i][i]
for k = 1 to n:
a[j][k] += a[i][k]*c
b[j]+=b[i]*c
x[n]=b[n]/a[n][n]
for i = n-1 to 1:
for j = i+1 to n:
b[i]-=a[i][j]*x[j]
x[i]=b[i]/a[i][i]
Python代码:
a=[[2,1,1],[6,2,1],[-2,2,1]]
b=[1,-1,7]
n=len(a)
x=[0]*n
def gauss():
for i in range(0,n-1):
for j in range(i+1,n):
c = -a[j][i]/a[i][i]
for k in range(0,n):
a[j][k] += a[i][k]*c
b[j] += b[i]*c
x[n-1]=b[n-1]/a[n-1][n-1]
for i in range(n-2,-1,-1):
for j in range(i+1,n):
b[i] -= a[i][j]*x[j]
x[i] = b[i]/a[i][i]
gauss()
>> x
>> [-1.0,2.0,1.0]
数学表达式-->伪代码-->Python代码