數學上,高斯消元法(或譯:高斯消去法),是線性代數規劃中的乙個演算法,可用來為線性方程組求解。但其演算法十分複雜,不常用於加減消元法,求出矩陣的秩,以及求出可逆方陣的逆矩陣。不過,如果有過百萬條等式時,這個演算法會十分省時。一些極大的方程組通常會用迭代法以及花式消元來解決。當用於乙個矩陣時,高斯消元法會產生出乙個「行梯陣式」。高斯消元法可以用在電腦中來解決數千條等式及未知數。
高斯消元法的演算法複雜度是o(n3
);這就是說,如果係數矩陣的是n∗
n ,那麼高斯消元法所需要的計算量大約與n3
成比例。所以運用並行化的方法處理高斯消元法是一種可行的途徑。
**見下:
#include "mpi.h"
#include
#include
#include
int main(int argc,char *argv)
, ,,,
,,,,
,};
mpi_init(&argc,&argv);
mpi_comm_rank(mpi_comm_world,&self);
mpi_comm_size(mpi_comm_world,&size);
float *equivalent=(float*)malloc((size)*sizeof(float));
float *recv=(float*)malloc((size)*sizeof(float));
float *x=(float*)malloc((size)*sizeof(float));
float
b[10]=;
float
temp=0.0;
intmarked=0;
inti, j, k;
intflag=0;
//distribute
if(0==self)
for(j=1;j
} else
//pivot
for(i=0;i
marked=1;
} mpi_bcast(recv,size,mpi_float,i,mpi_comm_world);
if(0==marked)
} }
//backtracking
for (i=size-1; i>=0; i--)
x[i]=(b[i]-temp)/equivalent[i];
}mpi_bcast(x,size,mpi_float,i,mpi_comm_world);
mpi_barrier(mpi_comm_world);
}printf("the equivalent on %d is: %.2f %.2f %.2f ...\n",self,equivalent[0],equivalent[1],equivalent[2]);
mpi_barrier(mpi_comm_world);
if(size-1==self)
else}if
(flag)
if(0==self)
}putchar('\n');
free(recv);
free(equivalent);
free(x);
mpi_finalize();
return 0;
}
MPI 高斯消元
高斯消元 解方程組的預備工作 將矩陣化為上三角 不分主從執行緒 每個執行緒負責乙個方程 include mpi.h include include typedef struct md int main int argc,char argv mpi init argc,argv mpi comm ra...
高斯消元法(二) 高斯消元法原理
高斯消去法是一種常用的求解線性方程組的方法,通過逐次消元後,在回代求解,實際計算中常用的一種方法。順序消去法 將ax b按照從上至下 從左至右的順序化為上三角方程組,中間過程不對矩陣進行交換,主要步驟如下。step1 將第2行至第n行,每行分別與第一行做運算,消掉每行第乙個引數。公式如 形成如下圖所...
高斯消元法
寒假前,小導師給我們布置了三道程式設計題,其中有一道是利用高斯消元法解線性方程組的。在網上搜了些資料,自己照葫蘆畫瓢編出乙個簡單的高斯消元法 利用矩陣的初等行變換 高斯消元法解線性方程組 include include include define dim 10 double a dim 1 dim...