[算法] 高斯消元法(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代码

原文地址:https://www.cnblogs.com/cxc1357/p/10344356.html