Sei sulla pagina 1di 6

NJH

Método de Eliminación de Gauss


Algoritmo

Variables Globales

n : Cantidad de ecuaciones del sistema.


A : Matriz de coeficientes con n filas y n+1 columnas.
X : Vector solución del sistema.

Función Cargar_Datos()
{
Ingresar n //Dimensión del sistema.
Ingresar A //Matriz de coeficientes de n filas y n+1 columnas.
}

Función Gauss()
{
//Triangularización
Para k=1 hasta n-1
{
Para i=k+1 hasta n
{
q = Ai,k / Ak,k //Pivote.
Ai,k = 0
Para j=k+1 hasta n+1
{
Ai,j = Ai,j - (q * Ak,j);
}
}
}
//Verificación de Ann.
si(An,n == 0)
{
return -1; //El sistema no tiene solución única.

}
//Sustitución Inversa. Cálculo de solución.
Xn = An,n+1 / An,n
Para i=n-1 hasta 1 paso -1
{
s=0;
Para j=i+1 hasta n
{
s = s + (Ai,j * xj)
}
xi=(Ai,n+1 - s) / Ai,i
}
return 0; //Todo bien. Solución encontrada.
}

Función Mostrar_Resultado()
{ Para i=1 hasta n
{
Mostrar Xi
}
}
NJH

Función main()
{
int r //Retorno de Aplicar Método.

Cargar_Datos()
r = Gauss()
si(r == 0)
{
Mostrar_Resultado()
}
sino
{
Mostrar "Error: El sistema no tiene solución única"
}
}

Programa

//Declaración de librerias
#include <iostream>
#include <math.h>
#include <iomanip> //formato de salida.
using namespace std;

//Variables globales
int n; //Cantidad de ecuaciones
double A[100][100]; //Matriz de coeficiente.
double X[100]; //Vector resultado.

void Cargar_Datos()
{
int i,j;
cout<<"Ingrese el Nro. de ecuaciones (Max.100): ";
cin>>n;
for(i=1; i<=n; i++)
{
for(j=1; j<=n+1; j++)
{
cout<<"Coef. ["<<i<<"]["<<j<<"]= ";
cin>>A[i][j];
}
}
}

int Gauss()
{
int k,i,j; //Indices de ciclo.
double q,s; //pivote y sumatoria.
double max; //Estrategia de pivoteo máximo.
int f; //Fila del pivote máximo.
double aux; //Auxiliar para intercambio de filas.
//Triangularización
for(k=1; k<=n-1; k++)
{
for(i=k+1; i<=n; i++)
{
NJH
q = A[i][k] / A[k][k]; //Pivote.
A[i][k]=0;
for(j=k+1; j<=n+1; j++)
{
A[i][j] = A[i][j] - (q * A[k][j]);
}
}
}
//Verificación de Ann.
if(A[n][n]==0)
{
return -1; //El sistema no tiene solución única.

}
//Sustitución Inversa. Cálculo de solución.
X[n] = A[n][n+1] / A[n][n];
for(i=n-1; i>=1; i--)
{
s=0;
for(j=i+1; j<=n; j++)
{
s = s + (A[i][j]*X[j]);
}
X[i]=(A[i][n+1] - s) / A[i][i];
}
return 0; //Todo bien. Solución encontrada.
}

void Mostrar_Resultado()
{
int i;
cout<<fixed<<setprecision(8); //Redondeo a 8 decimales.
cout<<"\n\nVector solución\n";
for(i=1; i<=n; i++)
{
cout<<"X["<<i<<"] = "<<X[i]<<"\n";
}
}

int main()
{
int r; //Retorno de la función Gauss.

Cargar_Datos();
r = Gauss();
if(r == 0)
{
Mostrar_Resultado();
}
else
{
cout<<"Error: El sistema no tiene solución única";
}

system("pause");
return 0;
}
NJH

Utilice el programa desarrollado para obtener la solución del siguiente sistema de ecuaciones lineales

Método de Eliminación de Gauss con Estrategia de Pivote Máximo


Algoritmo

Función Cargar_Datos()
{
Ingresar n //Dimensión del sistema.
Ingresar A //Matriz de coeficientes de n filas y n+1 columnas.
}

Función Gauss()
{
//Triangularización
Para k=1 hasta n-1
{

//------ Inicio Estrategia de Pivote Máximo ------


//Búsqueda del max y fila.
max = fabs(Ak,k);
f = k;
Para i=k+1 hasta n
{
si(fabs(Ai,k) > max)
{
max = fabs(Ai,k)
f=i
NJH
}
}
//Verificación de max encontrado.
si(max != 0)
{
//Intercambio de filas k y f.
Para j=1 hasta n+1
{
aux = Ak,j
Ak,j = Af,j
Af,j = aux
}
}
sino
{
return -1; //El sistema no tiene solución única.
}
//------ Fin Estrategia de Pivote Máximo ------

Para i=k+1 hasta n


{
q = Ai,k / Ak,k //Pivote.
Ai,k = 0
Para j=k+1 hasta n+1
{
Ai,j = Ai,j - (q * Ak,j);
}
}
}
//Verificación de Ann.
si(An,n == 0)
{
return -1; //El sistema no tiene solución única.

}
//Sustitución Inversa. Cálculo de solución.
Xn = An,n+1 / An,n
Para i=n-1 hasta 1 paso -1
{
s=0;
Para j=i+1 hasta n
{
s = s + (Ai,j * xj)
}
xi=(Ai,n+1 - s) / Ai,i
}
return 0; //Todo bien. Solución encontrada.
}

Función Mostrar_Resultado()
{
Para i=1 hasta n
{
Mostrar Xi
}
}
NJH

Función main()
{
int r //Retorno de Aplicar Método.

Cargar_Datos()
r = Gauss()
si(r == 0)
{
Mostrar_Resultado()
}
sino
{
Mostrar "Error: El sistema no tiene solución única"
}
}

Potrebbero piacerti anche