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");
}
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");
}