Practica 2
jos18019469621 de Abril de 2013
404 Palabras (2 Páginas)318 Visitas
/*metodo eliminacion gaussiana para matriz de 3x3 y arreglo de terminos independientes
hecho por huicho*/
#include <stdio.h>
//funcion que recibe el arreglo sistema por referencia por eso no va
// numero en el primer parentesis
void imprimirSistema(float arreglo[][3],float b[])
{
int i=0,j=0;
printf("\n\nSistema de Ecuaciones: \n\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
//si llega a la cuarta columna toma el elemento del arreglo b
if(j==3)
printf("\t%.2f ",b[i]);
else
printf("\t%.2f ",arreglo[i][j]);
}
printf("\n");
}
}
//funcion q hace 1 coef de diagonal principal
void normalizar(int renglon, float arreglo[][3], float b[])
{
int i=0;
float coeficientepivote=0;
coeficientepivote = arreglo[renglon][renglon];
for(i=0;i<4;i++)
{
if(i==3)
b[renglon] = b[renglon] / coeficientepivote;
else
arreglo[renglon][i] = arreglo[renglon][i] / coeficientepivote;
}
printf("\n*** Haciendo 1 el coeficiente en la diagonal de la ecuacion %d ***",renglon+1);
imprimirSistema(arreglo,b);
}
int main (int argc, char *argv[])
{
int i,j,k=0,renglon=0,c,d;
float sistema[3][3],b[1][3];
//arreglo con los terminos independientes
float renglonmodif[3]={0,0,0};
float b_modif=0;
float constante=0,x1=0,x2=0,x3=0;
FILE *ap, *ap1;
ap = fopen("matriz.txt", "r");
if(ap==NULL)
printf("ERROR: Archivo no encontrado");
else
{
printf("\n El archivo se abrio correctamente\n");
c=fgetc(ap);
for(i=0; i<3; i++)
{for(j=0; j<3;j++)
{ fscanf(ap,"%i",&sistema[i][j]);
printf(" %d ", sistema[i][j]);}
printf("\n");}
}
ap1=fopen("d.txt","r");
if(ap==NULL)
printf("ERROR: Archivo no encontrado");
else
{
printf("\n El archivo se abrio correctamente\n");
d=fgetc(ap1);
for(i=0; i<3; i++)
{for(j=0; j<1;j++)
{ fscanf(ap,"%i",&b[i][j]);
printf(" %d ", b[i][j]);}
printf("\n");}
}
imprimirSistema(sistema,b);
renglon = 0;
normalizar(renglon, sistema, b);
//tomando ecuacion 1 como renglon pivote y reduciendo hacia abajo
for(k=1;k<3;k++) //ciclo para recorrer renglones desde segunda ecuacion
{
//toma el coeficiente del elemento cero a partir de la segunda ecuación
//y lo multiplica por -1
constante = sistema[k][0]*(-1);
for(i=0;i<4;i++) //ciclo para recorrer columnas
{
//identifica la columna 4 q corresponde a arreglo b de indep
if(i==3)
{
b_modif = constante * b[0];
//se suman los independientes de los renglones de abajo
// con el independiente pivote
b[k] = b[k] + b_modif;
}
else
{
//el renglon pivote es multiplicado por la constante y se
// guarda en un arreglo unidimensional temporal
renglonmodif[i] = constante * sistema[0][i];
//el arreglo temporal es sumado a los siguientes renglones para
// reducirlos y dejar coeficientes 1 hacia abajo
sistema[k][i]= sistema[k][i] + renglonmodif[i];
}
}
imprimirSistema(sistema,b); //llama a funcion
...