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;
}
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


0