| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Mariano
Registrado: 17 Abr 2006 Mensajes: 2
| Publicado: 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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |