Entradas populares

sábado, 8 de octubre de 2011

Spline

Hola como les va chavos. Espero, y en verdad espero que así sea, que les este yendo muy bien.

Para esta ocasión vamos a ver un programa que se encarga de Realizar la Interpolación Polinomial.





/* Spline para todos
Hace todo el proceso completo*/


#include<stdio.h>


float a[25][26],b[25][26],apoyo, x[25];
int n,m,i,j,k;


void ressitema();
void imprime();
void obten();
int main()
{
    printf(" \n\n\t***************Spline ******************");
    printf("        Solucionando sistema...\n");
    ressitema();
    printf("        Imprimiendo solucion del sistema de ecuaciones...\n");
    imprime();
    printf("        Obteniendo los valores de A, B, C, D...\n\n");
    obten();


}//fin del main


// funcion para obtener los valores de A,B,C,D
void obten()
{
    extern float a[25][26];
    extern float x[25];
    extern int n,m,i,j,k;
    float y[n],A[n],B[n],C[n],D[n],Dt[n],H[n];
    for(i = 0; i < n; ++i)//pidiendo los valores de Y y Delta
    {
        printf("Digita el valor %d de   Y   =? ",i+1);
        scanf("%f",&y[i]);
        printf("Digita el valor %d de Delta =? ",i+1);
        scanf("%f",&Dt[i]);
        printf("Digita el valor %d de    H  =? ",i+1);
        scanf("%f",&H[i]);
    }
    for(i = 0; i < n; ++i)
    {
        A[i] = y[i];
        B[i] = (Dt[i]) - (    ( ( 2*(x[i+1]) + (x[i+2]) ) / 6)*H[i]     );
        C[i] = ( x[i+1] )/2;
        D[i] = (   ( x[i+2] - (x[i+1]) )/( 6*H[i] )    );
    }


    printf("        ** Los Valores de A, B, C, D son: \n\n");
    for(i = 0; i < n; ++i)
    {
        printf("\n        *** Para i = %d   ***\n",i+1);
        printf("\n El valor %d de A es: %f",i+1,A[i]);
        printf("\n El valor %d de B es: %f",i+1,B[i]);
        printf("\n El valor %d de C es: %f",i+1,C[i]);
        printf("\n El valor %d de D es: %f",i+1,D[i]);
        putchar('\n');
    }
}


//funcion para solucionar el sistema
void ressitema()
{
     extern float a[25][26],b[25][26],apoyo;
extern int n,m,i,j,k;


printf("\n\n\tINGRESE EL NUMERO DE INCOGNITAS DEL SISTEMA:\n ");
scanf("\t%d", &n);
printf(" \n\n\t\tINGRESE LOS ELEMENTOS DEL SISTEMA \n\n ");


/* Ciclo para introducir los datos del sistema */


for(i=1;i<=n;i++)
   {
    printf(" FILA %d:\n", i);
    for(j=1;j<=n+1;j++)
     {
       printf(" ELEMENTO a%d%d:  ", i, j);
       scanf("%f", &a[i][j]);
     }
   }


/* Proceso */


m=n+1;
do
     {
       if(a[1][1]==0)
       {
         k=m-1;
         for(i=2;i<=k;i++)
          {
            if(a[i][1]!=0)
             {
               for(j=1;j<=m;j++)
                {
                   apoyo=a[i][j];
                   a[i][j]=a[1][j];
                   a[1][j]=apoyo;
                }
             }
          }
        }
        else
        {
          for(j=2;j<=m;j++)
           {
             for(i=2;i<=n;i++)
              {
                b[i-1][j-1]=a[i][j]-a[1][j]*a[i][1]/a[1][1];
              }
           }
          for(j=2;j<=m;j++)
           {
             b[n][j-1]=a[1][j]/a[1][1];
           }
           m=m-1;
         for(j=1;j<=m;j++)
           {
             for(i=1;i<=n;i++)
              {
                a[i][j]=b[i][j];
              }
           }
        }


      }while(m>1);


}




/*Impresion del sistema*/
void imprime()
{
    extern float a[25][26],x[25];
    extern int i;
    printf(" \n\tSOLUCION DEL SISTEMA\n ");
for(i=1;i<=n;i++)
     {
        x[i]= a[i][1];
        printf("\n\tM%d = %f", i, x[i]);
     }
     printf("\n\n");
}

No hay comentarios:

Publicar un comentario