19/09/2019, 01:19:52 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: LISTADO ACTUALIZADO DE CURSOS
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Sistema de ecuaciones en C  (Leído 450 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Weip
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 220


Ver Perfil
« : 19/04/2015, 09:09:26 am »

Hola a todos. Veréis, estoy haciendo un programa que resuelve un sistema de ecuaciones triangular inferior y otro triangular superior. El problema es que a la hora de ejecutarlo me da resultados un poco raros (números muy pequeños del estilo 10e-310, ceros...). El algoritmo que uso es mera sustitución escalonada.
Os pongo el código (es una función a parte para usarla junto con otros programas):

Código:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

double *triangulars(double **l, double *b, int n){

    int i, j;
    double *x, *y, tol=10e-3, suma=0., suma2=0;

    /*Reservo espacio para el vector solucion x*/
    x=(double*)malloc(n*sizeof(double));
    if(x==NULL) exit(1);

    /*Reservo espacio para el vector incognita del sistema triangular inferior*/
    y=(double*)malloc(n*sizeof(double));
    if(y==NULL) exit(1);

    /*Resuelvo el sistema triangular inferior*/
    if(fabs(l[0][0])<tol) exit(1);
   
    y[0]=b[0]/l[0][0];

    for(i=1;i<n;i++){

        suma=0;
 
        for(j=0;j<i;j++){

            if(fabs(l[i][i])<tol) exit(1);

            suma+=l[i][j]*y[j];
            y[i]=(1/l[i][i])*(b[i]-suma);

        }

    }

    /*Resuelvo el sistema triangular superior*/
    if(fabs(l[n-1][n-1])<tol) exit(1);

    x[n-1]=y[n-1]/l[n-1][n-1];

    for(j=n-2;j>=0;j--){

        suma2=0;

        for(i=j+1;i<n;i++){

             if(fabs(l[j][j])<tol) exit(1);

             suma2+=l[j][i]*x[i];
             x[j]=(1/l[j][j])*(y[j]-suma2);

      }
   
   }

   free(y);

   return x;
}

¡Gracias por adelantado!
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!