1 #encoding=utf-8 2 import numpy as np 3 # 输入数据 4 # a用来记录x的系数 5 a=[[0.0,2.0,3.0],[4.0,10000.0,7.0],[2.0,1.0,6.0]] 6 # b用来记录 y 7 b=[8.0,-3.0,5.0] 8 # n用来记录方程的个数 9 n=len(b) 10 # 定义x 11 x=[0.0 for p in range(n)] 12 #求上矩阵 13 for k in range(0,n-1): 14 for i in range(k+1,n): 15 # 寻找最大主元 16 # 设置最大主元默认值 17 p=k 18 # 将次元系数设为1比较主元大小,则只需将主元除以次元去绝对值便可取得缩放后的主元 19 big = abs(a[k][k]/a[k][k+1]) 20 for ii in range(k+1,n): 21 # 求缩放后的次元 22 dummy=abs(a[ii][k]/a[ii][k+1]) 23 #比较主元大小,取最大主元的下标 24 if dummy>big : 25 big = dummy 26 p=ii 27 # 交换主元 28 if(p!=k): 29 for jj in range(k,n): 30 dummy=a[p][jj] 31 a[p][jj]=a[k][jj] 32 a[k][jj]=dummy 33 dummy=b[p] 34 b[p]=b[k] 35 b[k]=dummy 36 37 38 # k表示两行元素之间的倍数 39 f=a[i][k]/a[k][k] 40 # 41 for j in range(k,n): 42 a[i][j]=a[i][j]-f*a[k][j] 43 b[i]=b[i]-f*b[k] 44 #求x的值 45 x[n-1]=b[n-1]/a[n-1][n-1] 46 # x.insert(-1,b[n-1]/a[n-1][n-1]) 47 for i in range(n-2,-1,-1): 48 sum=b[i] 49 for j in range(i+1,n): 50 sum=sum-a[i][j]*x[j] 51 xi=sum/a[i][i] 52 x[i]=xi 53 # x.insert(-1,xi) 54 for xi in x: 55 print xi;