python——高斯消元法解线性方程组

方程组如下:

求解上述方程,我们可以使用高斯消元法进行求解。

import numpy as np
def f(x,n):#高斯消元法
    jie=np.zeros(n*(n-1)).reshape(n-1,n);t=1;xj=np.ones(n-1)#定义参数
    jie1=np.zeros(n*(n-1)).reshape(n-1,n);jie1[:,:]=x[:,:];#这一步很重要,要不然会出现超大的BUG,耗时巨久。
    for i in range(n-1):#正迭代化为上三角矩阵
        jie[i,i:]=jie1[i,i:]/jie1[i,i];
        for j in range(i+1,n-1):
            jie1[j,:]=jie1[j,:]-jie1[j,i]*jie[i,:];
    for o in range(n-2,0,-1):#反迭代计算X值
         t+=1
         for q in range(n-t,0,-1):
            jie[q-1,-1]=jie[q-1,-1]-jie[o,-1]*jie[q-1,o]
            jie[q-1,o]=0
    for r in range(n-1):
        xj[r]=jie[r,-1]
    return xj
x=np.array([[10,-1,-2,2,4],[1,-10,2,-1,-14],[1,1,-5,2,-10],[1,-2,2,-1,2]])
x0=np.array([0,0,0,0,1])
n=5

最后的运行结果

print(高斯消元法,最终的解X_i(角标从小到大):{}.format(f(x,n)))



高斯消元法,最终的解X_i(角标从小到大):[1. 2. 3. 1.]

经验分享 程序员 微信小程序 职场和发展