Loading [MathJax]/jax/output/HTML-CSS/jax.js
Saltar al contenido principal
Library homepage
 

Text Color

Text Size

 

Margin Size

 

Font Type

Enable Dyslexic Font
LibreTexts Español

8: Interpolación

( \newcommand{\kernel}{\mathrm{null}\,}\)

Considera el siguiente problema: Dados los valores de una función conociday=f(x) en una secuencia de puntos ordenadosx0,x1,,xn, encuentraf(x) para arbitrariox. Cuandox0xxn, el problema se llama interpolación. Cuandox<x0 ox>xn, el problema se llama extrapolación.

Conyi=f(xi), el problema de la interpolación es básicamente uno de dibujar una curva suave a través de los puntos conocidos(x0,y0),(x1,y1),,(xn,yn). Este no es el mismo problema que dibujar una curva suave que se aproxime a un conjunto de puntos de datos que tienen error experimental. Este último problema se denomina aproximación de mínimos cuadrados, que se considera en el siguiente capítulo.

Es posible interpolar los puntosn+1 conocidos por un polinomio único de gradon. Cuandon=1, el polinomio es una función lineal; cuandon=2, el polinomio es una función cuadrática. Aunque a veces se utilizan polinomios de orden bajo cuando el número de puntos es escaso, los interpolados polinomios de orden superior tienden a ser inestables y no son de mucha utilidad práctica.

Aquí, consideraremos la interpolación polinómica por piezas más útil. Los dos más utilizados son la interpolación lineal por tramos y la interpolación spline cúbica. El primero hace uso de polinomios lineales, y los segundos polinomios cúbicos.

Interpolación lineal por tramos

Aquí, utilizamos polinomios lineales. Esta es la interpolación predeterminada que normalmente se usa al trazar datos.

Supongamos que la función de interpolación esy=g(x), y como antes, hayn+1 puntos para interpolar. Construimos la funcióng(x) a partir de polinomios linealesn locales. Escribimos

g(x)=gi(x), for xixxi+1,

donde

gi(x)=ai(xxi)+bi

yi=0,1,,n1

Ahora requerimosy=gi(x) pasar por los puntos finales(xi,yi) y(xi+1,yi+1). tenemos

yi=biyi+1=ai(xi+1xi)+bi

Por lo tanto,gi(x) se determina que los coeficientes de

ai=yi+1yixi+1xi,bi=yi

Aunque la interpolación lineal por tramos es ampliamente utilizada, particularmente en rutinas de trazado, sufre de una discontinuidad en la derivada en cada punto. Esto da como resultado una función que puede no parecer suave si los puntos están demasiado espaciados. A continuación consideramos un algoritmo más desafiante que utiliza polinomios cúbicos.

Interpolación spline cúbica

Losn+1 puntos a ser interpolados son de nuevo

(x0,y0),(x1,y1),(xn,yn).

Aquí, utilizamosn polinomios cúbicos por partes para la interpolación,

gi(x)=ai(xxi)3+bi(xxi)2+ci(xxi)+di,i=0,1,,n1,

con la función de interpolación global escrita como

g(x)=gi(x), for xixxi+1.

Para lograr una interpolación suave lo imponemosg(x) y sus derivadas primera y segunda son continuas. El requisito queg(x) es continuo (y pasa por todos losn+1 puntos) da como resultado las dos restricciones

gi(xi)=yi,i=0 to n1gi(xi+1)=yi+1,i=0 to n1

El requisito queg(x) es continuo da como resultado

gi(xi+1)=gi+1(xi+1),i=0 to n2

Y el requerimiento queg(x) es continuo da como resultado

gi(xi+1)=gi+1(xi+1),i=0 to n2.

Hay polinomiosn cúbicosgi(x) y cada polinomio cúbico tiene cuatro coeficientes libres; por lo tanto, hay un total de coeficientes4n desconocidos. El número de ecuaciones de restricción de (8.7) - (8.10) es2n+2(n1)=4n2. Con4n2 restricciones e4n incógnitas, se requieren dos condiciones más para una solución única. Estas suelen elegirse para ser condiciones extra en el primerg0(x) y últimogn1(x) polinomios. Discutiremos estas condiciones adicionales más adelante.

Ahora se procede a determinar ecuaciones para los coeficientes desconocidos de los polinomios cúbicos. Los polinomios y sus dos primeras derivadas están dados por

gi(x)=ai(xxi)3+bi(xxi)2+ci(xxi)+digi(x)=3ai(xxi)2+2bi(xxi)+cigi(x)=6ai(xxi)+2bi

Consideraremos a su vez las cuatro condiciones (8.7) - (8.10). Desde (8.7) y (8.11), tenemos

di=yi,i=0 to n1,

que resuelve directamente para todos losd coeficientes.

Para satisfacer (8.8), primero definimos

hi=xi+1xi,

y

fi=yi+1yi.

Ahora, a partir de (8.8) y (8.11), usando (8.14), obtenemos lasn ecuaciones

aih3i+bih2i+cihi=fi,i=0 to n1.

De (8.9) y (8.12) obtenemos lasn1 ecuaciones

3aih2i+2bihi+ci=ci+1,i=0 to n2

De (8.10) y (8.13) obtenemos lasn1 ecuaciones

3aihi+bi=bi+1i=0 to n2

Será útil incluir una definición del coeficientebn, que ahora falta. (El índice de los coeficientes polinomiales cúbicos sólo va hastan1.) Simplemente extendemos (8.19) hastai=n1 y así escribimos

3an1hn1+bn1=bn,

que puede ser visto como una definición debn.

Ahora se procede a eliminar los conjuntos de coeficientesa - y c (con losd -coeficientes ya eliminados en (8.14)) para encontrar un sistema de ecuaciones lineales para losb -coeficientes. A partir de (8.19) y(8.20), podemos resolver para losna -coeficientes para encontrar

ai=13hi(bi+1bi),i=0 to n1.

A partir de (8.17), podemos resolver para losn coeficientes c de la siguiente manera:

ci=1hi(fiaih3ibih2i)=1hi(fi13hi(bi+1bi)h3ibih2i)=fihi13hi(bi+1+2bi),i=0 to n1

Ahora podemos encontrar una ecuación para losb -coeficientes sustituyendo(8.21) y(8.22) en(8.18):

3(13hi(bi+1bi))h2i+2bihi+(fihi13hi(bi+1+2bi))=(fi+1hi+113hi+1(bi+2+2bi+1)),

lo que simplifica a

13hibi+23(hi+hi+1)bi+1+13hi+1bi+2=fi+1hi+1fihi

una ecuación que es válida parai=0 an2. Por lo tanto, (8.23) representann1 ecuaciones para losb coeficientesn+1 desconocidos. En consecuencia, escribimos la ecuación matricial para losb -coeficientes, dejando ausentes la primera y última fila, como

( missing 13h023(h0+h1)13h100000013hn223(hn2+hn1)13hn1 missing )(b0b1bn1bn)( missing f1h1f0h0fn1hn1fn2hn2 missing ).

Una vez que se especifican las ecuaciones primera y última faltantes, la ecuación matricial para losb coeficientes se puede resolver mediante eliminación gaussiana. Y una vez determinados losb -coeficientes, losc coeficientesa - y -también se pueden determinar a partir de (8.21) y (8.22), con losd -coeficientes ya conocidos a partir de (8.14). Los polinomios cúbicos por tramos, entonces, son conocidos yg(x) pueden ser utilizados para la interpolación a cualquier valor quex satisfagax0xxn.

La primera y última ecuaciones faltantes se pueden especificar de varias maneras, y aquí mostramos las dos formas que están permitidas por la función de MATLAB spline.m La primera forma se debe usar cuando la derivadag(x) es conocida en los puntos finalesx0 y esxn; decir, supongamos que conocemos los valores deα yβ tal

g0(x0)=α,gn1(xn)=β.

A partir del valor conocido deα, y usando (8.12) y (8.22), tenemos

α=c0=f0h013h0(b1+2b0)

Por lo tanto, se determina que la primera ecuación que falta es

23h0b0+13h0b1=f0h0α

Desde el valor conocido deβ, y usando(8.12),(8.21), y(8.22), tenemos

β=3an1h2n1+2bn1hn1+cn1=3(13hn1(bnbn1))h2n1+2bn1hn1+(fn1hn113hn1(bn+2bn1)),

lo que simplifica a

13hn1bn1+23hn1bn=βfn1hn1

para ser utilizada como la última ecuación faltante.

La segunda forma de especificar la primera y última ecuaciones faltantes se llama la condición no-un nudo, que asume que

g0(x)=g1(x),gn2(x)=gn1(x)

Considerando la primera de estas ecuaciones, desde (8.11) tenemos

a0(xx0)3+b0(xx0)2+c0(xx0)+d0

=a1(xx1)3+b1(xx1)2+c1(xx1)+d1.

Ahora se puede probar que dos polinomios cúbicos son idénticos si a algún valor dex, los polinomios y sus tres primeras derivadas son idénticos. Nuestras condiciones de continuidad enx=x1 ya requieren que a este valor dex estos dos polinomios y sus dos primeras derivadas sean idénticos. Los polinomios en sí serán idénticos, entonces, si sus terceras derivadas también son idénticas enx=x1, o si

a0=a1.

Desde (8.21), tenemos

13h0(b1b0)=13h1(b2b1),

o después de la simplificación

h1b0(h0+h1)b1+h0b2=0,

lo que nos proporciona nuestra primera ecuación faltante. Un argumento similar enx=xn1 también nos proporciona nuestra última ecuación,

hn1bn2(hn2+hn1)bn1+hn2bn=0.

Las subrutinas de MATLAB spline.m y ppval.m se pueden utilizar para interpolación spline cúbica (ver también interp1.m). Ilustraré estas rutinas en clase y publicaré código de muestra en el sitio web del curso.

Interpolación multidimensional

Supongamos que estamos interpolando el valor de una función de dos variables,

z=f(x,y).

Los valores conocidos vienen dados por

zij=f(xi,yj),

coni=0,1,,n yj=0,1,,n. Tenga en cuenta que los(x,y) puntos enf(x,y) los que se conocen se encuentran en una cuadrícula en elxy plano.

z=g(x,y)Sea la función de interpolación, satisfaciendozij=g(xi,yj). Una interpolación bidimensional para encontrar el valor deg en el punto se(x,y) puede hacer primero realizando interpolacionesn+1 unidimensionales en ypara encontrar el valor deg en losn+1 puntos(x0,y),(x1,y),,(xn,y), seguido de una sola interpolación unidimensional enx para encontrar el valor deg at(x,y).

En otras palabras, la interpolación bidimensional en una cuadrícula de dimensión(n+1)×(n+1) se realiza primero realizando interpolacionesn+1 unidimensionales al valory seguido de una sola interpolación unidimensional al valorx. La interpolación bidimensional puede generalizarse a dimensiones superiores. Las funciones de MATLAB para realizar interpolación bidimensional y tridimensional son interp2.m e interp3.m.


This page titled 8: Interpolación is shared under a CC BY 3.0 license and was authored, remixed, and/or curated by Jeffrey R. Chasnov via source content that was edited to the style and standards of the LibreTexts platform.

Support Center

How can we help?