-
Presentado por:
Mera Carrasco, Junior Lino
Malhaber Montenegro, Miguel Angel
Asesor:Dr. Collantes Santisteban, Luis Jaime
UNPRG
2014
Metodos Numericos para el
Calculo Cientfico con Matlab
TOMO 2
-
UNIVERSIDAD NACIONAL
PEDRO RUIZ GALLO
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS
ESCUELA PROFESIONAL DE MATEMATICA
Metodos Numericos para el CalculoCientfico con Matlab
TOMO 2
INTERPOLACION
Presentado por:
Mera Carrasco Junior Lino
Malhaber Montenegro Miguel Angel
Asesor:
Dr. Collantes Santisteban Luis Jaime
LAMBAYEQUE PERU
2014
-
Introduccion
La presentacion de estos tomos tiene su origen en los Seminarios denominados FUN-
DAMENTOS DE ECUACIONES NO LINEALES, INTERPOLACION, DIFEREN-
CIACION E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO y
CALCULO CIENTIFICO DE ECUACIONES NO LINEALES, INTERPOLACION,
DIFERENCIACION E INTEGRACION NUMERICA CON MATLAB desarrollados
en Diciembre del 2012 como investigacion de los cursos de Seminario de Matematica
Pura y Aplicada de la carrera profesional de Matematicas de la Universidad Nacional
Pedro Ruiz Gallo con el asesoramiento del Dr. Luis Jaime Collantes Santisteban, dichos
trabajos enfocaban la parte teorica y practica de algunos temas del Calculo Cientfico.
Estos tomos no son documentos comerciales, por el contrario decidimos trabajar para
que se encuentre al alcance de todos, es bien sabido la dificultad que tienen estudiantes
y profesionales de ingeniera, ciencias medicas, ciencias economicas entre otras para ide-
alizar sus problemas y desarrollar un modelo matematico adecuado en algunos casos es
difcil porque la aplicacion resulta excesivamente compleja o los metodos analiticos no se
adecuan muy bien a sus resultados por ello es conveniente el uso de metodos numericos
los cuales conducen a soluciones aproximadas pero mas manejables y se puede dar uso
a un ordenador provisto de un software adecuado, para nuestro caso Matlab.
Metodos Numericos para el Calculo Cientfico con Matlab esta divido en 7 tomos:
TOMO 0 Conceptos Previos
TOMO 1 Ecuaciones No Lineales
TOMO 2 Interpolacion
TOMO 3 Diferenciacion e Integracion Numerica
TOMO 4 Ecuaciones Lineales
TOMO 5 Ecuaciones Diferenciales Ordinarias
TOMO 6 Ecuaciones Diferenciales Parciales
-
Metodos Numericos para el Calculo Cientfico con Matlab, explicara de manera sencilla
y con ejemplos el uso y la programacion de Interfaces Graficas de Usuario (GUI) as co-
mo el clasico uso de los archivos .m y por supuesto la solucion manual.
Este TOMO denominado Interpolacion esta dividido en tres captulos:
En el primero revisaremos la parte teorica sobre Interpolacion en la busqueda de la con-
struccion de una funcion matematica a partir de ciertos puntos dados y los diferentes
metodos que pueden surgir.
En el segundo captulo solucionaremos problemas mediante el uso de nuestras Interfaces
Graficas con los distintos metodos de solucion y verificaremos cual es el mas efectivo
para distintos problemas.
Dejaremos para el final los codigo fuente utilizados en la creacion de las interfaces grafi-
cas.
Por favor, soy Rodney McKay, difcil tarda unos segundos. Imposible, un par de min-
utos. Dr. Rodney McKay - Stargate Atlantis
-
INDICE GENERAL
1. Interpolacion 6
1.1. Interpolacion polinomica . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1. Polinomio de interpolacion de Lagrange . . . . . . . . . . . . . . . 8
1.1.2. Fenomeno de Runge . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.3. Interpolacion de Chebyshev . . . . . . . . . . . . . . . . . . . . . 14
1.1.4. Interpolacion trigonometrica . . . . . . . . . . . . . . . . . . . . . 16
1.2. Metodo de Newton o de diferencias divididas . . . . . . . . . . . . . . . . 18
1.3. Interpolacion lineal a trozos . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4. Aproximacion por funciones spline . . . . . . . . . . . . . . . . . . . . . . 23
1.5. Metodo de mnimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . 28
2. Interpolacion y aproximacion 31
2.1. Comparacion de Metodos Iteractivos . . . . . . . . . . . . . . . . . . . . 33
3. Codigo Fuente de los GUIS 45
3.1. Interpolacion de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2. Diferencias Divididas Abajo . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3. Diferencias Divididas Arriba . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4. Interpolacion a Trozos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5. Minimos Cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
-
Captulo 1
INTERPOLACION
1.1. Interpolacion polinomica
Una funcion de interpolacion es aquella que pasa a traves de puntos dados como datos
{(xi, yi), i = 0, 1, 2, . . . , n} (los puntos xi son todos distintos y se llaman nudos), los
cuales se muestran comunmente por medio de una tabla de valores o se toman directa-
mente de una funcion dada, obtenida por muestreo o experimentacion. Suponemos que
los datos corresponden a los valores de una funcion f desconocida (a veces es conocida,
pero queremos cambiarla por una funcion mas sencilla de calcular). El ajuste de cur-
vas trata el problema de construir una funcion que aproxime muy bien estos datos es
decir :
f(xi) = yi i = 0, 1, . . . , n. (1.1)
Donde f se llama interpolante del conjunto de datos {yi} y las ecuaciones 1.1 son las
condiciones de interpolacion. Un caso particular de ajuste de curvas es la interpolacion
polinomial: En este caso se construye un polinomio p(x) que pase por los puntos de la
tabla. Podran considerarse varios tipos de interpolantes como:
El interpolante polinomico: f(x) = a0 + a1x+ a2x2 + . . .+ anx
n
El interpolante trigonometrico: f(x) = aMeiMx + . . .+ a0 + . . .+ aMe
iMx
donde M es un entero igual a n/2 si n es par, (n 1)/2 sin n es impar, e i es la
unidad imaginaria.
El interpolante racional : f =a0 + a1x+ . . .+ akx
k
ak+1 + ak+2x+ . . .+ ak+n+1xn
-
1. Interpolacion 7
Por simplicidad solamente consideraremos aquellos interpolantes que dependen lineal-
mente de los coeficientes desconocidos ai. Ambos, los interpolantes polinomico y trigonometri-
co, entran en esta categora, mientras que el interpolante racional no.
En el siguiente ejemplo consideremos datos que relaciona temperatura con el segundo
coeficiente virial.
Ejemplo 1.1.1. Considere los siguiente datos para el nitrogeno (N2) :
T (K) 100 200 300 400 450 500 600
B(cm3/mol) -160 -35 -4.2 9.0 ? 16.9 21.3
donde T es la temperatura y B es el se-
gundo coeficiente virial. Cual es el segundo
coeficiente virial a 450K?. Para responder
la pregunta, usando interpolacion polinomi-
al, construimos un polinomio p que pase
por los seis puntos de la tabla (ya veremos
como), tal y como se muestra en la figu-
ra (3.1). Luego, el segundo coeficiente viri-
al a 450K es aproximadamente p(450) =
13,5cm3/mol.
100 200 300 400 500 600450
50
100
P(T)
TB(c
m /
mol)
3
Figura 1.1: Polinomio interpolante
En en capitulo I vimos los polinomios de Taylor. Por su importancia, cabra suponer
que en la interpolacion polinomica se usaran ampliamente dichas funciones, pero no es
as. Los polinomios de Taylor coinciden en lo posible con determinada funcion en un
punto especifico x0, pero concentra su exactitud cerca de el. En los calculos ordinarios
conviene mas usar metodos que incluyan informacion en diversos puntos. La principal
aplicacion de los polinomios de Taylor en el analisis numerico no es la aproximacion,
sino la derivacion de los metodos numericos y la estimacion del error.
-
1. Interpolacion 8
1.1.1. Polinomio de interpolacion de Lagrange
Como los polinomios de Taylor no son adecuados para la interpolacion es necesario hacer
uso de metodos alternos. En esta seccion encontraremos polinomios de aproximacion que
se determinan con solo especificar determinados puntos en el plano por donde deben
pasar. Centremonos en la interpolacion polinomica. Se tiene el siguiente resultado:
Proposicion 1.1.1. Para cualquier conjunto de pares {xi, yi}, i = 0, . . . , n , con nudos
distintos xi, existe un unico polinomio de grado menor o igual que n, que indicamos porn y llamamos polinomio de interpolacion de los valores yi en los nudos xi, tal que :
n
(xi) = yi i = 0, . . . , n (1.2)
En caso de que los {yi, i = 0, . . . , n} representen los valores alcanzados por una funcion
continua f ,
n se llama polinomio de interpolacion de f (abreviadamente, interpolante
de f) y sera denotado por
n f.
Demostracion. Para verificar la unicidad procedemos por reduccion al absurdo. Supong-
amos que existan dos polinomios distintos de grado n,
n y
n, ambos satisfaciendo la
relacion nodal 1.2. Su diferencia,
n
n, sera un polinomio de grado n que se anula
en n+1 puntos distintos. Debido a un teorema de Algebra bien conocido, tal polinomio
debera anularse identicamente y entonces
n coincidir con
n.
Ahora analizaremos el polinomio de Lagrange.
El problema de encontar un polinomio de primer grado que pase por los puntos dis-
juntos (x0, y0) y (x1, y1) es el mismo que el de aproximar una funcion f , para la cual
f(x0) = y0 y f(x1) = y1 por medio de un polinomio de primer grado que interpole los
valores de f en los puntos dados o que coincida con ellos. Primero definiremos las fun-
ciones : 0(x) =x x1x0 x1
y 1(x) =x x0x1 x0
. y se define entonces(x) = 0(x)f(x0) +
1(x)f(x1), como 0(x0) = 1, 0(x1) = 0, 1(x0) = 0 y 1(x1) = 1, tenemos:(x0) = 1f(x0)+0f(x1) = f(x0) = y0 y
(x1) = 0f(x0)+1f(x1) = f(x1) = y1.
As que
es la unica funcion lineal que pasa por (x0, y0) y (x1, y1) .
A fin de generalizar el concepto de interpolacion lineal, consideremos la construccion de
un polinomio de grado menor o igual que n que pasa por los n+1 puntos: (x0, y0), (x1, y1), . . . , (xn, yn)
-
1. Interpolacion 9
y = f(x )
y= f(x )
x x
Y
X
1 1
00
12
y=f(x)
y=nP
y En este caso para cada k = 0, 1, . . . , n construimos una funcion k Pn con la
propiedad
k(xj) = jk =
1 Si j = k0 Caso contrariodonde jk es el simbolo de Kronecker.
Para satisfacer k(xj) = 0 para cada j 6= k se requiere que el numerador de k(x)
contenga el termino
(x x0)(x x1) . . . (x xk1)(x xk+1) . . . (x xn).
Para satisfacer k(xj) = 1, el denominador de k(x) debe coincidir con este termino
cuando se evalue en x = xk. Es decir ,
k(x) =(x x0) . . . (x xk1)(x xk+1) . . . (x xn)
(xk x0) . . . (xk xk1)(xk xk+1) . . . (xk xn)
En la siguiente figura se muestra un dibujo de la grafica de un k comun.
x x . . . x x x . . . x x X 0 1 k-1 k k+1 n-1 n
1
jk
-
1. Interpolacion 10
El polinomio de interpolacion se describe facilmente ahora que conocemos la forma de k.
Este polinomio, denominado n-esimo polinomio de Lagrange se define acontinuacion:
Tomando la propiedad de la proposicion1.1.1 :n
(xi) = yi, i = 0, . . . , n.
Este polinomio esta dado por:n
(x) = y00(x) + . . .+ ynn(x) =n
k=0
ykk(x)
donde para cada k = 0, 1, . . . , n.
k(x) =
j=0j 6=k
x xjxk xj
En efecto, este polinomio satisface las condiciones de interpolacion 1.2, puesto que :
n
(xi) =
nk=0
ykk(xi) =
nk=0
ykik = yi i = 0, . . . , n
Ejemplo 1.1.2. Consideremos la siguiente funcion y = f(x) = sen x en [0,2, 1].
a) Usar los nodos x0 = 0,2 y x1 = 1 para construir un polinomio de interpolacion de
Lagrange 1(x) y calcular f(0,6).
b)Usar los nodos x0 = 0,4 y x1 = 0,8 para costruir un polinomio de interpolacion de
Lagrange 1(x) y calcular f(0,6).
Solucion. a) Como x0 = 0,2 y x1 = 1, entonces y0 = 0,198669 y y1 = 0,841471
luego 1(x) = 0,198669x10,21
+ 0,841471x0,210,2
, o sea que 1(x) = 0,248331(x 1) +
1,051839(x 0,2) y f(0,6) = 0,520068.
b) Como x0 = 0,4 y x1 = 0,8, entonces y0 = 0,389418 y y1 = 0,717356 luego 1(x) =
0,389418 x0,80,40,8
+0,717356 x0,40,80,4
, o sea que 1(x) = 0,973545(x0,8)+1,79339(x0,4)
y f(0,6) = 0,5533387.
En la figura 1.2 se observa que 1 aproxima mejor a y = f(x) que 1.
-
1. Interpolacion 11
0.2 0.4 0.6 0.8 1
1
0.8
0.6
0.4
0.2
y = f(x)y= f(x)
0.2 0.4 0.6 0.8 1
1
0.8
0.6
0.4
0.2
Figura 1.2: Comparacion entre los polinomios de Lagrange 1 (a la izquierda) y 1 (a
la derecha) de la funcion y = f(x) = sen(x).
Ejemplo 1.1.3. Para el siguiente conjunto de Pares: {(1, 0), (2,1), (3, 2), (4,5)},
construir el polinomio de interpolacion.
Solucion. Los polinomios de Lagrange para dichos pares de puntos viene dados por
0(x) =(x 2)(x 3)(x 4)
(1 2)(1 3)(1 4)=1
6(x3 9x2 + 26x 24)
1(x) =(x 1)(x 3)(x 4)
(2 1)(2 3)(2 4)=
1
2(x3 8x2 + 19x 12)
2(x) =(x 1)(x 2)(x 4)
(3 1)(3 2)(3 4)=1
2(x3 7x2 + 14x 8)
3(x) =(x 1)(x 2)(x 3)
(4 1)(4 2)(4 3)=
1
6(x3 6x2 + 11x 6)
Y el polinomio de interpolacion de Lagrange es:3
(x) = y00(x) + y11(x) + y22(x) + y33(x) = 0 0(x) + (1) 1(x) + 2 2(x) +
(5)3(x) Por lo que tenemos3
(x) =7
3x3 + 16x2
98
3x+ 19.
Utilizando el resultado siguiente podemos evaluar el error obtenido reemplazando f por
su polinomio de interpolacion
n f .
Proposicion 1.1.2 ((El error de la interpolacion Lagrangiana).). Sea I el intervalo
acotado y consideremos n+ 1 nudos distintos de interpolacion
{xi, i = 0, . . . , n} en I. Sea f continuamente diferenciables hasta el orden n + 1 en I.
Entonces x I I tal que:
Enf(x) = f(x)n
f(x) =fn+1()
(n+ 1)!
ni=0
(x xi). (1.3)
-
1. Interpolacion 12
Demostracion. Observe primero que, si x = xk para k = 0, 1, . . . , n entonces Enf(xk) =
0. Si x 6= xk para cualquier k = 0, 1, . . . , n defina la funcion g para t [a, b] por medio
de
g(t) = f(t)n
f(t) [f(x)n
f(x)] (tx0)(tx1)...(txn)(xx0)(xx1)...(xxn)
= f(t)n
f(t) [f(x)n
f(x)]ni=0
(txi)(xxi)
Puesto que f Cn+1(I), yn
C(I), se deduce que g Cn+1(I). Cuando t = xk
tendremos
g(xk) = f(xk)n
f(xk) [f(x)n
f(x)]
ni=0
(xk xi)
(x xi)= 0 [f(x)
n
f(x)] 0 = 0
Ademas: g(x) = f(x) n
f(x) [f(x) n
f(x)]ni=0
(xxi)(xxi)
= f(x) n
f(x) [f(x) n
f(x)] = 0.
Por tanto g Cn+1(I) y g se anula en los n + 2 numeros distintos x, x0, x1, . . . , xn.
Conforme al teorema generalizado de Rolle, existe en I tal que g(n+1)() = 0. Por
tanto,
0 = g(n+1)() = f (n+1)() (n
f)(n+1)() [f(x)n
f(x)]dn+1
dtn+1
[ni=0
(t xi)
(x xi)
]t=(1.4)
Por sern
f(x) un polinomio de grado a lo mas n , entonces (n
f(x))(n+1) sera igual a
cero, Asimismo,ni=0
(txi)(xxi)
es un polinomio de grado (n+ 1) y por tanto ,
ni=0
(t xi)
(x xi)=
[1n
i=0(x xi)
]tn+1 + ( termino de menor grado en t)
ydn+1
dtn+1
ni=0
(t xi)
(x xi)=
(n+ 1)!ni=0(x xi)
La ecuacion (1.4) ahora se convierte en
0 = f (n+1)() 0 [f(x)n
f(x)](n + 1)!ni=0(x xi)
y luego al despejar f(x)n
f(x), tendremos
f(x)n
f(x) =fn+1()
(n+ 1)!
ni=0
(x xi).
-
1. Interpolacion 13
Ejemplo 1.1.4. Calcular la expresion del error interpolacion al aproximar la funcion
f(x) = sen(x) en el intervalo [0,2, 1] interpolando en los puntos 0,4, 0,8 y acotarlo
superiormente.
Solucion. El error de interpolacion viene dado por E1f(x) = sen()2
(x 0,4)(x 0,8),
el valor maximo del sen() es 0.841470. Por otro lado el valor donde alcanza el maximo
el polinomio de error en [0,2, 1] es x = 1, por tanto la cota del error que obtenemos es
|E1f(x)| 0,841470
2(1 0,4)(1 0,8) = 0,050488
El resultado 1.3 puede especificarse mejor en el caso de una distribucion uniforme de
nudos, esto es, cuando xi = xi1+ h para i = 1, . . . , n, para un h > 0 y un x0 dados. Se
tiene nt=0
(x x1)
n!hn+14 (1.5)y, por consiguiente :
maxxI
|Enf(x)| maxxI |f
n+1(x)|
4(n+ 1)hn+1 (1.6)
Desafortunadamente, no podemos deducir de 1.6 que el error tienda a 0 cuando n 0,
a pesar de que hn+1/[4(n+ 1)] tiende a 0. De hecho, existen funciones f para las cuales
el limite puede ser incluso infinito, esto es,
lmn
maxxI
|Enf(x)| =
Este sorprendente resultado indica que, haciendo crecer el grado n del polinomio de
interpolacion, no necesariamente obtenemos una mejor reconstruccion de f .
1.1.2. Fenomeno de Runge
Aparentemente, la cota del error de interpolacion
maxxI
|Enf(x)| maxxI |f
n+1(x)|
4(n+ 1)hn+1
parece indicar que el error decrecera conforme se introduzcan mas nodos de interpolacion
(n ). Sin embargo, es importante notar que eso no es cierto, es decir, no siempre
se cumple que
lmn
|Enf(x)| = 0,
-
1. Interpolacion 14
ya que la cota depende de que las derivadas de la funcion f(x) no crezcan demasia-
do rapido. Este hecho, se expresa en la existencia funciones para las que la sucesion
{n
f(x)} diverge conforme n crece. Por ejemplo , Runge demostro en 1901 que para la
funcion (llamada de Runge) f(x) = 1/(1+x2), la sucesion {n
f(x)}, de polinomios que
la interpolacion con n+1 puntos distribuidos uniformemente en el intervalo I = [5, 5],
diverge conforme n crece indefinidamente.
Sin embargo, Krylov probo en 1962 que si la funcion f(z), de variable compleja, es
analtica en la region definida por la interseccion de los dos crculos de radio b a
centrados en z = a y z = b, entonces la interpolacion de la funcion f(x), de variable
real, en el intervalo [a; b] converge conforme el numero de nodos, n, en dicho intervalo
tiende a infinito, es decir,
lmn
|f(x)n
f(x)| = 0
Pero la funcion de Ruge no es analitica ya que posee dos polos complejos, z = i, y por
tanto, no cumple las hipotesis del teorema de Krylov en el intervalo [5, 5].
Estas dificultades de convergencia con el proceso de interpolacion se conocen con el
nombre de fenomeno de Runge. Desde un punto de vista practico este fenomeno se
refleja en grandes oscilaciones del polinomio interpolador, sobre todo en los extremos
del intervalo de interpolacion. Una justificacion intuitiva de este comportamiento es que
como el polinomio de interpolacion
n f(x), de grado n, tiene n ceros, que en muchos
casos se encuentran dentro del intervalo de integracion, incluso si la funcion original
f(x) no tiene ceros en el mismo, este se ve obligado a realizar grandes oscilaciones cerca
de los extremos del intervalo de interpolacion. La siguiente figura muestra la funcion de
Runge y su polinomio de interpolacion para los intervalos [5; 5]
1.1.3. Interpolacion de Chebyshev
El fenomeno de Runge puede evitarse si se usa una distribucion apropiada de los nudos.
En particular, en un intervalo arbitrario [a, b], podemos considerar los llamados nudos
de Chebyshev
xi =a+ b
2+b a
2xi, donde xi = cos(pii/n), i = 0, . . . , n (1.7)
(obviamente, xi = xi, i = 0, . . . , n cuando [a, b] = [1, 1])
-
1. Interpolacion 15
1
0 X
Y
-5 5* * *
*
*
*
*
** * *
Figura 1.3: La figura muestra la grafica de la funcion f(x) = 1/(1 + x2)(Lnea verde) y
su polinomio de interpolacion (linea celeste) de grado 10 (11 nudos)
En efecto para esta distribucion especial de nudos es posible probar que, si f es una
funcion continua y diferenciable en [a, b],
n f converge a f cuando n para todo
x [a, b].
Los nudos de Chebyshev, que son las abscisas de nudos equiespaciados sobre la semi-
circunferencia unidad, estan en el interior de [a, b] y se acumulan cerca de los puntos
extremos de ese intervalo.
Otra distribucion no uniforme de nudos en el intervalo (a, b), que comparten las mismas
propiedades de convergencia que los nudos de Chebyshev, viene proporcionada por:
xi =a+ b
2+b a
2cos
(2i+ 1
n + 1
pi
2
)i = 0, . . . , n (1.8)
Ahora veremos los polinomios de Chebyshev , que son denotados por {Tn+1(x)}, donde
Tn+1(x) = cos((n + 1) arc cos(x)). La forma mas facil de construirlos es mediante la
relacion de recurrencia:
T0(x) = 1, T1(x) = x, Tn+1(x) = 2xTn(x) Tn1(x), n = 1, 2, . . .
Ejemplo 1.1.5. Considerando de nuevo la funcion f del fenomeno de Runge, encon-
traremos los nudos de Chebyshev y su polinomio de interpolacion en dichos nodos.
Solucion. Para calcular los nudos haremos uso de la ecuacion (1.7) la cual se muestra
en la siguiente tabla. La siguiente figura muestra la comparacion entre el polinomio de
Chebychev y el fenomeno de Runge de la funcion f .
-
1. Interpolacion 16
n xi
1 -5
2 -4.75528258
3 -4.04508497
4 -2.93892626
5 -1.54508497
6 0
7 1.54508497
8 2.93892626
9 4.04508497
10 4.75528258
11 5
1.1.4. Interpolacion trigonometrica
Queremos aproximar una funcion f : [0, 2pi] C es decir satisfaciendo f(0) = f(2pi)
por un polinomio trigonometrico f que interpole a f en los n+ 1 nudos xj = 2pij/(n+
1), j = 0, . . . , n es decir,
f(xj) = f(xj), para j = 0, .., n (1.9)
El interpolante f se obtiene mediante una combinacion lineal de senos y cosenos.
En particular, si n es par, f tendra la forma:
f(x) =a02+
Mk=1
[ak cos(kx) + bk sen(kx)] (1.10)
donde M = n/2, mientras que, si n es impar, f tendra la forma:
f(x) =a02+
Mk=1
[ak cos(kx) + bk sen(kx)] + aM+1 cos((M + 1)x) (1.11)
donde M = (n 1)/2. Podemos escribir 1.10 como:
f(x) =
Mk=M
ckeikx (1.12)
-
1. Interpolacion 17
1
0 X
Y
-5 5* * *
*
*
*
*
** * *
Figura 1.4: La figura muestra la grafica de la funcion f(x) = 1/(1 + x2)(Lnea verde
punteada) , su polinomio de interpolacion (linea celeste) de grado 10 (11 nudos) y el
polinomio de Chebychev (linea roja).
siendo i la unidad imaginaria. Los coeficientes complejos ck estan relacionados con los
coeficientes ak y bk (tambien complejos) como sigue:
ak = ck + ck bk = i(ck ck), k = 0, . . . ,M (1.13)
En efecto, de la ecuacion de Euler se sigue que eikx = cos(kx) + i sen(kx) y
Mk=M
ckeikx =
Mk=M
ck(cos(kx) + i sen(kx))
=Mk=1
[ck(cos(kx) + i sen(kx)) + ck(cos(kx) i sen(kx))] + c0
Por consiguiente deducimos 1.10, gracias a las relaciones 1.13.
Analogamente, cuando n es impar, 1.11 resulta
f(x) =
M+1k=(M+1)
ckeikx (1.14)
donde los coeficientes ck para k = 0, . . . ,M son los mismos de antes, mientras que
cM+1 = c(M+1) = aM+1/2. En ambos casos podramos escribir:
f(x) =
M+k=(M+)
ckeikx (1.15)
con = 0 si n es par y = 1 si n es impar. Si f fuese real, sus coeficientes ck satisfarian
ck = ck; de 1.13 se sigue que los coeficientes ak y bk son todos reales.
-
1. Interpolacion 18
A causa de su analogia con las series de Fourier, f se llama serie de Fourier discreta.
Imponiendo la condicion de interpolacion en los nudos xj = jh, con h = 2pi/(n + 1),
hallamos queM+
k=(M+)
ckeikjh = f(xj), j = 0, . . . , n (1.16)
Para el calculo de los coeficientes {ck} multipliquemos las ecuaciones 1.16 por eimxj =
eimjh, donde m es un entero entre 0 y n, y luego sumemos con respecto a j:
nj=0
M+k=(M+)
ckeikjheimjh =
nj=0
f(xj)eimjh (1.17)
Ahora requerimos la siguiente igualdad:
nj=0
eijh(km) = (n+ 1)km
Esta identidad es obviamente cierta si k = m. Cuando k 6= m tenemos:
nj=0
eijh(km) =1 (ei(km)h)n+1
1 ei(km)h
El numerador del segundo miembro es nulo porque:
1 ei(km)h(n+1) = 1 ei(km)2pi
= 1 cos((k m)2pi) i sen((k m)2pi)
Por consiguiente, de 1.17 obtenemos la siguiente expresion explcita para los coeficientes
de f
ck =1
n+ 1
nj=0
f(xj)eikjh, k = (M + ), . . . ,M + (1.18)
1.2. Metodo de Newton o de diferencias divididas
El metodo de Newton de diferencias divididas es otra forma de obtener el polinomio
interpolador. En este metodo el polinomio interpolador se escribe de la forman
(x) = a0 + a1(x x0) + a2(x x0)(x x1) + . . .+ an(x x0)(x x1) . . . (x xn1)
para unas constantes apropiadas a0, a1, . . . , an. Estas constantes se obtienen calculando
las llamadas diferencias divididas.
-
1. Interpolacion 19
Para determinar la primera de las constantes, a0,devemos de evaluarn
(x) en x0 queda
solo el termino constante a0, es decir
a0 =0
(x0) = f(x0)
De manera similar, se evalua en los puntos x1, . . . , xk
f(x1) =1
(x1) = f(x0) + a1(x1 x0)
a1 =f(x1)f(x0)
x1x0
f(x2) =2
(x2) =1
(x1) + a2(x2 x0)(x2 x1)
a2 =f(x2)
1
(x2)
(x2x0)(x2x1)...
f(xk) =k
(xk) =k1
(xk) + ak(xk x0)(xk x1) . . . (xk xk1)
ak =f(xk)
k1
(xk)
(xkx0)(xkx1)...(xkxk1)
Para indicar la dependencia de ak de x0, x1, . . . , xk y f(x0), f(x1), . . . , f(xk) escribimos
ak := f [x0, x1, . . . , xk]
Esta expresion se denomina la k-esima diferencia dividida de f(x) en los puntos
x0, x1, . . . , xk, y es igual al coeficiente principal del polinomio que interpola f(x) en
dichos puntos.
Podemos encontrar una forma mas conveniente de calcular las diferencias divididas, en
lugar del metodo recursivo anterior. Sabemos que
a0 = f(x0) f [x0]
a1 =f(x1)f(x0)
x1x0 f [x0, x1]
Las diferencias de orden mayor pueden construirse utilizando la formula
ak =f [x1, . . . , xk] f [x0, . . . , xk1]
(xk x0) f [x0, x1, . . . , xk]
Resumiendo, la forma de Newton del polinomio de interpolacion en los puntos x0, x1, . . . , xn
para f(x) esn
(x) = f [x0] + f [x0, x1](x x0) + f [x0, x1, x2](x x0)(x x1) + . . .
+f [x0, x1, . . . , xn](x x0) . . . (x xn1)
= f [x0] +n
k=1
f [x0, . . . , xk]n1j=0
(x xj)
-
1. Interpolacion 20
donde f [x0, x1, . . . , xk] =f [x1,...,xk]f [x0,...,xk1]
(xkx0), k = 1, 2, . . . , n
Esta ultima expresion se utiliza para generar las diferencias divididas en forma simple
por medio de una tabla denominada tabla de diferencias divididas. Por ejemplo,
para el caso n = 3, esta tabla queda de la siguiente manera
x f [] f [, ] f [, , ] f [, , , ]
x0 f [x0]
f [x0, x1] =f [x1]f [x0]
x1x0
x1 f [x1] f [x0, x1, x2] =f [x1,x2]f [x0,x1]
x2x0
f [x1, x2] =f [x2]f [x1]
x2x1f [x0, x1, x2, x3]
x2 f [x2] f [x1, x2, x3] =f [x2,x3]f [x1,x2]
x3x1
f [x2, x3] =f [x3]f [x2]
x3x2
x3 f [x3]
Ejemplo 1.2.1. Encontrar, por el metodo de las diferencias divididas de Newton, el
polinomio de interpolacion de la funcion f(x) que toma los valores {0,1, 1, 2} en los
nudos {1, 3, 4, 5}.
Solucion. Teniendo encuenta la tabla anterior obtenemos:
f [x0, x1] =f [x1] f [x0]
x1 x0=
f(x1) f(x0)
x1 x0=
1 0
3 1=
1
2
f [x1, x2] =f [x2] f [x1]
x2 x1=
f(x2) f(x1)
x2 x1=1 1
4 3= 2
f [x2, x3] =f [x3] f [x2]
x3 x2=
f(x3) f(x2)
x3 x2=
2 (1)
5 4= 3
f [x0, x1, x2] =f [x1, x2] f [x0, x1]
x2 x0=2 1/2
4 1=
5
6
f [x1, x2, x3] =f [x2, x3] f [x1, x2]
x3 x1=
3 (2)
5 3=
5
2
f [x0, x1, x2, x3] =f [x1, x2, x3] f [x0, x1, x2]
x3 x0=
5/2 (5/6)
5 1=
5
6
Por lo que el polinomio de interpolacion es :3
=1
2(x 1)
5
6(x 1)(x 3) +
5
6(x 1)(x 3)(x 4) =
1
6(5x3 45x2 + 118x 78)
-
1. Interpolacion 21
Teorema 1.2.1 ((El error del polinomio en forma de Newton)). Supongamos que f
Ck[a, b] y x0, x1, . . . , xn son numeros distintos en [a, b]. Entonces existe un numero en
(a, b) con
f [x0, x1, . . . , xn] =f (n)()
n!
Demostracion. Sea g(x) = f(x) n
(x). Puesto que f(xk) =n
(xk) para cada k =
0, 1, . . . , n, la funcion g tiene n+ 1 ceros distintos en [a, b]. Conforme al teorema gener-
alizado de Rolle, existe en (a, b) un numero con g(n)() = 0, tal que
0 = f (n)() (n
)(n)()
Por sern
un polinomio de grado n cuyos coeficiente principal es f [x0, x1, . . . , xn],
(n
(x))(n) = n!f [x0, x1, . . . , xn]
para todos los valores de x. En consecuencia,
f [x0, x1, . . . , xn] =f (n)()
n!
1.3. Interpolacion lineal a trozos
El interpolante de Chebyshev proporciona una aproximacion precisa de funciones regu-
lares f cuya expresion es conocida. Cuando f no es regular o cuando f solo se conoce
por sus valores en un conjunto de puntos (que no coincide con los nudos de Chebyshev),
uno puede recurrir a un metodo de interpolacion diferente, se llama interpolacion lineal
compuesta.
La interpolacion lineal a trozos es la mas simple de las interpolaciones. Supongamos que
se quiere calcular el valor una funcion f(x) en un punto dado , la cual conocemos una
distribucion de nudos (no necesariamente uniforme) x0 < x1 < . . . < xn y denotemos
por Ii = [xi, xi+1] tal que [xi, xi+1].
Aproximamos f por una funcion continua en cada Ii, esta dada por el segmento que une
los puntos (xi, f(xi)) y (xi+1, f(xi+1)) (ver figura 1.5 ). Esta funcion lineal que aproxima
-
1. Interpolacion 22
a f en sera denotada por H1 f , se llama interpolacion lineal polinomica a trozos de f
y su expresion es :
H1 f(x) = f(xi) +f(xi+1) f(xi)
xi+1 xi(x xi) para x Ii (1.19)
Y
X
y=f(x)
x x x .... x x ...x x0 1 2 i i+1 n-1 n
Figura 1.5: La grafica de la funcion f y su interpolacion lineal a trozos.
Proposicion 1.3.1. Si f C2(I), donde I = [x0, xn], entonces
maxxI
|f(x)H1 f(x)| H2
8maxxI
|f (x)|
Ejemplo 1.3.1. El numero de turistas entrando a Chiclayo en el mes de agosto siguio
la siguiente tendencia.
dia 1 9 16 23 27 31
N de turistas 35 53 110 75 40 97
Encuentre el Polinomio en cada intervalo.
-
1. Interpolacion 23
Solucion. Utilizando la ecuacion 1.19, obtenemos:
IiH1
f(x)
[1, 9] 35 + 2,25(x 1)
[9, 16] 53 + 8,1429(x 9)
[16, 23] 110 5(x 16)
[23, 27] 75 8,75(x 23)
[27, 31] 40 + 14,25(x 27)
1.4. Aproximacion por funciones spline
La palabra inglesa spline denota un cierto instrumento flexible usado en dibujo tecnico
que sirve para trazar curvas suaves.
Del mismo modo que hemos hecho para la interpolacion lineal a trozos, tambien se
puede definir la interpolacion polinomica a trozos de grado n 2. Por ejemplo, la in-
terpolante cuadratica a trozos H2 f es una funcion continua que, sobre cada intervalo
Ii, reemplaza a f por su interpolacion polinomica en los puntos extremos de Ii y en su
punto medio. Si f C3(I), el error f H2 f en la norma del maximo decae como H3
si H tiende a cero.
El principal inconveniente de esta interpolacion a trozos es que Hk f con k > 1, no
es mas que una funcion globalmente continua. En realidad, en varias aplicaciones, es de-
seable tener una aproximacion por funciones regulares que tengan al menos una derivada
continua.
-
1. Interpolacion 24
Con este objetivo definiremos funcion Spline.
Definicion 1.4.1 ((Funcion spline)). Una funcion spline de grado k con nodos en
x0, x1, . . . , xn es una funcion Sk(x) formada por varios polinomios, cada uno de ellos
definido sobre un sbintervalo y que se unen entre s bajo ciertas condiciones de con-
tinuidad. Las condiciones que debe cumplir Sk(x) son las siguientes:
En cada intervalo Ii, Sk(x) es un polinomio de grado gr[Sk(x)] k,
Sk(x) admite derivadas continuas de orden k 1 en [x0, xn]
En general, puede crearse funciones spline de grado k, pero la interpolacion mas frecuente
es a traves de funciones spline de grado 3, es decir , de splines cubicos.
Dado que a partir de ahora vamos a trabajar con spline cubicos, vamos a concretar la
definicion 1.4.1 al caso de k = 3.
Definicion 1.4.2 ((Funcion spline cubico)). dado el conjunto de nodos x0, x1, . . . , xn,
diremos que la funcion S3 es un spline cubico si cumple las siguientes condiciones:
1. Sobre cada Ii, para i = 0, . . . , n 1, s3 es un polinomio de grado 3 que interpola
los pares de valores (xj , f(xj)) para j = i, i + 1 ( el cual sera llamado spline de
interpolacion);
2. S3 tiene derivadas primera y segunda continuas en los nudos xi, i = 1, . . . , n 1
Para su completa determinacion, necesitamos 4 condiciones sobre cada intervalo (por
los cuatro coeficientes del polinomio de grado tres), por consiguiente un total de 4n
ecuaciones que podemos proporcionar como sigue:
n+1 condiciones provienen del requerimiento de interpolacion en los nudos xi, i =
0, . . . , n
S3(xi) = f(xi) = yi i = 0, 1, . . . , n;
n 1 ecuaciones adicionales se siguen del requerimiento de continuidad del poli-
nomio en los nudos interiores x1, . . . , xn1
S3|[xi1,xi](xi) = S3|[xi,xi+1](xi) i = 1, . . . , n 1
-
1. Interpolacion 25
2(n 1) nuevas ecuaciones se obtienen exigiendo que las derivadas primera y
segunda sean continuas en los nudos interiores.
S 3|[xi1,xi](xi) = S3|[xi,xi+1](xi)
S 3 |[xi1,xi](xi) = S3 |[xi,xi+1](xi)
i = 1, . . . , n 1
Dado que tenemos un total de 4n 2 condiciones, debemos imponer dos nuevas condi-
ciones para poder determinar los coeficientes de la funcion spline y son:
S 3 (x0) = 0, S3 (xn) = 0 (1.20)
La funcion S3 que obtenemos de esta forma se llama spline cubico natural de interpo-
lacion.
Si queremos construir el spline cubico natural de interpolacion de determinada funcion
f , aplicamos las condiciones a los polinomios cubicos:
S3|[xi,xi+1](x) = ai + bi(x xi) + ci(x xi)2 + di(x xi)
3
para cada i = 0, 1, . . . , n 1. Esta claro que : S3|[xi,xi+1](xi) = ai = f(xi) y si se aplica
la condicion de continuidad ,
ai = S3|[xi,xi+1](xi) = S3|[xi1,xi](xi) = ai1 + bi1(xi xi1) + ci1(xi xi1)2 + di1(xi xi1)
3,
para cada i = 1, . . . , n 1, hacemos hi1 = xi xi1, para cada i = 1, . . . , n .
Si tambien definimos an = f(xn) entonces la ecuacion resulta
ai = ai1 + bi1 hi1 + ci1 h2i1 + di1h
3i1 (1.21)
sera valida para cada i = 1, . . . , n. De manera analoga; definamos bn = S3|(xn) y observe
que
S 3|[xi,xi+1](x) = bi + 2ci(x xi) + 3di(x xi)2
significa que: S 3|[xi,xi+1](xi) = bi, para cada i = 0, 1, . . . , n 1
al aplicar la condicion de la primera derivada obtenemos :
bi = S3|[xi,xi+1](xi) = S
3|[xi1,xi](xi) = bi1 + 2ci1(xi xi1) + 3di1(xi xi1)
2, para ca-
da i = 1, . . . , n, si hacemos hi1 = xi xi1; para cada i = 1, . . . , n; de esto tenemos:
bi = bi1 + 2ci1 hi1 + 3di1 h2i1 i = 1, . . . , n (1.22)
-
1. Interpolacion 26
Al definir cn = S3 (xn)/2 y aplicar la segunda derivada, se obtiene otra relacion entre
los coeficientes de S3|[xi,xi+1]. En este caso, para cada i = 1, . . . , n
ci = ci1 + 3di1hi1 (1.23)
Al despejar di1 en la ecuacion (1.23) y sustituir este valor en las ecuaciones (1.21) y
(1.22), para cada i = 1, . . . , n se obtiene las ecuaciones
ai = ai1 + bi1 hi1 +h2i13
(2ci1 + ci) (1.24)
y
bi = bi1 + hi1(ci1 + ci) (1.25)
La relacion final que incluye los coeficientes se obtiene resolviendo la ecuacion corre-
spondiente en la forma de la ecuacion (1.24), primero para bi1
bi1 =1
hi1(ai ai1)
hi13
(2ci1 + ci) (1.26)
y entonces con una reduccion de indice para bi2
bi2 =1
hi2(ai1 ai2)
hi23
(2ci2 + ci1) (1.27)
Cuando sustituimos (1.26) y (1.27) en (1.25), con el ndice reducido en 1, obtenemos el
sistema de ecuaciones lineales
hi2ci2 + 2(hi2 + hi1)ci1 + hi1ci =3
hi1(ai ai1)
3
hi2(ai1 ai2) (1.28)
para cada i = 2, . . . , n
Ahora debemos encontrar los valores de {ci}ni=1 ya que estas proporcionan el resto las
constantes {bi}ni=1 partiendo de la ecuacion (1.26) y {di}
ni=1 de la ecuacion (1.23) para
construir los polinomios cubicos.
Ahora utilizaremos las ecuaciones (1.20), se tiene cn = S3 (xn)/2 = 0 y que
0 = S 3 |[x0,x1](x0) = 2c0 + 6d0(x0 x0) asi que c0 = 0.
Las dos condiciones c0 = 0 y cn = 0 junto con las ecuaciones (1.28) produce un sistema
lineal descrito por la ecuacion vectorial AX = b, donde A es la matriz tridiagonal de
-
1. Interpolacion 27
orden (n+ 1) (n+ 1)
A X = b
1 0 0 . . . 0
h0 2(h0 + h1) h1. . .
...
0 h1 2(h1 + h2) h2 0...
. . . hn2 2(hn2 + hn1) hn1
0 0 0 1
c0
c1...
cn
=
=
0
3h1(a2 a1)
3h0(a1 a0)
...
3hn1
(an an1)3
hn2(an1 an2)
0
A continuacion veremos un ejemplo donde se aplica este resultado.
Ejemplo 1.4.1. Dado los puntos (0, 1), (1, e), (2, e2) y (3, e3) de la funcion exponencial
f(x) = ex, encontrar el spline cubico natural S3(x).
Solucion. Donde observamos que : n = 3, x0 = 0, x1 = 1, x2 = 2, x3 = 3 entonces
h0 = h1 = h2 = 1 y de an = f(xn) tenemos a0 = 1, a1 = e, a2 = e2, a3 = e
3. Asi que la
matriz A, y los vectores b y X tienen la forma:
A =
1 0 0 0
1 4 1 0
0 1 4 1
0 0 0 1
, b =
0
3(e2 2e+ 1)
3(e3 2e2 + e)
0
, y X =c0
c1
c2
c3
de esto tenemos el siguiente sistema de ecuaciones.
c0 = 0,
c0 + 4c1 + c2 = 3(e2 2e+ 1)
c1 + 4c2 + c3 = 3(e3 2e2 + e)
c3 = 0
El sistema tiene como solucion a c0 = c3 = 0 , c1 = 0, 75685 y c2 = 5, 83007
Utilizando las ecuaciones (1.26) y (1.23) obtenemos los siguientes coeficientes: b0 =
-
1. Interpolacion 28
1,46600, b1 = 2,22285, b2 = 8,80977, d0 = 0,25228, d1 = 1,69107 y d2 = 1,94336.
El spline cubico natural es descrito precisamente por :
S3(x) =
1 + 1,46600x+ 0,25228x3, x [0, 1]
2,71828 + 2,22285(x 1) + 0,75685(x 1)2 + 1,69107(x 1)3, x [1, 2]
7,38906 + 8,80977(x 2)2 1,94336(x 2)3, x [2, 3]
La siguiente figura describe al spline y a la funcion f(x) = ex
1 2 3 X
e
e
e
1
y= S (x)
y= e x
3
2
3
1.5. Metodo de mnimos cuadrados
El metodo de mnimos cuadrados fue descubierta por Carl Friedrich Gauss, al predecir
la posicion de la orbita del cuerpo celeste Ceres en diciembre de 1801.
Ya hemos observado que una interpolacion de Lagrange no garantiza una mejor aproxi-
macion de una funcion dada cuando el grado del polinomio se hace grande. Este proble-
ma puede ser superado mediante la interpolacion compuesta (tal como la interpolacion
lineal a trozos o por splines). Sin embargo, ninguna es apropiada para extrapolar infor-
macionde los datos disponibles, esto es, para generar nuevos valores en puntos situados
fuera del intervalo donde se dan los nudos de interpolacion.
Supongamos que se dispone de los datos (xi, yi), i = 0, . . . , n, donde ahora yi podra
representar los valores f(xi) alcanzados por una funcion dada f en los nudos xi. Para
un entero dado m 1 (usualmente, m n) buscamos un polinomio f Pm que
satisfaga la desigualdad
ni=0
[yi f(xi)]2
ni=0
[yi pm(xi)]2 (1.29)
-
1. Interpolacion 29
para cada polinomio pm Pm. Si existe, f sera llamda aproximacion de mnimos cuadra-
dos en Pm del conjunto de datos {(xi, yi), i = 0, . . . , n}. Salvo m n, en general no
sera posible garantizar que f(xi) = yi para todo i = 0, . . . , n.
Poniendo
f(x) = a0 + a1x+ . . .+ amxm (1.30)
donde los coeficientes a0, . . . , am son desconocidos, el problema (1.29) puede ser re-
planteado como sigue: hallar a0, a1, . . . , am tales que
(a0, a1, . . . , am) = mn{bi,i=0,...,m}
(b0, b1, . . . , bm),
donde
(b0, b1, . . . , bm) =ni=0
[yi (b0 + b1xi + . . .+ bmxmi )]
2
resolvamos este problema en el caso especial de que m = 1. Puesto que
(b0, b1) =ni=0
[y2i + b20 + b
21x
2i + 2b0b1xi 2b0yi 2b1xiy
2i ]
la grafica de es un paraboloide convexo. El punto (a0, a1) en el que alcanza su
mnimo satisface las condiciones
b0(a0, a1) = 0,
b1(a0, a1) = 0,
donde el simbolo /bj denota la derivada parcial (esto es , la tasa de variacion ) de
con respecto a bj , despues de haber congelado las restantes variaables.
Calculando explicitamente las dos derivadas parciales obtenemosni=0
[a0 + a1xi yi] = 0,
ni=0
[a0xi + a1x2i xiyi] = 0
que es un sistema de 2 ecuaciones para las 2 incognitas a0 y a1.
a0(n+ 1) + a1ni=0
xi =ni=0
yi,
a0ni=0
xi + a1ni=0
x2i =ni=0
yixi(1.31)
Poniendo D = (n+ 1)ni=0
x2i (ni=0
xi)2, la solucion se escribe
a0 =
ni=0
yinj=0
x2j nj=0
xjni=0
xiyi
D
a1 =
(n + 1)ni=0
xiyi nj=0
xjni=0
yi
D
(1.32)
-
1. Interpolacion 30
El correspondiente polinomio f(x) = a0+a1x se conoce como recta de mnimos cuadra-
dos, o recta de regresion.
El enfoque de (1.31) puede ser generalizado de varias formas. La primera generalizacion
es al caso de m arbitrario. El sistema lineal (m+1) (m+1) asociado, que es simetrico,
tendra la forma:
a0(n+ 1) +a1ni=0
xi + . . .+ amni=0
xmi =ni=0
yi
a0ni=0
xi +a1ni=0
x2i + . . .+ amni=0
xm+1i =ni=0
xiyi
......
......
a0ni=0
xmi +a1ni=0
xm+1i + . . .+ amni=0
x2mi =ni=0
xmi yi
(1.33)
Cuando m = n, el polinomio de mnimos cuadrados debe coincidir con el polinomio de
interpolacion de Lagrange
n.
Ejemplo 1.5.1. En la siguiente tabla de datos, se quiere ajustar una cuadratica.
xi 0.05 0.11 0.15 0.31 0.46 0.52 0.70 0.74 0.82 0.98 1.17
yi 0.956 0.890 0.832 0.717 0.571 0.539 0.378 0.370 0.3606 0.242 0.104
Solucion. Para establacer dicha ecuacion usaremos las ecuaciones de 1.33 para m = 2xi = 6,01 n + 1 = 11x2i = 4,6545
yi = 5,905
x3i = 4,1150
xiyi = 2,1839x4i = 3,9161
x2i yi = 1,3357
Teniendo el siguiente sisitema de ecuaciones
11a0 + 6,01a1 + 4,654a2 = 5,905
6,01a0 + 4,6545a1 + 4,1150a2 = 2,1839
4,6545a0 + 4,1150a1 + 3,9161a2 = 1,3357
el resultado es: a0 = 0,998, a1 = 1,018, a2 = 0,225, de modo que con el metodo de
mnimos cuadrados se obtiene
y = 0,998 1,018x+ 0,225x2
-
Captulo 2
INTERPOLACION Y APROXIMACION
En el subcampo matematico del analisis numerico, se denomina interpolacion a la ob-
tencion de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos.
En ingeniera y algunas ciencias es frecuente disponer de un cierto numero de puntos
obtenidos por muestreo o a partir de un experimento y pretender construir una funcion
que los ajuste.
Otro problema estrechamente ligado con el de la interpolacion es la aproximacion de una
funcion complicada por una mas simple. Si tenemos una funcion cuyo calculo resulta
costoso, podemos partir de un cierto numero de sus valores e interpolar dichos datos
construyendo una funcion mas simple. En general, por supuesto, no obtendremos los
mismos valores evaluando la funcion obtenida que si evaluamos la funcion original, si
bien dependiendo de las caractersticas del problema y del metodo de interpolacion usado
la ganancia en eficiencia puede compensar el error cometido. En todo caso, se trata de,
a partir de n parejas de puntos (xk; yk), obtener una funcion f que verifique:
f(xk) = yk; k = 1, 2, ..., n
A la que se denomina funcion interpolante de dichos puntos. A los puntos xk se les llama
nodos. Algunas formas de interpolacion que se utilizan con frecuencia son la interpo-
lacion lineal, la interpolacion polinomica (de la cual la anterior es un caso particular),
la interpolacion por medio de spline o la interpolacion polinomica de Hermite.
-
2. Interpolacion y aproximacion 32
El objetivo principal de la interpolacion y aproximacion de funciones es poder estimar
valores funcionales a partir de cierto numero de datos iniciales. Este objetivo es funda-
mental ya que de el se deducen los metodos de derivacion e integracion numericas que
tendremos ocasion de ver mas adelante.
Un problema ya clasico es la construccion, o aproximacion de una funcion conocidos
unos pocos valores. Algunas referencias a este tipo de problemas se remontan al mane-
jo de tablas trigonometricas y posteriormente logartmicas y exponenciales donde unos
pocos valores estaban tabulados y para valores intermedios era necesario un proceso de
interpolacion. Se habla en este caso de un problema de interpolacion de Lagrange. Si
ademas del valor puntual, anadimos informacion sobre las derivadas estamos ante una
interpolacion de Hermite.
Este Capitulo trata sobre como encontrar polinomios interpolantes, mediante la imple-
mentacion de Interfaces Graficas de Usuario (GUI) en Matlab. Los metodos numericos
de Interpolacion y aproximacion de funciones suelen ser metodos iterativos que producen
un polinomio, que se espera, que converja a la funcion.
No abordaremos la teora de cada metodo, dado que esta se encuentra en el Capitulo
III: Ecuaciones no Lineales del Seminario de Matematica Pura FUNDAMENTOS DE
ECUACIONES NO LINEALES, INTERPOLACION, DIFERENCIACION
E INTEGRACION NUMERICA PARA EL CALCULO CIENTIFICO, aqui
comparemos los resultados con la implementacion de GUIs.
-
2. Interpolacion y aproximacion 33
2.1. Comparacion de Metodos Iteractivos
En esta seccion analizaremos la solucion del problema propuesto en la pag. 79 del Libro
Calculo Cientifico con Matlab y Octave cuyo enunciado es el siguiente:
Problema. Problema 3.1 (Climatologa) La temperatura del aire cerca de la tierra
depende de la concentracion K de acido carbonico (H2CO3) en el. En la Tabla 3.1
recogemos, para diferentes latitudes sobre la tierra y para diferentes valores de K, la
variacion K = K K de la temperatura promedio con respecto a la temperatura
promedio correspondiente a un valor de referencia K de K. Aqu K se refiere al valor
medido en 1896, y esta normalizado a uno. En este caso podemos generar una funcion
que, sobre la base de los datos disponibles, proporcione un valor aproximado de la
temperatura promedio en cualquier latitud posible y para otros valores de K.
Solucion. Datos Iniciales:
x = [55 25 + 5 + 35 + 65];
y = [3,25 3,2 3,02 3,32 3,1]
-
2. Interpolacion y aproximacion 34
Solucion 1. Utilizando el Metodo de Interpolacion de Lagrange.
-
2. Interpolacion y aproximacion 35
Solucion 2. Utilizando el Metodo de Diferencias Divididas Arriba.
-
2. Interpolacion y aproximacion 36
Solucion 3. Utilizando el Metodo de Diferencias Divididas Abajo.
-
2. Interpolacion y aproximacion 37
Solucion 4. Utilizando el Metodo de Polinomica a Trozos - Lineal.
-
2. Interpolacion y aproximacion 38
Solucion 5. Utilizando el Metodo de Polinomica a Trozos - Splines.
-
2. Interpolacion y aproximacion 39
Solucion 6. Utilizando el Metodo de Polinomica a Trozos - Cubica.
-
2. Interpolacion y aproximacion 40
Solucion 7. Utilizando el Metodo de Polinomica a Trozos - Discreta.
-
2. Interpolacion y aproximacion 41
Solucion 8. Utilizando el Metodo de Minimos Cuadrados - Grado 2.
-
2. Interpolacion y aproximacion 42
Solucion 9. Utilizando el Metodo de Minimos Cuadrados - Grado 3.
-
2. Interpolacion y aproximacion 43
Solucion 10. Utilizando el Metodo de Minimos Cuadrados - Grado 4.
-
2. Interpolacion y aproximacion 44
Solucion 11. Utilizando el Metodo de Minimos Cuadrados - Grado 5.
-
Captulo 3
CODIGO FUENTE DE LOS GUIS
3.1. Interpolacion de Lagrange
Listing 3.1: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
xc=min( X ) ; xd=max(X ) ;
yc=min( Y ) ; yd=max(Y ) ;
i f l ength ( X )==length ( Y )
axes ( handles . grafica )
ejes=[xc1 xd+1 yc1 yd+1] ;
nn=length ( X ) ;
f o r i=1:nn1
i f X ( i )
-
3. Codigo Fuente de los GUIS 46
x l abe l ( 'X ' ) ; y l abe l ( 'Y ' ) ;
g r i d on
end
hold on
s e t ( handles . pushbutton1 , ' enable ' , ' o f f ' )
s e t ( handles . pushbutton2 , ' enable ' , 'on ' )
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
Listing 3.2: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
aa=str2num ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
n1 = length ( X ) ;
n = n11;
L = zer o s ( n1 , n1 ) ;
i f l ength ( X )==length ( Y )
f o r k=1:n+1,
V = 1 ;
f o r j=1:n+1,
i f k = j ,
V = conv (V , poly ( X ( j ) ) ) /( X ( k )X (j ) ) ;
end
end
L (k , : ) = V ;
end
C = YL ;
PX=vpa ( poly2sym (C ) , 7 ) ;
fa=polyva l (C , aa ) ;
Pol =char ( PX ) ;
pa=num2str (fa , ' %20.12 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
s e t ( handles . edit4 , ' s t r i n g ' , Pol ) ;
p l o t (X , Y , 'om ' ) ;
g r i d on
ax i s ( ejes )
hold on
-
3. Codigo Fuente de los GUIS 47
drawnow
xc=min( X ) ; xd=max(X ) ;
p l o t (aa , fa , 'om ' ) ;
hold on
h2=ezplot (PX , [ xc xd ] ) ;
s e t ( h2 , 'Color ' , 'b ' , 'LineWidth ' , 2 )
t i t l e ( [ 'P( x) = ' Pol ] , ' f o n t s i z e ' , 8 , ' f ontwe ight ' , ' bold ' )
hold off
s e t ( handles . pushbutton1 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
-
3. Codigo Fuente de los GUIS 48
3.2. Diferencias Divididas Abajo
Listing 3.3: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
xc=min( X ) ; xd=max(X ) ;
yc=min( Y ) ; yd=max(Y ) ;
i f l ength ( X )==length ( Y )
axes ( handles . grafica )
ejes=[xc2 xd+2 yc2 yd+2] ;
nn=length ( X ) ;
f o r i=1:nn1
i f X ( i )
-
3. Codigo Fuente de los GUIS 49
Listing 3.4: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
aa=str2num ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
i f l ength ( X )==length ( Y )
n=length ( X ) ;
D=zer o s (n , n ) ;
D ( : , 1 )=Y ' ;
%Formula de l a tab la de d i f e r e n c i a d i v i d i da s hacia abajo .
f o r j=2:n
f o r k=j : n
D (k , j )=(D (k , j1)D (k1,j1) ) /( X ( k )X (kj+1) ) ;
end
end
%Determinando l o s c o e f i c i e n t e s de l o s po l i n om ios i n t e r p o l a n t e s de Newton
C=D (n , n ) ;
f o r k=(n1) :1:1
C=conv (C , poly (X (k ) ) ) ;
m=length ( C ) ;
C (m )=C (m )+D (k , k ) ;
end
PX=vpa ( poly2sym (C ) , 7 ) ;
fa=polyva l (C , aa ) ;
Pol =char ( PX ) ;
x=X (1) : 0 . 1 : X (n ) ;
t=x ; s=eva l ( PX ) ;
p l o t (X , Y , 'om ' ) ;
g r i d on
xc=min( X ) ; xd=max(X ) ;
p l o t (aa , fa , 'om ' ) ;
hold on
h2=ezplot (PX , [ xc xd ] ) ;
s e t ( h2 , 'Color ' , 'b ' , 'LineWidth ' , 2 )
t i t l e ( [ 'P( x) = ' Pol ] , ' f o n t s i z e ' , 8 , ' f ontwe ight ' , ' bold ' )
hold off
s e t ( handles . pushbutton1 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
pa=num2str (fa , ' %20.12 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
s e t ( handles . edit4 , ' s t r i n g ' , Pol ) ;
-
3. Codigo Fuente de los GUIS 50
3.3. Diferencias Divididas Arriba
Listing 3.5: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
xc=min( X ) ; xd=max(X ) ;
yc=min( Y ) ; yd=max(Y ) ;
i f l ength ( X )==length ( Y )
axes ( handles . grafica )
ejes=[xc2 xd+2 yc2 yd+2] ;
nn=length ( X ) ;
f o r i=1:nn1
i f X ( i )
-
3. Codigo Fuente de los GUIS 51
Listing 3.6: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
aa=str2num ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
i f l ength ( X )==length ( Y )
n=length ( X ) ;
D=zer o s (n , n ) ;
D ( : , 1 )=Y ' ;
%Formula de l a tab la de d i f e r e n c i a d i v i d i da s hacia a r r i ba .
f o r j=2:n
f o r k=j : n
D (k , j )=(D (k , j1)D (k1,j1) ) /( X ( k )X (kj+1) ) ;
end
end
%Determinando l o s c o e f i c i e n t e s de l o s po l i n om ios i n t e r po l an t e de Newton
C=D (n , n ) ;
f o r k=(n1) :1:1
C=conv (C , poly (X (k ) ) ) ;
m=length ( C ) ;
C (m )=C (m )+D (k , k ) ;
end
PX=vpa ( poly2sym (C ) , 7 ) ;
fa=polyva l (C , aa ) ;
Pol =char ( PX ) ;
x=X (1) : 0 . 1 : X (n ) ;
t=x ; s=eva l ( PX ) ;
p l o t (X , Y , 'om ' ) ;
g r i d on
xc=min( X ) ; xd=max(X ) ;
p l o t (aa , fa , 'om ' ) ;
hold on
h2=ezplot (PX , [ xc xd ] ) ;
s e t ( h2 , 'Color ' , 'b ' , 'LineWidth ' , 2 )
t i t l e ( [ 'P( x) = ' Pol ] , ' f o n t s i z e ' , 8 , ' f ontwe ight ' , ' bold ' )
hold off
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
pa=num2str (fa , ' %20.12 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
s e t ( handles . edit4 , ' s t r i n g ' , Pol ) ;
-
3. Codigo Fuente de los GUIS 52
3.4. Interpolacion a Trozos
Listing 3.7: Boton Calcular
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l lin spl cub near
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
aa=str2num ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
xc=min( X ) ; xd=max(X ) ;
yc=min( Y ) ; yd=max(Y ) ;
i f l ength ( X )==length ( Y )
axes ( handles . grafica )
ejes=[xc2 xd+2 yc2 yd+2] ;
ax i s ( ejes )
x l abe l ( 'X ' ) ; y l abe l ( 'Y ' ) ;
g r i d on
hold on
xf=xc : 0 . 0 1 : xd ;
opcion= get ( handles . popupmenu1 , 'Value ' ) ;
switch opcion
case 1
msgbox ( ' E l i j a uno de l o s metodos ' , 'warn ' ) ;
case 2
pa=num2str ( lin , ' %20.10 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
lin2=inte r p1 (X , Y , xf ) ;
p l o t ( xf , lin2 , 'Color ' , ' r ' )
p l o t (X , Y , 'om ' ) ;
p l o t ( aa , lin , ' b ' ) ;
case 3
pa=num2str ( spl , ' %20.10 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
spl2=inte r p1 (X , Y , xf , ' s p l i n e ' ) ;
p l o t ( xf , spl2 , 'Color ' , 'b ' )
p l o t (X , Y , 'om ' ) ;
p l o t ( aa , spl , ' go ' ) ;
case 4 ;
pa=num2str ( cub , ' %20.10 f ' ) ;
-
3. Codigo Fuente de los GUIS 53
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
cub2=inte r p1 (X , Y , xf , ' cubic ' ) ;
p l o t ( xf , cub2 , 'Color ' , ' g ' )
p l o t (X , Y , 'om ' ) ;
p l o t ( aa , cub , ' r ' ) ;
case 5
pa=num2str ( near , ' %20.10 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
near2=inte r p1 (X , Y , xf , ' nea r e s t ' ) ;
p l o t ( xf , near2 , ' Color ' , 'k ' )
p l o t (X , Y , 'om ' ) ;
p l o t ( aa , near , ' b ' ) ;
end
hold on
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
-
3. Codigo Fuente de los GUIS 54
3.5. Minimos Cuadrados
Listing 3.8: Boton Graficar
f unc t i on pushbutton1_Callback ( hObject , eventdata , handles )
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
xc=min( X ) ; xd=max(X ) ;
yc=min( Y ) ; yd=max(Y ) ;
i f l ength ( X )==length ( Y )
axes ( handles . grafica )
ejes=[xc1 xd+1 yc1 yd+1] ;
nn=length ( X ) ;
f o r i=1:nn1
i f X ( i )
-
3. Codigo Fuente de los GUIS 55
Listing 3.9: Boton Calcular
f unc t i on pushbutton2_Callback ( hObject , eventdata , handles )
c l c
g l oba l ejes
X=str2num ( get ( handles . edit1 , ' s t r i n g ' ) ) ;
Y=str2num ( get ( handles . edit2 , ' s t r i n g ' ) ) ;
n=str2num ( get ( handles . edit3 , ' s t r i n g ' ) ) ;
aa=str2num ( get ( handles . edit6 , ' s t r i n g ' ) ) ;
i f ( n/ f l o o r ( n )==1 & n>=1 )
i f l ength ( X )==length ( Y )
p=p o l y f i t (X , Y , n ) ;
PX=vpa ( poly2sym ( p ) , 7 ) ;
fa=polyva l (p , aa ) ;
Pol =char ( PX ) ;
pa=num2str (fa , ' %20.12 f ' ) ;
s e t ( handles . edit5 , ' s t r i n g ' , pa ) ;
s e t ( handles . edit4 , ' s t r i n g ' , Pol ) ;
p l o t (X , Y , 'om ' ) ;
g r i d on
hold on
drawnow
xc=min( X ) ; xd=max(X ) ;
p l o t (aa , fa , 'om ' ) ;
hold on
h2=ezplot (PX , [ xc xd ] ) ;
s e t ( h2 , 'Color ' , 'b ' , 'LineWidth ' , 1 . 5 )
t i t l e ( [ 'P( x) = ' Pol ] , ' f o n t s i z e ' , 8 , ' f ontwe ight ' , ' bold ' )
hold off
s e t ( handles . pushbutton1 , ' enable ' , 'on ' )
s e t ( handles . pushbutton2 , ' enable ' , ' o f f ' )
c l c
e l s e
msgbox ( 'REVISE EL TAMANO DE LOS VECTORES' , 'AVISO ' , 'warn ' ) ;
end
e l s e
msgbox ( 'EL GRADO DEBE SER UN NUMERO ENTERO POSITIVO ' , 'AVISO ' , 'warn ' ) ;
end
-
BIBLIOGRAFIA
[1] Buhmann, M. D. (2004). Radial Basis Functions: Theory and Implementations.
Cambridge University Press. United Kingdom.
[2] Aleman M.; Alvarez L.; Sanchez J. Analisis Numerico[en lnea]. [consulta 2012].
[3] Burden R.L; Faires J.D . (2001). Numerical Abalysis. Cengage Learning Latin
America.
[4] Cobos J. Apuntes de Calculo Numerico[en lnea].
http://ma1.eii.us.es/Material/Cal_Num_itis_Apuntes.pdf [consulta
2012]
[5] Comer E.(2009) Metodos Numericos Instituto Tecnologico de Tijuana.
[6] Mathews J.; Fink K.(2000) Metodos Numericos con MATLAB. Prentice Hall,
Madrid.
[7] Meja C.(2002) Invitacion al Analisis Numerico. Universidad Nacional de Colom-
bia, Medelln.
[8] Mora W.F.(2010) Introduccion a los Metodos Numericos. Instituto Tecnologico de
Costa Rica.
[9] Muller H. (1996) Una Introduccion al Analisi Numerico. Universidad Mayor de
San Simon. Cochabamba, Bolivia.
[10] Nakamura, S. (1992). Metodos Numericos Aplicados con Software. Pearson Edu-
cacion.
-
BIBLIOGRAFIA 57
[11] A. Quarteroni, F. Saleri. (2006). Calculo Cientifico con MATLAB y Octave.
Springer-Verlag, Italia, Milano.
[12] Velasquez J.(2007) Analisis Numerico. Ediciones Uninorte.
[13] Won Y. Yang , Wenwu Cao , Tae-Sang Chung , John Morris(2005) Applied Nu-
merical Methods Using MATLAB. John Wiley Sons.
[14] V. Dominguez. L. Rapun Matlab en cinco lecciones de Numerico[en lnea].
http://www.unavarra.es/personal/victor dominguez/ [consulta 2012]
[15] Carrasco V.(2011) Metodos Numericos Aplicados a la Ingeniera Problemas en
Polymath y Matlab. MACRO
[16] Morales M.(2010) Matlab R2010a Metodos Numericos con Visualizacion Grafica.
MACRO
[17] Amancio R., Orbegoso G., Munoz G., Villalta R. (2010) Matlab 2010 - Software
para ciencia e ingeniera. MACRO
[18] Moler, C. (2004) Numerical computing with Matlab. SIAM
[19] Pineiro G. APUNTES DE MATLAB [en lnea].
http://www.uhu.es/candido.pineiro/docencia/apuntesmatlab.pdf [consul-
ta 2012]
[20] J. Cooper A Matlab Companior for Multivariable Calculus
[21] Chavil M. Sistema experto en Maple Para el analisis de Curvas y superficies en
R3
[22] Gonzales M., Sanchez R. Graficas de curvas y superficies usando Matlab