方程组如下:
求解上述方程,我们可以使用高斯消元法进行求解。
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.]