ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Método LU en C


Enviado por   •  29 de Septiembre de 2015  •  Prácticas o problemas  •  1.660 Palabras (7 Páginas)  •  459 Visitas

Página 1 de 7

Método de Factorización LU

1. Completar la función de impresión del sistema de ecuaciones considerando la representación adecuada de la matriz de 3x3 y los términos independientes.

2. Completar la función encargada de validar que no existan ceros en la diagonal principal, si existen mandar un mensaje y terminar la ejecución del programa.

3. Completar la función para cargar la matriz A y el arreglo b de dos archivos de texto diferentes.

4. Modificar el código para no usar los arreglos estáticos y emplear memoria dinámica. La reservación de la memoria debe hacerse desde dos funciones, una para el arreglo unidimensional y otra para el bidimensional. Agregar también la función para liberar la

5. Ejecutar para la siguiente matriz y hacer el desarrollo a mano para comprobar el resultado.

[pic 1]

//Método de LU o factorización

#include

#include

//Función para almacenar los archivos a leer

void cargarArchivos(float **sistema,float *b)

{

        //apuntadores a archivos 1 y 2

        FILE *archivo1 = NULL;

            FILE *archivo2 = NULL;

          int i=0;

   

    //Condición para abrir los archivos

    if((archivo1 = fopen("arreglo.txt","r")) == NULL || (archivo2 = fopen("b.txt","r")) == NULL )

    //if(!(archivo1 = fopen("arreglo.txt","r")) || !(archivo2 = fopen("b.txt","r")) == NULL )

    {

            printf("\n\n\n *** No encontre los archivos ):");

            getchar();

            exit (0);

    }

   

    while(feof(archivo1)==0)

    //while!(feof(archivo1)==0)

    {

            fscanf(archivo1,"%f %f %f",&sistema[i][0],&sistema[i][1],&sistema[i][2]);

                i++;

    }

   

   

    i=0;

    while(feof(archivo2)==0)

    //while!(feof(archivo2)==0)

    {

            fscanf(archivo2, "%f",&b[i]);

            i++;

    }

   

        //cierra archivos

        fclose(archivo1);

        fclose(archivo2);

                 

}

//Función para imprimir el sistema de ecuaciones inicial cada que sea necesario

void imprimirSistema(float **arreglo,float *b)

{

      int i=0,j=0;

     printf("\n\nSistema de Ecuaciones: \n\n");

     for(i=0;i<3;i++)

    {

         for(j=0;j<4;j++)

         {

           

              if(j==3)

                  printf("\t%.2f ",b[i]);

              else

                  printf("\t%.2f ",arreglo[i][j]);

         }

         printf("\n");

    }

}

//Función para corroborar que no existan ceros en la diagonal principal del arreglo en forma de matriz

void noCerosDiagonal(float **arreglo)

{

    if((arreglo[0][0]==0)||(arreglo[1][1]==0)||( arreglo[2][2]==0))

     

         {

                 printf("\n\t\t***T%c diagonal principal tiene un cero...***",163);

                printf("\n\t\t\tT%crmino de ejecuci%cn!!!!!!",130,162);

         getchar();

         exit(0);//termina la ejecuancion aqui        

         }

}

//Función para almacenar memoria dinámica para resolver el sistema de ecuaciones

float **memoria_matriz(int renglones, int columnas)

{

    float **sistema=NULL;

    int i=0;

    sistema=(float**)calloc(renglones,sizeof(float*));

        if(sistema==NULL)

        {

                printf("\nNo hay suficiente memoria!!!!");

                printf("\n\t\t\tT%crmino de ejecuci%cn!!!!!!",130,162);

                getchar();

                exit(0);

        }

        for(i=0;i

        {

                sistema[i]=(float*)calloc(columnas,sizeof(float));

        }

        

        return sistema;

...

Descargar como (para miembros actualizados)  txt (6.6 Kb)   pdf (103.6 Kb)   docx (24.9 Kb)  
Leer 6 páginas más »
Disponible sólo en Clubensayos.com