#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;
}
               (
geocities.com/siliconvalley/pines/7894)                   (
geocities.com/siliconvalley/pines)                   (
geocities.com/siliconvalley)