#include #include int Lee_Datos(float *tole, int *ciclos, float a[][10], float x[3]); int Checa_Error(float *Tolera, float x[3], float ant[3], int n); void Imprime_Sistema(int n, float a[][10]); int main() { int N; float A[10][10]; float X[3]; float Ant[3]; float Sum; int k,j,i; int Ciclos = 0; float Tole = 0.0; int Cont; int Flag; clrscr(); printf("\n METODO DE GAUSS-SEIDEL"); printf("\n"); N=Lee_Datos(&Tole,&Ciclos,A,X); Imprime_Sistema(N,A); printf("\n Aproximaciones Realizadas"); printf("\n X1 X2 X3"); printf("\n"); Cont = 0; Flag = 1; while ( Flag && Cont < Ciclos) { Cont += 1; printf("%3d",Cont); for (i=0; i < N; i++) { Sum = 0; for (j=0; j < N; j++) { if ( i != j) Sum += A[i][j]*X[j]; } Ant[i] = X[i]; X[i] = (A[i][N]-Sum)/A[i][i]; printf("%10.4f",X[i]); } printf("\n"); Flag = Checa_Error(&Tole, X, Ant, N); } printf(" ....... Solucion Aproximada"); getch(); } int Lee_Datos(float *tole, int *ciclos, float a[][10], float x[3]) { int n; int k, Numero; float Tolera,temp; printf(" Numero de Ecuaciones ="); scanf("%d",&n); for (k =0; k < n; k++) { printf(" Dar el Valor inicial de X[%d] -> ",k); scanf("%f",&temp); x[k]=temp; } printf(" Cual es el error Permitido ->"); scanf("%f",tole); printf(" Numero de ciclos maximos ->"); scanf("%d",ciclos); printf("\n Sistema de Ecuaciones Lineales:"); printf("\n--------------------------------"); a[0][0] = 3; a[0][1]= -1; a[0][2] = -1; a[0][3]= 1; a[1][0] = -1; a[1][1]= 3; a[1][2] = -1; a[1][3]= 0; a[2][0] = -1; a[2][1]= -1; a[2][2] = 3; a[2][3]= 2; printf("\n"); return n; } void Imprime_Sistema(int n, float a[][10]) { int k, j; for (k=0; k < n; k++) { for (j=0; j < n+1; j++) { if (j == n) printf(" = %10.4f ",a[k][n]); else printf(" %10.4f X%d",a[k][j],j+1); } printf("\n"); } printf("\n"); } int Checa_Error(float *Tolera, float x[3], float ant[3], int n) { int k; float Error; for (k=0; k < n; k++) { Error = fabs((x[k]-ant[k])/x[k]); if (Error > *Tolera) return 1; } return 0; }