/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Código incompleto | Gauss-Seidel

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Mariano



Registrado: 17 Abr 2006
Mensajes: 2

MensajePublicado: 25/10/2007 8:27 am
Título: Código incompleto | Gauss-Seidel

Saludos.

He intentado resolver un sistema de ecuaciones mediante el método de Gauss-Seidel.
El sistema lo componen las tres ecuaciones siguientes:

3x+3y+7z=4
3x-y+z=1
3x+6y+2z=0


Una solución inicial del sistema es (0,0,0.5)

Hasta ahora, esto es lo que llevo:

Código:

/*PROGRAMA QUE CONTIENE UN ALGORITMO PARA SOLUCIONAR*/
/*UN SISTEMA DE ECUACIONES LINEALES POR METODO GAUSS-SEIDEL*/
/*EL MISMO METODO SE PUEDE USAR PARA UNA MATRIZ NXN*/

#include <stdio.h>

  main(){


  float  x = 0, y = 0, z = 0.5;

  int i;

  /*se despeja x de la primera ecuacion*/
  /* y de la segunda y z de la tercera*/
  /* se supone una solucion inicial { 0,0,0.5}*/

  for ( i = 0 ; i <= 100; ++i ){

     x = ( 4 - (3*y) - (7*z) ) * (0.3333);

     y = ( 1 - (3*x) - z ) *(-1);

     z = ( (3*x) + (6*y) ) * (0.5)*(-1);

  }

  printf ( " x = %.5f \ny =  %.5f \nz =  %.5f\n", x, y, z);

  system("PAUSE");   
  return 0;
}


Creo que a la hora de imprimir los resultados, no estoy usando el tipo de número adecuado, por que la respuesta me genera '#IND0' para los decimales, de lo cual no entiendo qué significa.

Por otro lado, ¿cómo podría iterar con la condición de que

|| ( x^(k+1), y^(k+1), z^(k+1))-( x^(k), y^(k), z^(k)) || < 10^(-4) ?

Agradecería cualquier ayuda al respecto.

Muchas gracias.
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 240
Ubicación: Cono Sur

MensajePublicado: 26/10/2007 3:37 pm
Título:

Hola

Esta es mi versión:

Código:

/* Solucion de ecuaciones -método de Gauss-Seidel- */

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

#define L 10
#define A L

int main(void)
{
    float m[L][A], a[L], cx[L], c[L];
    float e, f;
    int it, n, x, y;
    printf(")\nNumero de incognitas del sistema: ");
    scanf("%d",&n);

    for(x=0; x<n; x++)
    {
         cx[x]=0;
         a[x]=0;
    }

    for(y=0; y<n; y++)
    {
        for(x=0; x<n; x++)
        {
             printf("a[%d][%d]= ",y,x);
             scanf("%f",&e);
             m[y][x]=e;
        }
        printf("Y la constante C[%d]= ",y);
        scanf("%f",&f);
        c[y]=f;
    }

    for(it=0; it<20; it++)
    {
        for(y=0; y<n; y++)
        {
            for(x=0; x<n; x++)
                cx[y]-=(m[y][x]*a[x])/m[y][y];
            cx[y]+=(c[y]/m[y][y]);
            a[y]=cx[y];
        }
    }
    printf("Resultado: ");
    for(x=0; x<n; x++)
        printf("na[%d]=%.3f", x+1, a[x]);
    puts("\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}


Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com