Algoritmia - revision eliminacion de gauss

 
Vista:

revision eliminacion de gauss

Publicado por ALFONSO (1 intervención) el 10/09/2007 22:55:29
si alguien puede tomarse la molestia de verificar este codigo se lo agradesco, tengo un error pero no se en que se gun yo el algoritmo deve funcionar correctamente:

1- se tirangula la matriz, y el producto de la diagonal principal es el determinante de la matriz a, lo de mas biene de regalo pa en contrar los valores de x:

importante: EL CODIGO ESTA ECHO EN DEV-C++ POR SI LAS DUDAS

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
int n,i,j,k;
float a[10][10],b[10],x[10],det;
cout<<endl<<endl<<" METODO DE ELIMINACION DE GAUSS "<<endl;
cout<<" ========================================================="<<endl<<endl<<endl;
cout<<"Introduce el numero de ecuaciones => ";
cin>>n;cout<<endl;
cout<<"Introduce los coeficientes dela matriz A => "<<endl;
for(i=1;i<=n;i++) // carga los coefientes de a
{
for(j=1;j<=n;j++)
{
cout<<"A["<<i<<"]["<<j<<"]"<<"=>";
cin>>a[i][j];
}
cout<<endl;
}
cout<<"Introduce el vector independiente b => "<<endl;
for(j=1;j<=n;j++) //carga vector independiente
{
cout<<"b["<<i<<"]["<<j<<"]"<<"=>";
cin>>b[j];
}
//muestra la matriz a
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
//calcula el determinante de a // <<<<< INICIA EL METODO DE GAUSS >>>>>
j=0;
i=0;
det=1; //paso uno
for(i=1;1<=n-1;i=i+1) //paso tres
{
det=det*a[i][i]; //paso cuatro
if(det==0) //paso cinco
{
cout<<"Hay un cero en la diagonal principal...";
goto salir;
}
for(k=i+1;k<=n;k=k+1) //paso siete
{
for(j=i+i;j<=n;j=j+1) //paso nueve
{
a[k][j]=a[k][j]-(a[k][i]*a[i][j])/a[i][i];
}
b[k]=b[k]-(a[k][i]*b[i])/a[i][i]; //paso doce
}
} //fin del for paso tres
det=det*a[n][n];
if(det==0) //paso 16
{
cout<<"Hay un cero en la diagonal principal...";
goto salir;
}
x[n]=b[n]/a[n][n];
for(i=n-1;i>=1;i=i-1) //paso 19
{
x[i]=b[i];
for(j=i+1;j<=n;j=j+1) //paso 20
{
x[i]=x[i]-a[i][j]*x[j];
}
x[i]=x[i]/a[i][i];
}
cout<<"El determinante de a es => "<<det;
cout<<"Los valores de x => "<<endl;
for(j=1;j<=n;j++)
{
cout<<"x["<<i<<"]"<<"=>"<<x[j];cout<<endl;
}
salir:
system("PAUSE");
return EXIT_SUCCESS;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:revision eliminacion de gauss

Publicado por anonimo (1 intervención) el 06/11/2009 07:29:15
hola:

este codigo, si no me equivoco, es el pseudocodigo del libro "METODOS NUMERICOS APLICADOS A LA INGENIERA" de Antonio Nieves.

me he topado con el mismo casi que tu, y el problema radica en como obtienes tus datos de la matriz, y tu determinante sale cero, por lo que lo uniko de debes de hacer, es no trabajar en la posicion cero de tus arreglos, si no ke empieces a almacenarlos a partir de la posicion 1, y otra cosa, si usas for en vez de while, te recomiendo ke no hagas estaticos tus indices i y j, o como deberia de ser, i y k, porque si no, siempre te va a dar cero.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar