[C con Clase] Programa resolucion de sistema ecuaciones lineal

Facundo Curti facu.curti en gmail.com
Dom Sep 25 15:30:56 CEST 2016


Hola lista!
Estoy haciendo un trabajo para la uni, la cosa es que hice un algoritmo que
permite resolver un sistema de ecuaciones lineales con el metodo de
sustitucion hacia atras.

Este es el algoritmo: https://k61.kn3.net/E/6/D/C/3/4/C05.png

Lamentablemente, el algoritmo esta explicado muy vagamente, o por lo menos
ami se me hizo dificil entenderlo.

De cualquier forma, googleando y tratando de sacar el codigo por mi cuenta,
he logrado hacer un algoritmo que aplica gauss correctamente, sin embargo,
el codigo me falla al realizar la sustitucion hacia atras. (el ultimo paso).

Por ej, ingreso la siguiente matriz:
1  -5  1  7
10  0  20  6
5  0  -1  4

Y luego de aplicar gauss, la matriz resultante es esta:
1  -5  1  7
0  25  -6  -31
0  0  22  -2

Lo cual es correcto. Sin embargo, al momento de calcular el valor de las
variables, el resultado es este:
  x1=4  x2=8  x3=12

Cuando en realidad debria ser:
x3=-2/22
x2=-31/25 - (-6*x3)
x1= 7/1 - (-5*x2) - (1*x3)

Les adjunto el programa en C que hice, y tambien se los dejo en el
siguiente link de pastebin:
http://pastebin.com/ca1Y8dA9

El lugar donde aparentemente esta el error es este:


   1.     //::::Aca es donde aparentemente esta el error::::
   2.     for(int x=n; x>0; x--){ //Sustitucion hacia atras
   3.         resultados[x]=m[x][n+1]/m[x][x]; //Es igual a su B
   4.
   5.         for (int y=x+1; y<n+1; y++) { //Le resto a eso las demas
   variables
   6.             resultados[x]=resultados[x]-m[x][y]*resultados[y];
   7.         }
   8.
   9.     }



Por ultimo aclarar. Se que hay otros metodos para calcular Gauss (usando
pivotes), y que me ahorrarian hacer la sustitucion hacia atras, sin
embargo, el ejercicio me pide resolverlo de esta forma. (Luego también
tengo que hacer otros algoritmos que si usen pivote).

Espero puedan ayudarme, perdon por un mensaje tan extenso. Muchas gracias!
:)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160925/cd2a9226/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: gauss.c
Type: text/x-csrc
Size: 2693 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160925/cd2a9226/attachment.bin>


Más información sobre la lista de distribución Cconclase