資源描述:
《gauss列主元法的c語(yǔ)言編程實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Gauss列主元法的C語(yǔ)言編程實(shí)現(xiàn)用高斯列主元消去法解線性方程組Ax=b。編程思路:在消元之前,在剩余的元素中選取絕對(duì)值最大的為主元,并將其換到主元的位置,以防止出現(xiàn)小數(shù)被大數(shù)吃掉的現(xiàn)象。然后再將矩陣化為三角矩陣,按照高斯消去法進(jìn)行計(jì)算,最后進(jìn)行回代求解。高斯列主元法程序代碼如下:#include#includevoidmain(){floatarray[4][5],x,s;//定義二維數(shù)組和浮點(diǎn)變量//inti,j,m,k;//定義整型變量//printf("pleaseinputcoefficientmatrixar
2、ray:");//輸入增廣矩陣array//for(i=0;i<4;i++){for(j=0;j<5;j++){scanf("%f",&array[i][j]);//輸入一個(gè)4*5階矩陣//}printf("");}for(i=0;i<4;i++)//輸出輸入的矩陣//{for(j=0;j<5;j++){printf("%8.4f",array[i][j]);}printf("");}printf("");for(k=0;k<=3;k++)//在相應(yīng)的列中選主元//{m=k;for(i=k+1;i<=3;i++){x=
3、fabs(array[m][k]);if(fabs(array[i][k]>x))m=i;}printf("%d",m);if(array[m][k]==0){printf("ERROR");return;}else//兩行進(jìn)行比較交換兩行//{for(j=k;j<=4;j++){x=array[k][j];array[k][j]=array[m][j];array[m][j]=x;}for(i=0;i<4;i++){for(j=0;j<5;j++){printf("%8.4f",array[i][j]);}printf("");}p
4、rintf("");for(i=k+1;i<=3;i++){s=array[i][k]/array[k][k];//消元過(guò)程//for(j=0;j<=4;j++){array[i][j]=array[i][j]-s*array[k][j];}}}}for(i=0;i<4;i++)//輸出變換后的矩陣//{for(j=0;j<5;j++){printf("%8.4f",array[i][j]);}printf("");}array[3][4]=array[3][4]/array[3][3];//回代過(guò)程//for(i=2;i>=
5、0;i--){x=0;for(j=i+1;j<4;j++){x=x+array[i][j]*array[j][4];}array[i][4]=(array[i][4]-x)/array[i][i];}printf("x1=%f",array[0][4]);//輸出結(jié)果//printf("");printf("x2=%f",array[1][4]);printf("");printf("x3=%f",array[2][4]);printf("");printf("x4=%f",array[3][4]);printf("");}驗(yàn)證程序的正確
6、性,輸入已知解的方程增廣矩陣,運(yùn)行結(jié)果與方程解一致。圖為輸入的增廣矩陣圖為運(yùn)行結(jié)果方程的解圖為隨機(jī)輸入的增廣矩陣運(yùn)行的結(jié)果