#include
#include
#include
float A[4][5]=
{{1,-1, 2,-1, -8},
{2,-2, 3,-3,-20},
{1, 1, 1, 0, -2},
{1,-1, 4, 3, 4}};
/*
float A[4][5]=
{{1, 1, 1, 1, 6 },
{2, 2, 1, 3,12},
{1, 1, 2, 1, 8},
{1, 1, 4, 3, 4}};
*/
float x[4];
float cte,m;
int n=4;
int i,j,k,p;
void imprimeMatriz();
void intercambiarEcuaciones(int ori, int des);
void reducirEcuacion(float m,int j,int i);
int entero_mas_peq(int i);
int main(){
printf("\n Matriz ampliada \n");
imprimeMatriz();
for(i=0;i
p = entero_mas_peq(i);
if(p!=i){
intercambiarEcuaciones(p,i);
imprimeMatriz();
}
for(j=i+1;j
m = A[j][i]/A[i][i];
reducirEcuacion(m,j,i);
imprimeMatriz();
//}
}
}// for para i
if(A[n-1][n-1]==0){
printf("No existe solucion unica ");
getch();
exit(0);
}
x[n-1]=A[n-1][n]/A[n-1][n-1];
printf("x%d = %5.2f / %5.2f = %5.2f\n\n",n-1,A[n-1][n],A[n-1][n-1],x[n-1]);
for(i=n-2;i>=0;i--){
cte=0;
printf("x%d = (%5.2f",i,A[i][n]);
for(j=i+1;j
printf(" -(%.2f) * x%d",A[i][j],j);
}
x[i]=(A[i][n]-cte)/A[i][i];
printf(" )/%5.2f = %5.2f\n\n",A[i][i],x[i]);
}
for(i=0;i
}
getch();
return 0;
}
int entero_mas_peq(int i){
int cont;
int p;
p = i;
for(cont=0;cont < n;cont++){
if(!( i <= p && p < n && A[p][i] != 0)){
p++;
if(p==n){
printf("No existe solucion unica ");
getch();
exit(0);
}
}
}
return p;
}
/************************************************************************
*
*
*
*************************************************************************/
void intercambiarEcuaciones(int ori, int des){
int cont,tmp;
for(cont=0 ; cont <= n ; cont++){
tmp = A[des][cont];
A[des][cont] = A[ori][cont];
A[ori][cont] = tmp;
}
printf("(E%d) <-> (E%d) \n",ori,des);
}
void reducirEcuacion(float m,int j,int i){
int cont;
for(cont=0;cont <= n ;cont++){
A[j][cont] = A[j][cont]-m*A[i][cont];
}
printf("(E%d - %4.2f * E%d) <-> (E%d) \n",j,m,i,j);
}
void imprimeMatriz(){
int r,c;
printf("\n");
for(r=0;r < n;r++){
printf("\t E%d : ",r);
for(c=0 ;c <=n ; c++){
printf("%10.2f",A[r][c]);
}
printf("\n");
}
printf("\n");
}
No hay comentarios:
Publicar un comentario