Ir al contenido principal

4.1 Interpolación: Lineal y cuadrática

4.1 Interpolación: Lineal y cuadrática

  Interpolación

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.

 

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 $\cdots$ xn
y y0 y1 y2 $\cdots$ yn
El objetivo es encontrar una función continua lo más sencilla posible tal que
 
f(xi) = yi   $\displaystyle (0 \leq i \leq n)$ (67)

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

Entradas populares de este blog

6.3 Métodos de pasos múltiples

6.3 Métodos de pasos múltiples Los métodos de un paso descritos en las secciones anteriores utilizan información en un solo punto xi para predecir un valor de la variable dependiente yi+1 en un punto futuro xi+1. Procedimientos alternativos, llamados métodos multipaso, se basan en el conocimiento de que una vez empezado el cálculo, se tiene información valiosa de los puntos anteriores y esta a nuestra disposición. La curvatura de las líneas que conectan esos valores previos proporciona información con respecto a la trayectoria de la solución. Los métodos multipaso que exploraremos aprovechan esta información para resolver las EDO. Antes de describir las versiones de orden superior, presentaremos un método simple de segundo orden que sirve para demostrar las características generales de los procedimientos multipaso. Observe la ecuación ec. 2  alcanza ) a expensas de emplear un tamaño de paso mas grande, 2h. Además, ob

6.2 Métodos de un paso: Método de Euler, Método de Euler mejorado y Método de Runge-Kutta

6.2 Métodos de un paso: Método de Euler, Método de Euler mejorado y Método de Runge-Kutta   Método de Euler El método de Euler es un procedimiento de integración numérica para resolver ecuaciones diferenciales ordinarias a partir de un valor inicial dado. El método de Euler es el más simple de los métodos numéricos para resolver un problema del siguiente tipo: Consiste en multiplicar los intervalos que van de x0 a xf en n subintervalos de ancho h; Osea: de manera que se obtiene un conjunto discreto de n+1 puntos: x0, x1, x2, ... , xn del intervalo de interés [x0,xf]. Para cualquiera de estos puntos de cumple que:  0<i<n. La condición inicial y(x0)=y0, representa el punto P0=(x0,y0) por donde pasa la curva solución de la ecuación del plantamiento inicial, la cual se denotará cmo F(x)=y. Ya teniendo el punto P0 se puede evaluar la primera derivada de F(x) en ese punto; por lo tanto: Con esta información se traza una recta, aquella que pasa por

6.1 Fundamentos de Ecuaciones Diferenciales

UNIDAD 6 ECUACIONES DIFERENCIALES ORDINARIAS 6.1 Fundamentos de Ecuaciones Diferenciales Una  ecuación diferencial  es una  ecuación  en la que intervienen  derivadas  de una o más funciones desconocidas. Dependiendo del número de variables independientes respecto de las que se deriva, las ecuaciones diferenciales se dividen en Ecuaciones diferenciales ordinarias : aquellas que contienen derivadas respecto a una sola variable independiente. Ecuaciones en derivadas parciales : aquellas que contienen derivadas respecto a dos o más variables. Una ecuación diferencial es una ecuación que incluye expresiones o términos que involucran a una función matemática incógnita y sus derivadas. Algunos ejemplos de ecuaciones diferenciales son: es una ecuación diferencial ordinaria, donde   representa una función no especificada de la variable independiente  , es decir,  ,   es la derivada de   con respecto a  . La expresión es una ecuación en derivadas pa