#include <iostream.h>#define DIM 200#include <stdio.h>#include <stdlib.h>#include <math.h>#ifndef EPSILON#define EPSILON 0.000000001#endifint gelim( int process, double A[DIM][DIM], double xx[DIM] ){int k,i,j;if( process == 1 ) printf("The process of elimination\n");/* elimination step */for(k=0;k<DIM;k++) { if( fabs(A[k][k]) < EPSILON ) return(1); for(i=k+1;i<DIM;i++) { A[i][k]=A[i][k]/A[k][k]; for(j=k+1;j<DIM;j++) A[i][j]=A[i][j]-A[i][k]*A[k][j]; xx[i]=xx[i]-A[i][k]*xx[k]; } if(process == 1 ) { for(i=0;i<DIM;i++) { for(j=0;j<DIM;j++) printf("%10.6f",A[i][j]); printf(" | %10.6f\n",xx[i]); } printf("\n"); } }/* backward step */xx[DIM-1]=xx[DIM-1]/A[DIM-1][DIM-1];for(i=DIM-2;i>=0;i--) { for(j=i+1;j<DIM;j++) xx[i]=xx[i]-A[i][j]*xx[j]; xx[i]=xx[i]/A[i][i]; }return(0);}int main(){ float a[4][3]={0,2,1,3,1,0,1,3,2,1,5,0}; float b[4]={40,100,100,80}; gelim(0,a,b); for(i=0;i<4;i++) cout<<b[i]<<endl;}

评论