4.1 Interpolación: Lineal y cuadrática
La interpolación lineal es un caso particular de la Interpolación general de Newton.
Con el polinomio de interpolación de Newton se logra aproximar un valor de la función f(x) en un valor desconocido de x. El caso particular, para que una interpolación sea lineal es en el que se utiliza un polinomio de interpolación de grado 1,
Como dijimos, cuando las variaciones de la función son proporcionales (o casi proporcionales) a los de la variable independiente se puede admitir que dicha función es lineal y usar para estimar los valores la interpolación lineal..
Sean dos puntos (xo, yo), (x1, y1), la interpolación lineal consiste en hallar una estimación del valor y, para un valor x tal que x0<x<x1. Teniendo en cuenta que la ecuación de la recta que pasa por esos dos puntos es:
INTERPOLACIÓN CUADRÁTICA.
Cuando el polinomio que conviene es de 2º grado la interpolación recibe el nombre de cuadrática. El polinomio interpolador es único, luego como se encuentre da igual. sin embargo, a veces los cálculos son muy laboriosos y es preferible utilizar un método que otro. A la vista de los datos se decide.
Lagrange (1736-1813) dio una manera simplificada de calcular los polinomios interpoladores de grado n Para
el caso de un polinomio de 2º grado que pasa por los puntos (x0, y0 ), (x1, y1), (x2, y2):El error en la interpolación lineal resulta de aproximar una curva con una línea recta.
Estrategias:
– Disminuir el tamaño del intervalo.
– Introducir alguna curvatura en la línea que conecta los puntos.
Si tres puntos de los datos están disponibles, esto puede realizarse con un polinomio de segundo grado (parábola).
Puede utilizarse un procedimiento simple para determinar los valores de los coeficientes.
Sustituyendo las ecuaciones anteriores, y evaluando en x = x1:
Sustituyendo nuevamente, y ahora evaluando en x = x2:
La interpolación se dirá lineal cuando sólo se tomen dos puntos y cuadrática cuando se tomen tres.
Supongamos que disponemos de las siguientes parejas de datos:
El objetivo es encontrar una función continua lo más sencilla posible
tal que
Se dice entonces que la función f(x) definida por la ecuación (67) es una función de interpolación de los datos representados en la tabla. Existen muchas formas de definir las funciones de interpolación, lo que da origen a un gran número de métodos (polinomios de interpolación de Newton, interpolación de Lagrange, interpolación de Hermite, etc). Sin embargo, nos centraremos exclusivamente en dos funciones de interpolación:
Interpolación
Interpolación: Lineal y cuadrática
Con el polinomio de interpolación de Newton se logra aproximar un valor de la función f(x) en un valor desconocido de x. El caso particular, para que una interpolación sea lineal es en el que se utiliza un polinomio de interpolación de grado 1,
Como dijimos, cuando las variaciones de la función son proporcionales (o casi proporcionales) a los de la variable independiente se puede admitir que dicha función es lineal y usar para estimar los valores la interpolación lineal..
Sean dos puntos (xo, yo), (x1, y1), la interpolación lineal consiste en hallar una estimación del valor y, para un valor x tal que x0<x<x1. Teniendo en cuenta que la ecuación de la recta que pasa por esos dos puntos es:
INTERPOLACIÓN CUADRÁTICA.
Cuando el polinomio que conviene es de 2º grado la interpolación recibe el nombre de cuadrática. El polinomio interpolador es único, luego como se encuentre da igual. sin embargo, a veces los cálculos son muy laboriosos y es preferible utilizar un método que otro. A la vista de los datos se decide.
Lagrange (1736-1813) dio una manera simplificada de calcular los polinomios interpoladores de grado n Para
el caso de un polinomio de 2º grado que pasa por los puntos (x0, y0 ), (x1, y1), (x2, y2):El error en la interpolación lineal resulta de aproximar una curva con una línea recta.
Estrategias:
– Disminuir el tamaño del intervalo.
– Introducir alguna curvatura en la línea que conecta los puntos.
Si tres puntos de los datos están disponibles, esto puede realizarse con un polinomio de segundo grado (parábola).
Puede utilizarse un procedimiento simple para determinar los valores de los coeficientes.
Sustituyendo las ecuaciones anteriores, y evaluando en x = x1:
Sustituyendo nuevamente, y ahora evaluando en x = x2:
La interpolación se dirá lineal cuando sólo se tomen dos puntos y cuadrática cuando se tomen tres.
Nos centraremos ahora en el problema de obtener, a partir de una tabla de parejas (x,f(x)) definida en un cierto intervalo [a,b], el valor de la función para cualquier xperteneciente a dicho intervalo.
Supongamos que disponemos de las siguientes parejas de datos:
x | x0 | x1 | x2 | xn | |
y | y0 | y1 | y2 | yn |
Se dice entonces que la función f(x) definida por la ecuación (67) es una función de interpolación de los datos representados en la tabla. Existen muchas formas de definir las funciones de interpolación, lo que da origen a un gran número de métodos (polinomios de interpolación de Newton, interpolación de Lagrange, interpolación de Hermite, etc). Sin embargo, nos centraremos exclusivamente en dos funciones de interpolación:
- 1.
- Los polinomios de interpolación de Lagrange.
- 2.
- Las funciones de interpolación splines. Estas funciones son especialmente importantes debido a su idoneidad en los cálculos realizados con ordenador.
- CODIGO:
Interpolación con MATLAB. Extrapolación
Interpolación lineal
Hay varios métodos de interpolar datos, el más simple es la interpolación lineal, que entenderemos con el siguiente esquema:
Conocemos los datos de (x1, y1) y de (x2, y2) y queremos conocer el valor desconocido de y cuando se porporciona la abscisa x1<x<x2. Si suponemos que los puntos 1 y 2 están unidos por una recta, calculamos fácilmente el valor de y mediante la siguiente relación
Este procedimiento se denomina interpolación lineal. MATLAB dispone para este propósito de la función interp1. Creamos un script y seleccionamos el procedimiento por defecto 'linear'
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44]; y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52]; xx=[1.0 2.0 3.5 5.5 8.0]; yy=interp1(x,y,xx,'linear'); disp([xx' yy'])
Corremos el script en la ventana de comandos
1.0000 2.1500 2.0000 0.2491 3.5000 7.6073 5.5000 6.8489 8.0000 3.1674
Completamos el script para incluir la representación gráfica de los datos (color azul) y los interpolados linealmente (color rojo)
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44]; y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52]; xx=[1.0 2.0 3.5 5.5 8.0]; yy=interp1(x,y,xx,'linear'); disp([xx' yy']) hold on plot(x,y,'-bo','markersize',3,'markerfacecolor','b') plot(xx,yy,'ro','markersize',4,'markerfacecolor','r') xlabel('x') ylabel('y') grid on title('Interpolación lineal'); hold off
Con la interpolación lineal hay que ser cuidadoso. En la figura de la izquierda tenemos la aproximación lineal (en rojo) de una función (en negro) que es muy pobre ya que los puntos están muy separados. Añadiendo un punto intermedio, mejora la aproximación lineal.
Splines
Es un procedimiento de interpolación que produce muy buenos resultados.
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44]; y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52]; hold on plot(x,y,'bo','markersize',4,'markerfacecolor','b') z=@(xx) interp1(x,y,xx,'spline'); fplot(z,[x(1),x(end)]) hold off xlabel('x') ylabel('y') grid on title('Interpolación splines')
Extrapolación
Es la estimación de un valor de x, que está fuera del intervalo de datos. En el ejemplo anterior, si x está comprendido en el intervalo 0.97<x<9.44 se dice que es interpolación y si x<0.97 ó x>9.44 se dice que es extrapolación.
El ejemplo más significativo es la predicción de la población de Estados Unidos en el año 2000, conocido los censos en los siguientes años (millones de habitantes)
Año 1920 1930 1940 1950 1960 1970 1980 1990 Población 106.46 123.08 132.12 152.27 180.67 205.05 227.23 249.46 x=[1920 1930 1940 1950 1960 1970 1980 1990]; y=[106.46 123.08 132.12 152.27 180.67 205.05 227.23 249.46]; n=length(x); %número de pares de datos p=polyfit(x,y,n-1); %A=vander(x); %p=A\y' %sistema de ecuaciones lineales, y' es vector columna z=@(xx) polyval(p,xx); fprintf('Población en el año 2000, %3.2f\n',polyval(p,2000)) hold on plot(x,y,'bo','markersize',3,'markerfacecolor','b') fplot(z,[1920,2000]) xlabel('x') ylabel('y') grid on title('Extrapolación'); hold off
Aparece un aviso en la ventana de comandos, al llamar a la función polyfit para calcular los coeficientes del polinomio. En la página anterior, elaboramos una alternativa (dos líneas comentadas %) para evitar el aviso. Véase 'Interpolación de Lagrange'
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. > In polyfit (line 75) In xxx (line 4) Población en el año 2000, 168.81
La población de Estados Unidos estimada para el año 2000 era de 195.77 millones de habitantes, en contraste con la población real ese año de 281.42 millones. Una diferencia significativa, por lo que hemos de tener cuidado con el procedimiento de extrapolación.
Comentarios
Publicar un comentario