Evento Docente Universida del Mar

Metodos de solucion de sistemas de ecuaciones

/*
Descripcion : Multiplicacion dos Matrices, resolviendo sistemas de ecuaciones
Fecha : Martes 08 de Noviembre del 2005
Marteria : Algebra Lineal
Catedratico : Manuel Alejandro Valdez Marrero
*/

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define TamMatriz 10

int Row,Column;

void Menu_Principal(void){
gotoxy(10,5);printf("Menu");
gotoxy(5,6);printf("[1]--->Captura Sistema ");
gotoxy(5,7);printf("[2]--->Metodo de Solucion ");
gotoxy(5,8);printf("[3]--->Mostrar Sistema ");
gotoxy(5,9);printf("[4]--->Salir ");
gotoxy(5,610);printf("Elige una Opcion ");
}

void Menu_Operaciones_Sistemas(void){
gotoxy(5,11);printf("[1]--->Metodo de Gauss-Jordan ");
gotoxy(5,12);printf("[2]--->Regla de Cramer ");
gotoxy(5,13);printf("[3]--->Metodo de la Inversa ");
gotoxy(5,14);printf("[0]--->Salir ");
gotoxy(5,15);printf("Elige una Opcion ");
}



void Metodo_Gauss_Jordan(float Matriz1[TamMatriz][TamMatriz],int* Row1,int *Column1){
int i,ren=0,j,ban=0,aux,k;
for(i=0;i<(*Row1);i++)//es el pivote
{
ren=i+1;/*para k a la hora de comparar sea con el remgoln siguent*/
while(Matriz1[i][i]==0 )
{
if(ren<(*Row1))
{
if(Matriz1[ren][i]!=0) /*if(!(afMatrizTem1[ren][i]))*/
{/*INTERCAMBIO*/
for(j=0;j<(*Column1)+1;j++){
aux= Matriz1[i][j];
Matriz1[i][j] = Matriz1[ren][j];
Matriz1[ren][j]=aux;
}
}/*cirra el segundo if*/
ren++;
}/*cierra primer el if*/
else
break;

}/*ciere el while*/

aux = Matriz1[i][i];/*PARA HACER UNOS*/
for(j=0; j<(*Column1)+1&&aux!=0; j++)
Matriz1[i][j] = Matriz1[i][j] / aux;/*cierra for*/

for(j=0; j<(*Column1)+1; j++)/*PARA HACER CEROS*/
{
if(i != j)
{
aux=Matriz1[j][i] * (-1);
for(k=0; k<(*Column1)+1&&aux!=0; k++)
Matriz1[j][k] += Matriz1[i][k] * aux;/*cierra for*/
}/*cierra if*/
}/*cierra for*/

}//cierra el for

if(*Column1>*Row1){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}

if(*Row1>*Column1){//Ecuaciones>Incognitas

if(Matriz1[(*Column1)-1][(*Column1)-1]==0 && Matriz1[(*Column1)-1][(*Column1)]!=0 ){
printf("\nSistema Sin Soluciones");getch();ban=1;}

if(!Matriz1[(*Column1)-1][(*Column1)-1]&&!Matriz1[(*Column1)-1][(*Column1)]){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}

if(*Row1==*Column1&&ban==0)
for(i=0;i<(*Row1);i++)
for(j=0;j<(*Column1);j++)
if(i==j)
printf("\nX%d --> %.2f ",i+1,Matriz1[i][*Column1]);

}

if(*Column1==*Row1){
if(Matriz1[(*Row1)-1][(*Column1)-1]==0 && Matriz1[(*Row1)-1][(*Column1)]!=0 ){
printf("\nSistema Sin Soluciones");getch();ban=1;}

if(!Matriz1[(*Column1)-1][(*Row1)-1]&&!Matriz1[(*Column1)-1][(*Row1)]){
printf("\nSistema con Multiples Soluciones");getch();ban=2;}
if(*Row1==*Column1&&ban==0)
for(i=0;i<(*Row1);i++)
for(j=0;j<(*Column1);j++)
if(i==j)
printf("\nX%d --> %.2f ",i+1,Matriz1[i][*Column1]);
}

}


void main(void){
int Incognitas,Ecuaciones,i,j,con=0;
float MatrizS[TamMatriz][TamMatriz]={{0},{0}};
float VectorI[TamMatriz]={0};
char OpcionP,OpcionS;
do{
clrscr();
Menu_Principal();
OpcionP=getche();
switch(OpcionP){
case '1':clrscr();printf("\nDatos del Sistema de Ecuaciones ");
do{
printf("\n# Ecuaciones ");
scanf("%d",&Ecuaciones);
}while(Ecuaciones<1||Ecuaciones>10);
do{
printf("\n# Incognitas ");
scanf("%d",&Incognitas);
}while(Incognitas<1||Incognitas>10);
for(i=0;i for(j=0;j printf("Coeficiente X%d de la Ecuacion %d --> ",j+1,i+1);
scanf("%f",&MatrizS[i][j]);
}
printf("Termino Independiente de la Ecuacion %d --> ",i+1);
scanf("%f",&VectorI[i]);
}

break;
case '3':clrscr();
for(i=0;i for(j=0;j if(MatrizS[i][j]<0)
printf("%.2fX%d ",MatrizS[i][j],j+1);
else
if(MatrizS[i][j]>0&&j==0)
printf(" %.2fX%d ",MatrizS[i][j],j+1);
else
printf(" + %.2fX%d ",MatrizS[i][j],j+1);
}
printf(" = %f\n",VectorI[i]);
}
getch();
break;
case '2':do{
clrscr();Menu_Operaciones_Sistemas();getch();
OpcionS=getche();
switch(OpcionS){
case '1':for(i=0;i MatrizS[i][Incognitas]=VectorI[i];
if(!VectorI[i])
con++;//sistema Homog‚neo

}
Metodo_Gauss_Jordan(MatrizS,&Ecuaciones,&Incognitas);
getch();
break;
}
}while(OpcionS!='0');
break;

}

}while(OpcionP!='4');
getch();
}

Tags:

0 comentarios: