INTERPOLACIÓN POLINÓMICA PARTE 1 – NOCIONES BÁSICAS Y APLICACIÓN EN LA APROXIMACIÓN DE INTEGRALES DEFINIDAS CON ANTIDERIVADAS DESCONOCIDAS (CASO DE ESTUDIO: FUNCIÓN ERROR)

4개월 전

portada.jpg

Retomando los temas relacionados con el análisis numérico, el día hoy les quiero presentar a los miembros de las comunidades científicas #STEM-ESPANOL y #STEEMSTEM un artículo referente a la aproximación numérica mediante la interpolación lineal.

Para empezar, podemos mencionar que en diversas aplicaciones de las matemáticas surgen problemas cuya solución exacta no puede encontrarse debido a diferentes razones, en este tipo de situaciones es conveniente conocer los métodos numéricos que pemitan encontrar valores aproximados que puedan ser utilizados de forma práctica.

En este orden de ideas, uno de los métodos de aproximación más utilizados en el análisis numérico es la interpolación, básicamente la interpolación se trata de trazar una recta o curva entre todos los puntos dados y utilizar dicha curva para aproximar los valores que se encuentren entre los puntos dados.

Para toda serie de datos se construye un polinomio de interpolación, el grado del polinomio de interpolación dependerá del número de puntos, por ejemplo, para 2 puntos el polinomio de interpolación es de grado 1 (lineal); para 3 puntos el polinomio de interpolación es de grado 2 (cuadrático), para 4 puntos el polinomio sería de grado 3 (cúbico) y así sucesivamente.

Es importante resaltar también que para todo conjunto de n datos dados existe un único polinomio de interpolación de grado n-1, es decir, solo un polinomio de dicho grado atraviesa los n puntos.

En este sentido, existen diferentes técnicas para aproximar valores mediante interpolación, Diferencias Divididas de Newton, Interpolación de Lagrange, sin embargo , en el presente artículo nos enfocaremos en obtener el polinomio de interpolación mediante la construcción de un Sistema de Ecuaciones Lineales relacionado, parar comprender este procedimiento más claramente veamos algunos ejemplos.

EJEMPLO N° 1

La temperatura en la base del Cerro Santa Ana (Sobre el nivel del mar) en la península de Paraguana es de 30°C mientras que en la cima ubicada a 800 msnm (metros sobre el nivel del mar) es de 15° C, encuentre el polinomio de interpolación lineal y úselo para aproximar la temperatura a los 200 metros de altura.

Como se trata de dos puntos es una interpolación muy sencilla, una interpolación lineal. Por lo tanto el polinomio de interpolación tiene la forma de una función lineal:

img1.png

A continuación sustituimos los valores de x y P(x) para los puntos dados

img2.png

Resolvemos este sistema de ecuaciones lineales

img3.png

Calculamos b

img4.png

Por lo tanto el polinomio de interpolación sería

img5.png

Utilizando dicho polinomio para interpolar en los 200 m

img6.png

lineal.png
Interpolación lineal del ejemplo N°1 Gráfica obtenida mediante Scilab. Fuente: @ydavgonzalez.

Por lo que la temperatura a los 200 m es de 26,54 °C, en caso de tener 3 puntos se realizaría una interpolación cuadrática como se muestra en el siguiente ejemplo.

EJEMPLO N° 2

Asumamos que adicional a los datos del ejemplo 1 también se conoce que a los 400 metros de altura la temperatura es de 25 °C, encuentre el polinomio de interpolación y úselo para aproximar la temperatura a los 200 m.

En este caso tenemos 3 puntos por lo tanto el polinomio de interpolación será de grado 2 (cuadrático), es decir de la forma:

img7.png

Sustituimos los valores de x y P(x) correspondientes a altura y temperatura respectivamente

img8.png

img9.png

Restando (ii)-(i) y (iii)-(ii)

img10.png

Restando 19(jj)-20(j)

img11.png

Luego al sustituir en (j)

img12.png

Luego

img13.png

Al sustituir a,b y c obtenemos

img14.png

Aproximamos la temperatura a los 200 metros

img15.png

Es decir a los 200 m la temperatura es de 28,18 °C

cuadratica.png
Interpolación cuadrática del ejemplo N°2 Gráfica obtenida mediante Scilab. Fuente: @ydavgonzalez.

Aproximación de la función error mediante los polinomios de interpolación

Ahora bien, el uso de los polinomios de interpolación va más allá de la simple aproximación de los valores entre puntos dados, también suele ser utilizado para aproximar el valor de integrales definidas que no pueden ser evaluadas de forma analítica, por ejemplo, en la teoría de la probabilidad existe una función muy conocida demoninada función error o función error de Gauss, la cual se expresa como sigue

img16.png

La integral que está presente en dicha función no puede ser resuelta de forma analítica, supongamos que se quiere aproximar

img17.png

Se trata de encontrar el polinomio de interpolación para la integral dada y luego utilizarlo para aproximar el valor de dicha integral, para lo cual usaremos una interpolación cuadrática en la cual los tres valores de x vendrán dados por los límites de la integral y el promedio de ambos límites, es decir:

tf(t)
01
0,50,778801
10,367879

La forma general del polinomio de interpolación será:

img18.png

De esa expresión obtenemos

img19.png

Calculamos (ii)-(i) y (iii)-(i)

img20.png

Calculamos (ii)-(i) y (iii)-(i)

img21.png

Para calcular b, sustituimos a en (jj)

img22.png

Dados estos valores, el polinomio de interpolación quedaría como

img23.png

Usamos dicho polinomio para aproximar la función error

img24.png

Hay que tener en cuenta que este valor es una aproximación, para encontrar el valor exacto debemos resolver la integral, si bien no podemos encontrar la antiderivada de dicha función podemos expresarla como una serie teniendo en cuenta que

img25.png

Luego

img26.png

Entonces

img27.png

El cálculo de esta serie arroja un valor para erf(1) de 0,8427007929, lo cual pone de relieve la precisión del método de aproximación de la integral definida mediante su polinomio interpolador al generar tan solo un error porcentual de 0,05%, si se desea mejorar la precisión de este método se pueden utilizar más puntos para construir el polinomio interpolador.

En un próximo artículo se profundizará en otras técnicas de interpolación más apropiadas para ser aplicadas en contextos prácticos, sin embargo, los principios mostrados en el presente post son la base de casi todas las técnicas de interpolación razón por la cual es de suma importancia comprenderlos para poder estudiar los métodos numéricos que se estarán abordando en esta serie de artículos.

Finalmente les comparto el código Scilab utilizado en este artículo para realizar las interpolaciones y gráficas


//******************** Licenciado Ysmael González ********************
//******************** Departamento de Física y Matemática ********************
//******************** STEM-ESPANOL-2019 ********************
//******************** INTERPOLACIÓN POLINÓMICA ********************
function [dd] =decimales(num,dec)
num=abs(num);
if(num<1)
ee=0;
else
ee=int(log10(num));
end
if(dec-ee>0)
dd=dec-ee;
else
dd=1;
end
endfunction
function interpolacion()
funcprot(0);
stacksize('max') ;
//LECTURA DE LOS DATOS POR TECLADO
n=input("Ingrese la cantidad de puntos(2-7): ");
x=list();
fx=list();
for i=1:n
printf("\nIngrese los valores del punto %d",i);
x(i)=input("Ingrese el valor de x: ");
fx(i)=input("Ingrese el valor de F(x): ");
end
xinterp=input("Ingrese el valor de x que desee aproximar mediante la interpolación: ");
if(n==2)
matA=[x(1) 1;x(2) 1];
matB=[fx(1);fx(2)];
vecX=matA\matB;
elseif(n==3)
matA=[x(1)^2 x(1) 1;x(2)^2 x(2) 1;x(3)^2 x(3) 1];
matB=[fx(1);fx(2);fx(3)];
vecX=matA\matB;
elseif(n==4)
matA=[x(1)^3 x(1)^2 x(1) 1;x(2)^3 x(2)^2 x(2) 1;x(3)^3 x(3)^2 x(3) 1;x(4)^3 x(4)^2 x(4) 1];
matB=[fx(1);fx(2);fx(3);fx(4)];
vecX=matA\matB;
elseif(n==5)
matA=[x(1)^4 x(1)^3 x(1)^2 x(1) 1;x(2)^4 x(2)^3 x(2)^2 x(2) 1;x(3)^4 x(3)^3 x(3)^2 x(3) 1;x(4)^4 x(4)^3 x(4)^2 x(4) 1;x(5)^4 x(5)^3 x(5)^2 x(5) 1];
matB=[fx(1);fx(2);fx(3);fx(4);fx(5)];
vecX=matA\matB;
elseif(n==6)
matA=[x(1)^5 x(1)^4 x(1)^3 x(1)^2 x(1) 1;x(2)^5 x(2)^4 x(2)^3 x(2)^2 x(2) 1;x(3)^5 x(3)^4 x(3)^3 x(3)^2 x(3) 1;x(4)^5 x(4)^4 x(4)^3 x(4)^2 x(4) 1;x(5)^5 x(5)^4 x(5)^3 x(5)^2 x(5) 1;x(6)^5 x(6)^4 x(6)^3 x(6)^2 x(6) 1];
matB=[fx(1);fx(2);fx(3);fx(4);fx(5);fx(6)];
vecX=matA\matB;
elseif(n==7)
matA=[x(1)^6 x(1)^5 x(1)^4 x(1)^3 x(1)^2 x(1) 1;x(2)^6 x(2)^5 x(2)^4 x(2)^3 x(2)^2 x(2) 1;x(3)^6 x(3)^5 x(3)^4 x(3)^3 x(3)^2 x(3) 1;x(4)^6 x(4)^5 x(4)^4 x(4)^3 x(4)^2 x(4) 1;x(5)^6 x(5)^5 x(5)^4 x(5)^3 x(5)^2 x(5) 1;x(6)^6 x(6)^5 x(6)^4 x(6)^3 x(6)^2 x(6) 1;x(7)^6 x(7)^5 x(7)^4 x(7)^3 x(7)^2 x(7) 1];
matB=[fx(1);fx(2);fx(3);fx(4);fx(5);fx(6);fx(7)];
vecX=matA\matB;
end
for i=1:n
if(abs(vecX(i))<0.0000000000001)
vecX(i)=0;
end
end
if(n==2)
y = poly([vecX(2) vecX(1)], "x", "coeff")
elseif(n==3)
y = poly([vecX(3) vecX(2) vecX(1)], "x", "coeff")
elseif(n==4)
y = poly([vecX(4) vecX(3) vecX(2) vecX(1)], "x", "coeff")
elseif(n==5)
y = poly([vecX(5) vecX(4) vecX(3) vecX(2) vecX(1)], "x", "coeff")
elseif(n==6)
y = poly([vecX(6) vecX(5) vecX(4) vecX(3) vecX(2) vecX(1)], "x", "coeff")
elseif(n==7)
y = poly([vecX(7) vecX(6) vecX(5) vecX(4) vecX(3) vecX(2) vecX(1)], "x", "coeff")
end
minX=min(x);
maxX=max(x);
varX=[minX-1:0.001:maxX+1];
polino=pol2str(y);
polino=strsubst(polino, "^", ".^");
deff("y=g(x)","y="+polino);
printf("\n\nEl polinomio de interpolación es: "+pol2str(y)+"\n");
printf("\n\nEl valor de la aproximación por interpolación es: "+string(g(xinterp))+"\n");
plot(varX,g(varX))
for i=1:n
plot(x(i),fx(i),'.r');
end
plot(xinterp,g(xinterp),'.b');
endfunction
interpolacion();

CONCLUSIONES


  1. Para todo conjunto de n datos existe un único polinomio interpolador de grado n-1 que pasa por dichos puntos.

  2. La interpolación polinómica es un procedimiento útil para evaluar integrales definidas en los casos en que no se puede encontrar la antiderivada de forma analítica.

  3. La función error utilizada en la teoría de probabilidad viene dada por el resultado de una integral definida, en este contexto, la interpolación polinómica es útil para aproximar los valores de dicha función.

  4. El polinomio de interpolación para un conjunto de datos puede ser determinado mediante la construcción y resolución de un Sistema de Ecuaciones Lineales relacionado.

REFERENCIAS BIBLIOGRÁFICAS Y LECTURAS RECOMENDADAS


  1. Anton, Bivens y Davis (2010), Cálculo de una variable, Trascendentes tempranas. 2da edición Editorial Limusa Willey.

  2. Budnick (2007), Matemáticas aplicadas para administración, economía y ciencias sociales. 4ta edición Editorial Mc Graw Hill.

  3. Saenz (2009), Cálculo Integral con Funciones Trascendentes Tempranas para Ciencias e Ingeniería. 2da edición Editorial Hipotenusa.

  4. Sauer (2013), Análisis Numérico. 2da edición Editorial Pearson.

Si deseas leer contenido científico de calidad en habla hispana te invito a revisar la etiqueta #STEM-ESPANOL donde podrás encontrar diversidad de temas, Matemática, Ingeniería, Física, Química, Biología, Medicina, Ciencia, Tecnología y mucho más.

blanco3.jpg
Logotipo del Área de Matemáticas de #STEM-ESPANOL

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
STEEMKR.COM IS SPONSORED BY
ADVERTISEMENT
Sort Order:  trending



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @utopian-io.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness and utopian-io witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Thanks for having added @steemstem as a beneficiary to your post. This granted you a stronger support from SteemSTEM.

Please consider using the steemstem.io app to get a stronger support.


Repollo es un proyecto que tiene como misión entregar recompensas a todos los creadores de contenido. Tú puedes recibir un voto de Repollo siempre si decides adquirir una membresía delegando desde 50 SP. @cervantes apoya a Repollo, Puedes votar por ellos como Witness aquí. No te olvides de seguir promocionando tus publicaciones en nuestro Discord.

Hi @ydavgonzalez!

Your post was upvoted by Utopian.io in cooperation with @steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.

Contribute to Open Source with utopian.io

Learn how to contribute on our website and join the new open source economy.

Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV