H. Integración Numérica

Anuncio
ESCUELA SUPERIOR DE NÁUTICA Y MÁQUINAS NAVALES / NAUTIKAKO
ETA ITSASONTZI MAKINETAKO GOI ESKOLA TEKNIKOA
FUNDAMENTOS MATEMÁTICOS
G - Métodos de Interpolación
Polinomio de interpolación de Lagrange. Polinomio de interpolación de Newton.
Interpolación por el método de los Mínimos Cuadrados (Cuadratura gaussiana).
Objetivo:
El alumno debe llegar a la interpolación de una función y = f(x), utilizando diversos
métodos, por medio de polinomios de grado n, a partir del valor que toma la función en
n puntos determinados. Se llegará a los multiplicadores de Lagrange, que se utilizan
mucho en el Cálculo Numérico. Con su ayuda podemos obtener fácilmente polinomios
de interpolación para funciones. Es interesante hacer alguna práctica de su obtención de
manera manual, aunque el alumno llegue también a utilizar métodos informáticos
directos para obtenerla. Será importante en todo momento controlar el error de
aproximación cometido al sustituir la función f(x) por su correspondiente polinomio de
interpolación p(x).
Introducción:
Consideremos que nos encontramos en la siguiente situación, conocemos el valor que
toma la función f(x) en una serie de n puntos x0, x1, …, xn (véase el gráfico), pero sin
embargo, no conocemos la forma explícita de dicha función f(x). Lo que hemos de
hacer es interpolar esos datos, para obtener un polinomio (polinomio de interpolación)
que cumpla f(x )≈ p(x).
Por lo general, hallamos el polinomio de interpolación p(x) cuando disponemos de un
conjunto n de datos obtenidos experimentalmente, de esta manera manejamos el
polinomio p(x) como una aproximación a la función f(x). En ocasiones, también
podemos obtener el polinomio de interpolación p(x) de una función f(x) conocida, pero
de enorme complejidad, puesto que un polinomio siempre es más fácil de manejar.
1
G1. Polinomio de interpolación de Lagrange
Sea una función f(x), de tal manera que conozcamos su valor en cada uno de n+1
puntos: f(x0), f(x1), …, f(xn).
Consideremos las siguientes expresiones polinómicas (llamadas “multiplicadores o
coeficientes de Lagrange”):
Lk ( x ) 
( x  x0 )  ( x  x1 )  ...  ( x  xk 1 )  ( x  xk 1 )  ...  ( x  xn )
( xk  x0 )  ( xk  x1 )  ...  ( xk  xk 1 )  ( xk  xk 1 )  ...  ( xk  xn )
Son n+1 multiplicadores, para k=0, 1, 2, …, n+1.
Se suelen expresar abreviadamente en la forma:
n
Lk ( x )  
i 0
i k
( x  xi )
( xk  xi )
(i = 0, 1, …, k)
Es decir, para el multiplicador k-ésimo, están en el numerador los productos de todos
los posibles (x – xi) excepto el (x – xk), y en el denominador los productos de todos los
(xk – xi) excepto el (xk – xk).
Propiedad de los coeficientes Lk(x):
Tal como están definidos estos coeficientes, es obvio que poseen la siguiente
propiedad: El coeficiente Lk(x) se anula en cada punto xi, excepto en el xk que tiene el
valor 1 (valor máximo).
Consideremos un ejemplo gráfico, supongamos como soporte los seis puntos
siguientes, x0 = 1, x1 = 3, x2 = 4, x3 = 6, x4 = 8, x5 = 9.
Por ejemplo, L3(x) se obtendría así:
( x  1)  ( x  3)  ( x  4)  ( x  8)  ( x  9)
L3 ( x) 
(6  1)  (6  3)  (6  4)  (6  8)  (6  9)
Una expresión polinómica que al representarla gráficamente queda:
Donde se aprecia la propiedad indicada.
Pues bien, el polinomio de interpolación deLagrange se obtiene como la siguiente
combinación lineal de estos Lk(x):
n
p( x)   f ( xk ) Lk ( x )
k 0
2
[1]
EJEMPLO: Consideremos la función f(x)=ex. Supongamos conocido el valor que
toma esta función en los cuatro puntos: x0=2, x1=2.5, x2=3, x3=4, es decir:
f(x0) = 7.3890, f(x1) = 12.1825, f(x2) = 20.0855, f(x3) = 54.5980
Pasemos a hallar el polinomio de interpolación de Lagrange:
( x  2.5) ( x  3) ( x  4)
  x 3  9.5 x 2  29.5 x  30
(2  2.5) (2  3) (2  4)
( x  2) ( x  3) ( x  4)
L1 ( x) 
 2.66667 x3  24 x 2  69.3333 x  64
(2.5  2) (2.5  3) (2.5  4)
( x  2) ( x  2.5) ( x  4)
L2 ( x ) 
 2 x 3  17 x 2  46 x  40
(3  2) (3  2.5) (3  4)
( x  2) ( x  2.5) ( x  3)
L3 ( x ) 
 0.3333 x 3  3.5 x 2  6.16667 x  5
(4  2) (4  2.5) (4  3)
L0 ( x) 
Por tanto, el polinomio de interpolación de Lagrange será el siguiente:
p(x) = f(x0) L0(x) + f(x1) L1(x) + f(x2) L2(x) + f(x3) L3(x)
es decir,
p(x) = 7.3890 L0(x) + 12.1825 L1(x) + 20.0855 L2(x) + 54.5980 L3(x)
que tras sustituir los Lk(x) hallados queda:
p(x) = 3.12601 x3 – 17.2259 x2 + 39.432 x – 27.5792
Para comprobar la gran aproximación existente entre este polinomio y la función
f(x)=ex, correspondiente al intervalo entre los puntos 2 y 4, podemos representarlas
gráficamente:
Las dos gráficas coinciden en el rango de x 2-4.
3
G2. Polinomio de interpolación de Newton
Puede demostrarse matemáticamente que dado n+1 puntos xi y los valores que toma
una función f(x) en cada uno de esos puntos, existe un único polinomio p(x) de grado n
que aproxima con un mínimo error esa función en el rango de puntos xi . Ese polinomio
es el llamado polinomio de interpolación de Lagrange que puede obtenerse de la forma
que hemos visto. El método de interpolación de Newton es otra manera de obtener este
mismo polinomio p(x).
El método de interpolación de Newton ha venido utilizándose por su facilidad de
cálculo, sobre todo en épocas en las que no se disponía las máquinas que ahora
disponemos. Aunque este método pueda parecer más largo que el de Lagrange, su
ventaja está en que utiliza un algoritmo adaptativo, lo que desde el punto de vista
computacional es muy ventajoso (un computador emplea mucho menos tiempo para
obtenerlo).
La fórmula de interpolación de Newton viene dada por:
i 1
n
p( x)   f x0 , x1 ,..., xi
i 0
x  x 
j
[2]
j 0
Siendo f x0 , x1 ,..., xi las llamadas diferencias divididas1 de f para los x0, x1, …, xn.
Las diferencias divididas son unos números reales que suelen obtenerse fácilmente a
partir de una tabla como la siguiente (para el caso de 4 puntos)
x0
f ( x0 )
f x0 , x1
x1
f ( x1 )
f x0 , x1 , x2
f x1 , x2
x2
f ( x2 )
f x0 , x1 , x2 , x3
f x1 , x2 , x3
f x2 , x3
x3
f ( x3 )
f x2 , x3  f x1 , x2
, es decir, la diferencia de las
x3  x1
dos cantidades que se encuentran a su izquierda, dividida entre la resta de los xi de los
extremos de su paréntesis angular.
Donde por ejemplo
Otro ejemplo:
f x1 , x2 , x3 
f x0 , x1 , x2 , x3 
f x1 , x2 , x3  f x0 , x1 , x2
.
x3  x0
1
Las diferencia divididas, así como las diferencias finitas aparecen en las tablas de los libros de Cálculo
Numérico.
4
Calculada toda esta tabla de diferencias divididas, el polinomio de interpolación se
obtiene según la fórmula [2]:
p( x)  f ( x0 )  f x0 , x1 ( x  x0 )  f x0 , x1 , x2 ( x  x0 )( x  x1 ) 
 f x0 , x1 , x2 , x3 ( x  x0 )( x  x1 )( x  x2 )
Como ejemplo práctico vamos a volver a obtener el polinomio de interpolación para la
función f(x) = ex, en los puntos{2, 2.5, 3, 4}, pero en esta ocasión lo hacemos por el
método de Newton.
Las diferencias divididas para este caso son:
x0  2.0 7.38906
9.58688
x1  2.5 12.1825
6.21912
15.806
x2  3.0 20.0855
3.1260
12.471133
34.5127
x3  4.0 54.5982
A continuación establecemos el polinomio de interpolación según la fórmula [2]:
p(x) = 7.38906 + 9.58688 (x – 2) + 6.21912 (x – 2) (x – 2.5) +
+ 3.1260 (x – 2) (x – 2.5) (x – 3)
Después de reducir los términos llegamos a:
p(x) = 3.126 x3 – 17.2259 x2 + 39.4318 x – 27.5791
que al compararlo con el obtenido por el método de Lagrange observamos que son
básicamente el mismo polinomio.
5
G3. Método de los Mínimos Cuadrados (Cuadratura Gaussiana)
Supongamos que al realizar una serie de mediciones de dos variables (x, y) , se ha
obtenido una distribución de pares de valores o puntos:
(x1, y1) , (x2, y2) , … , (xi, yi) , … , (xn, yn) .
Se trata de buscar un polinomio (grado m) que se ajuste lo mejor posible a esa
distribución de puntos, en la forma:
y = axm + bxm-1+ …+ c
El método de los mínimos cuadrados busca una curva, como se indica en la gráfica, de
tal manera que se minimice la suma de los cuadrados de los errores, ei , cometidos al
sustituir los puntos por la ordenada y(xi).
Matemáticamente equivale a un problema de hallar un mínimo para una función de
m+1 variables:
f(a, b, …, c)
Nótese que las variables son los coeficientes del polinomio a hallar.
Para aclarar los conceptos apliquemos el método para el caso de un polinomio de
grado 2 (función polinómica), es decir, mediante una parábola:
y = ax2 + bx+ c
Si observamos la figura de arriba, tenemos en el punto i-ésimo un error:
ei = axi2 + bxi+ c – yi → ei2 = (axi2 + bxi+ c – yi )2 .
Por tanto la suma de los cuadrados de los errores es:
n
n
i 1
i 1
2
 ei2    axi2  bxi  c  yi   f (a, b, c)
Se trata, pues, de minimizar esta función de tres variables, f(a, b, c)
6
Las condiciones de extremo se dan allí donde se anulan las derivadas primeras de f :
n
f a '   2  axi2  bxi  c  yi  . xi2  0
i 1
n
fb '   2  axi2  bxi  c  yi  . xi  0
i 1
n
f c '   2  axi2  bxi  c  yi  .1  0
i 1
Sacando el factor 2, y simplificándolo tenemos las condiciones de mínimo:
n
  ax
2
i
 bxi  c  yi  . xi2  0
i 1
n
  ax
2
i
 bxi  c  yi  . xi  0
i 1
n
  ax
2
i
 bxi  c  yi  .1  0
i 1
Que es un sistema de 3 ecuaciones con e incógnitas, del cual se hallan a, b, c.
7
* Un ejemplo de cuadratura gaussiana.
Por medio de cuadratura gaussiana hay que hallar un polinomio de interpolación (de
grado 2) para la tabla de datos siguiente: x1 = 1, x2 = 2, x3 = 3 .
y1 = 3, y2 = 4, y3 = 6 .
Solución:
En este caso vamos a tomar para la cuadratura gaussiana un polinomio de grado 2,
que tiene la forma: P(x) = a x2+b x + c.
Las condiciones de extremo para este caso son las soluciones del sistema:
(a.12  b.1  c  3).12  (a.22  b.2  c  4).22  (a.32  b.3  c  6).32  0

2
1
2
1
2
1
 (a.1  b.1  c  3).1  (a.2  b.2  c  4).2  (a.3  b.3  c  6).3  0
(a.12  b.1  c  3).10  (a.2 2  b.2  c  4).20  (a.32  b.3  c  6).30  0

Operando, queda reducido al sistema de ecuaciones lineales:
98 a  36 b  14 c  73  0

 36 a  14 b  6 c  29  0
 14 a  6 b  3 c  13  0

Cuyas soluciones son: a=5, b=-18.5, c= 18.
El polinomio de interpolación por cuadratura gaussiana es p(x) = 5x2 -18.5 x + 18.
8
* Splines (Special Lines) cúbicas
Si como polinomio interpolatorio tomamos un polinomio de grado 3:
P(x) = ax3 + bx2 + cx + d, recibe el nombre de “Spline”.
* Interpolación de datos 2-D con MATLAB.
Sean conocidos una tabla de datos:
x = [1, 1.2, 1.3, 1.5, …]
y = [4.254, 3.097, 5.671, …]
El primer punto sería el (1, 4.254), el segundo el (1.2, 3.097), etc.
La manera de realizar la interpolación de estos datos medinte la función interp1 de
MATLAB es:
>> yi = interp1(x, y, xi, método);
>> plot(x, y, 'o', xi, yi);
Donde pondremos en método el método de interpolación deseado:
Métodos
- ‘nearest’
- ‘linear’
- ‘spline’
- ‘cubic’
.
(por defecto)
Cubic spline interpolation
Por otra parte la ‘o’ en el interior del plot señala cada punto con un circulito (una ‘o’).
Hay otras opciones que pueden verse en el manual del MATLAB.
9
Ejemplo 1.
>> x = 0:10; % se trata del rango 0, 1 2, …, 10
>> y = exp(x);
>> xi = 0:0.2:10;
>> yi = interp1(x, y, xi);
>> plot(x, y, 'o‘ , xi, yi);
Observar que al no indicarse el tipo de interpolación en el interp1 se realiza una
interpolación lineal (por defecto).
10
Ejemplo 2.
Hay que interpolar mediante ‘spline’ los datos de la tabla siguiente:
x 2 2.1 2.6 3 3.2 3.7 4 4.3
y 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3
Solución:
>> tab = [2 2.1 2.6 3 3.2 3.7 4 4.3; 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3]
>> x = tab(1, :); y = tab(2, :);
>> xi = 2:0.25:4.5;
>> yi = interp1(x, y, xi, 'spline');
>> plot(x, y, 'o', xi, yi)
11
Ejemplo 3:
Tenemos dos vectores con los censos poblacionales (por décadas) de una nación en el
siglo XX, en millones de personas:
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
Por interpolación podemos estimar la población en cualquier año:
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
>> interp1(t, p, 1975)
ans =
214.8585
Siguiendo este mismo ejemplo, podríamos representar en un diagrama la población
anual:
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
>> x = 1900:1:2000;
>> y = interp1(t, p, x, 'spline'); plot(t,p,'o',x,y)
12
Descargar