Algoritmo de eliminación de Gauss

Jorge Castillo Mateo

/* Programa que resuelve sistemas de ecuaciones compatibles determinados de n incógnitas mediante el algoritmo de eliminación de Gauss */

#include <stdio.h>
#include <iostream>
#include <math.h>

using namespace std;

void gauss (double *a0, double *x, int n){
//Algoritmo de eliminación de Gauss (método exacto)
int i, j, k;
double aux;
double a[n+1][n+1];

//———————— Paso 1: Copiar a0() en a() para preservar los valores a0() originales
for (i=1; i<=n; i++){
for (j=0; j<=n; j++){

k=i*(n+1)+j ;
a[i][j] = a0[k];
}
}
//———————- Paso 2: eliminación de Gauss = hacer una matriz triangular superior
for (j=n; j>=2; j–){
for (k=n; k>=2+(n-j); k–){
aux = a[k][j];
for (i=n; i>=0; i–){

a[k][i] = a[k][i] – a[k – 1][i] * aux / a[k – 1][j];
}
}
}

//———————————— Paso 3: Sustitución de valores y obtención de resultados

for (i=1; i<=n; i++){
x[i] = -a[n-i+1][0];
for (j=1; j<=i-1; j++){
x[i] = x[i] – a[n-i+1][j] * x[j];
}

x[i] = x[i] / a[n – i + 1][i];
}

}

int main(){

int n, i, j;

cout << “Introduzca el numero de incognitas del sistema: “;
cin >> n;

double a[n+1][n+1];

//———————— Ejemplo para entender el procedimiento de introduccion de datos
cout << “\n Considerando incognitas c, x[2], x[3] (en caso de ser 3), \n intoducir en el orden d + ax[1] + bx[2] + cx[3] = 0”;

//—————————— Introducción de cada uno de los valores de la matriz de datos
for (i=1; i<=n; i++){
for (j=0; j<=n; j++){

if (j == 0){
cout << “\n \n Introduzca el elemento constante de la fila ” << i << ” : “;
cin >> a[i][j];}

else {
cout << “\n \n Introduzca el elemento ” << j << ” de la fila ” << i << ” : “;
cin >> a[i][j];}
}
}

//————————— Soluciones del sistema, tiene que ser compatible determinado
double x[n+1];

gauss (*a, x, n);

for (int i=1;i<=n;i++){
cout << ” x[” << i << “] = ” << x[i] << endl;}

return 0;

}

Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s