Interpolacion en C++ Builder (parte 2)

Continuando con el programa para la segunda parte debemos incluir un tercer botón, es decir el Button3 que será el que resuelva la tabla para hallar el polinomio interpolador.

El código necesario para que el programa pueda hallar el polinomio interpolador es el siguiente:


int i,j,p=1; float f[100][100];

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

{ for(j=0;j<n;j++)

{f[i][j]=StrToFloat(StringGrid1->Cells[i][j]);

}

}



for(i=0;i<n-1;i++)

{ for(j=0;j<n;j++)

{if(j+p<n)

{f[i+2][j]=(f[i+1][j+1]-f[i+1][j])/(f[0][j+p]-f[0][j]);

StringGrid1->Cells[i+2][j]=f[i+2][j];}

else

break;

}

p++;

}

float b[100],x[100],sumxxxx,sumxxx,sumxx,sumx,sumn;

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

{if(i<n)

{b[i]=f[i+1][0];

x[i]=f[0][i];

}

else

{b[i]=0;

x[i]=0;

}

}

sumxxxx=b[4];

sumxxx=b[3]-b[4]*x[3]-b[4]*x[2]-b[4]*x[1]-b[4]*x[0];

sumxx=-b[3]*x[2]-b[3]*x[1]-b[3]*x[0]+b[2]+b[4]*x[2]*x[3]+b[4]*x[1]*x[3]+b[4]*x[1]*x[2]+b[4]*x[0]*x[3]+b[4]*x[0]*x[2]+b[4]*x[0]*x[1];

sumx=b[3]*x[1]*x[2]+b[3]*x[0]*x[2]+b[3]*x[1]*x[0]-b[2]*x[1]-b[2]*x[0]+b[1]-b[4]*x[1]*x[2]*x[3]-b[4]*x[0]*x[2]*x[3]-b[4]*x[0]*x[1]*x[3]-b[4]*x[0]*x[1]*x[2];

sumn=-b[3]*x[0]*x[1]*x[2]+b[2]*x[0]*x[1]-b[1]*x[0]+b[0]+b[4]*x[0]*x[1]*x[2]*x[3];

String cad,sxxxx,sxxx,sxx,sx,sn;

sxxxx=redondeo(sumxxxx);

sxxx=redondeo(sumxxx);

sxx=redondeo(sumxx);

sx=redondeo(sumx);

sn=redondeo(sumn);



if(sumxxxx!=0)

cad=cad+sxxxx+"x^4";

if(sumxxx!=0)

if(sumxxx<0)

cad=cad+sxxx+"x^3";

else

cad=cad+"+"+sxxx+"x^3";

if(sumxx!=0)

if(sumxx<0)

cad=cad+sxx+"x^2";

else

cad=cad+"+"+sxx+"x^2";

if(sumx!=0)

if(sumx<0)

cad=cad+sx+"x";

else

cad=cad+"+"+sx+"x";

if(sumn!=0)

if(sumn<0)

cad=cad+sn;

else

cad=cad+"+"+sn;

Label1->Caption=cad;



Copiamos el anterior código y lo pegamos en el boton3 (Button3).

Y no podemos olvidar incluir la librería math.h, esto en la parte superior de la siguiente manera #include <math.h>, debe estar exactamente donde estan los otros elementos incluidos.

Ahora hay un detalle importante con el StrinGgrid, como bien sabemos este elemento es una tabla, en la que se puede introducir datos y presentar resultados, pues bien si lo dejamos así como està no podremos introducir datos, para evitar esto se debe buscar en el inspector de objetos (object inspector) la opción OPTIONS, dentro de esta se encuentra GOEDITING, que por defecto está en FALSE y debemos cambiar a TRUE.


Finalmente debemos declarar el valor n con valor entero y general, también nesecitamos una función para redondear a dos decimales los resultados :


int n;

String redondeo(double numero)

{int num=numero;

if(numero-num!=0)

numero=double(int(numero*1000.0+.5))/1000.0;

return numero;

}


El código anterior debemos pegarlo en la parte superior quedando de la siguiente manera:


La parte resaltada de azul es el lugar donde debemos pegar el código
Con esto estaría concluido el programa, solo faltaría los detalles secundarios como el fondo, nombres de los botones, label y acomodar algunas partes.

Artículos relacionados:

0 comentarios :