-
Laboratorio 3 MA-4301: Interpolacin y Aproximacin Polinomial
Gonzalo Hernndez
UChile - Departamento de Ingeniera Matemtica
El objetivo de este laboratorio es aprender a utilizar los
comandos de Matlab que permiten para una funcino puntos
(datos):
1) Operar con polinomios.
2) Calcular el polinomio de interpolacin y de aproximacin.
3) Calcular el polinomio trigonomtrico de aproximacin.
Este tema es de gran importancia por su amplia variedad de
aplicaciones: Representacin de funciones,ajuste de datos, clculo de
parmetros de modelos, etc.
1 Operaciones con polinomios
En esta seccin se ensear cmo operar con polinomios:
i) Creacin y evaluacin de polinomios
ii) Calcular raices de polinomios
iii) Realizar operaciones aritmticas entre polinomios.
Utilizaremos como ejemplo estos polinomios:
p(x) = 5x5 + 6x2 + 7x+ 3 (1)
q(x) = x17 + 3x 1
El tipo de representacin que ocupa Matlab para los polinomios es
el de un vector la o columna con loscoecientes ordenados de
potencia mayor a menor, es decir, p y q se ingresan en Matlab de la
siguiente forma:
>> p=[5 0 0 6 7 3]
p =
5 0 0 6 7 3
>> q=[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 -1]
q =
Columns 1 through 9
1 0 0 0 0 0 0 0 0
Columns 10 through 18
0 0 0 0 0 0 0 3 -1
1
-
Un polinomio p se puede evaluar en Matlab en un punto, vector o
matriz x; utilizando el comando polyval:
y = polyval(p; x) (2)
Por ejemplo:
>> p=[5 0 0 6 7 3];
>> x=[0:0.1:1];
>> px=polyval(p,x)
px =
Columns 1 through 8
3.0000 3.7601 4.6416 5.6522 6.8112 8.1563 9.7488 11.6803
Columns 9 through 11
14.0784 17.1125 21.0000
Las races de un polinomio son los puntos donde su evaluacin es
igual a cero: x es raz de p(x) si y slo si:
p(x) = 0 (3)
El comando roots calcula el vector columna de todas las raices
del polinomio p, reales y complejas. Se utilizade la siguiente
forma:
r = roots(p) (4)
>> r=roots(p)
r =
0.8477 + 0.9836i
0.8477 - 0.9836i
-0.7393
-0.4780 + 0.5028i
-0.4780 - 0.5028i
Este clculo se realiza mediante los valores propios de la matriz
compaera de p: De forma inversa, el comandopoly(r) calcula el
polinomio normalizado (el coeciente de la potencia mayor es igual a
uno) cuyas racesestn dadas por r; es decir :
>> q=poly(r)
q = 1.0000 -0.0000 0.0000 1.2000 1.4000 0.6000
Dos polinomios del mismo grado pueden ser sumados (o restados)
de la misma forma como se suman o restanvectores. Cuando los
polinomios no tienen el mismo grado se debe crear un vector
auxiliar, que contenga elpolinomio de menor grado en la parte
izquierda, y a la derecha se rellene con ceros hasta obtener la
mismadimensin del vector representante del polinomio de mayor
grado. En nuestro caso, esto se debe hacer de lasiguiente
forma:
>> s=[zeros(1,12) p]
s =
Columns 1 through 9
0 0 0 0 0 0 0 0 0
Columns 10 through 18
0 0 0 5 0 0 6 7 3
2
-
>> s=s+q
s =
Columns 1 through 14
1 0 0 0 0 0 0 0 0 0 0 0 5 0
Columns 15 through 18
0 6 10 2
La multiplicacin o convolucin de polinomios esta implementada en
Matlab mediante el comando conv:
t = conv(p; q) (5)
Para utilizar esta funcin no es necesario que los polinomios p y
q tengan el mismo orden:
>> t=conv(p,q)
t =
Columns 1 through 14
5 0 0 6 7 3 0 0 0 0 0 0 0 0
Columns 15 through 23
0 0 15 -5 0 18 15 2 -3
El grado de t es 22, que corresponde a la suma de los grados de
p; q : 17; 5:
La divisin o deconvolucin de polinomios esta implementada en
Matlab mediante el comando deconv :
[d; r] = deconv(q; p) (6)
>> [d,r]=deconv(q,p)
d =
Columns 1 through 8
0.2000 0 0 -0.2400 -0.2800 -0.1200 0.2880 0.6720
Columns 9 through 13
0.6800 -0.0096 -1.1376 -1.9296 -1.3437
r =
Columns 1 through 8
0 0 0 0 0 0 0 -0.0000
Columns 9 through 16
0 0.0000 0.0000 0 0 4.8528 19.5696 24.9821
Columns 17 through 18
18.1946 3.0310
Si intentamos dividir el vector p por el vector q se
obtiene:
>> [d,r]=deconv(p,q)
d =
0
r =
5 0 0 6 7 3
Este resultado se debe a que el vector q tiene mayor grado que
p:
3
-
2 Interpolacin polinomial
En esta seccin se aprender a interpolar en base a datos
obtenidos de alguna funcin (que se puede conocero no) utilizando
los comandos interp1; interp2; polyfit; spline; csape. Las
instrucciones interp1; interp2interpolan datos en una y dos
dimensiones en forma nmerica. La instruccin polyfit calcula los
coecientesdel polinomio de interpolacin de Lagrange. Las
instrucciones spline; csape calcula en forma numrica ydetallada los
polinomios de interpolacin por trazos.
Sean (n + 1) puntos (x0; y0); :::; (xn; yn); tales que: x0 <
x1 < < xn: El polinomio de interpolacin deLagrange:
pL(x) =nXj=0
ajxj (7)
es el polinomio de menor grado que interpola estos puntos, es
decir, que verica:
yk = pL(xk) =nXj=0
ajxjk 8k = 0; 1; :::; n (8)
Para calcular pL(x) basta resolver el sistema de Van der
Monde:26664xn0 x
n10 x0 1
xn1 xn11 x1 1
......
. . ....
...xnn x
n1n xn 1
3777526664
anan1...a0
37775 =26664y0y1...yn
37775 (9)O bien, determinar pL(x) por su frmula analtica:
pL(x) =nXk=0
ykLn;k(x) (10)
Ln;k(x) =(x x0)(x x1) (x xk1)(x xk+1) (x xn)
(xk x0)(xk x1) (xk xk1)(xk xk+1) (xk xn)8k = 0; ; 1:::; n
En el caso que los puntos (xk; yk) sean parte de una funcin f(x)
de la cual no se conoce su forma analtica,es decir:
yk = f(xk) 8k = 0; 1; :::; n (11)
el mtodo de interpolacin entrega una forma de aproximar esta
funcin.
Teorema 1 Sean (n + 1) reales en el intervalo [a; b] tales que:
x0 < x1 < < xn; y x0 = a; xn = b:Entonces existe un nico
polinomio pL(x) de grado n denido por (10) que verica:
yk = pL(xk) 8k = 0; 1; :::; n (12)
Si adicionalmente, yk = f(xk) donde f 2 Cn+1 [a; b] ; entonces:
(8x 2 [a; b]) (9(x) 2 (a; b)) tal que:
f(x) = pL(x) +f (n+1) ((x))
(n+ 1)!(x x0)(x x1) (x xn) (13)
Demostracin. Ver refs. [2, 3].
4
-
Con respecto al comportamiento del error de polinomio de
Lagrange pL(x) :
eL(x) =f (n+1) ((x))
(n+ 1)!(x x0)(x x1) (x xn) (14)
es posible demostrar que para todo intervalo [a; b] existe una
funcin contnua f tal que pL no converge enforma uniforme a f: Basta
considerar la funcin:
f(x) =1
1 + x2(15)
en el intervalo [5; 5] :
-5 -4 -3 -2 -1 0 1 2 3 4 5-0.5
0
0.5
1
1.5
2
x
Inte
rpol
aci
n de
Lag
rang
e de
f(x)
=1/(1
+x2 )
Contraejemplo de Runge
f(x)p
L(x)
Figura 1. Contraejemplo de Runge para la funcin f(x) =1
1 + x2:
Para analizar la estabilidad de la interpolacin polinomial,
consideremos una perturbacin ef de la funcinf en los puntos xk: Si
epL es el polinomio de Lagrange de ef , es posible demostrar
que:
kpL epLk1 /n!1
2n+1
en log nmax
k=0;:::;n
f(xk) ef(xk) (16)si los puntos x0; x1; :::; xn son
equi-espaciados. Luego, calcular el polinomio de Lagrange es
inestable numri-camente en el caso de gran cantidad de puntos
equi-espaciados, ver ref. [2].
Para mejorar la precisin y estabilidad numrica se utilizan
polinomios de interpolacin de Lagrange portrazos. Sean (n + 1)
reales en el intervalo [a; b] tales que: x0 < x1 < < xn; y
x0 = a; xn = b: Sea pi;kL elpolinomio de Lagrange de grado k
calculado en los puntos xi; xi+1; :::; xi+k: Sean:
hj = xj+1 xj ; j = 0; :::; n 1 (17)h = max
j=0;:::;n1hj
Si f 2 Ck+1 [a; b] entonces aplicando (13):f pi;kL 1 chk+1 f
(k+1)1 (18)5
-
Luego, es posible obtener un error de interpolacin pequeo
inclusive para valores bajos de k; si h 0:Adicionalmente, es
posible demostrar convergencia del polinomio de interpolacin por
trazos en norma de:
L2(a; b) =
(f : (a; b)! R tal que
Z ba
jf(x)j2 dx 0independiente de h = max
j=0;:::;n1hj tal que:f pi;kL (m)
L2(a;b)
chk+1mf (k+1)
L2(a;b)(20)
Por ejemplo, para k = 1 y m = 0; 1 :f pi;1L L2(a;b)
c1h2f (2)
L2(a;b)(21)f pi;1L 0
L2(a;b)
c2hf (2)
L2(a;b)
Demostracin. Ver ref. [2].
Para mejorar la calidad de la interpolacin, adems de (7) se
imponen condiciones de interpolacin de lasderivadas de la funcin f:
Sean (n + 1) reales en el intervalo [a; b] tales que: x0 < x1
< < xn; yx0 = a; xn = b: El polinomio osculante se dene como
el polinomio de menor grado que satisface:
dkp(xi)
dxk=dkf(xi)
dxk8k = 0; :::;mi 8i = 0; :::; n (22)
donde mi son enteros no negativos para i = 0; :::; n; m =
maxi=0;:::;n
mi; f 2 Cm [a; b] : Si n = 0 el polinomioosculante es el
polinomio de Taylor; simi = 0 8i = 0; :::; n el polinomio osculante
es el polinomio de Lagrange;si mi = 1 8i = 0; :::; n el polinomio
osculante es el polinomio de Hermite.
Teorema 3 Sea f 2 Cm [a; b] y (n+1) reales en el intervalo [a;
b]: x0 < x1 < < xn; y x0 = a; xn = b: Elpolinomio de
Hermite pH(x) es el nico polinomio de grado a lo mas (2n+ 1) que
interpola f(x) y f 0(x) enlos puntos xi 8i = 0; :::; n :
pH(x) =nXk=0
f(xk)Hn;k(x) +nXk=0
f 0(xk) bHn;k(x) (23)donde:
Hn;k(x) =1 2 (x xk)L0n;k(x)
L2n;k(x) (24)bHn;k(x) = (x xk)L2n;k(x)
Adicionalmente, si f 2 C2n+2 [a; b] ; entonces: (8x 2 [a; b])
(9(x) 2 (a; b)) tal que:
f(x) = pH(x) +f (2n+2) ((x))
(2n+ 2)!(x x0)2(x x1)2 (x xn)2 (25)
Demostracin. Ver ref. [2].
6
-
Los comandos de Matlab interp1; interp2 interpolan datos en 1 y
2 dimensiones en forma numrica aplicandodiferentes mtodos (lineal,
spline cbico, Hermite cbico, etc): La instruccin polyfit calcula
los coecientesdel polinomio de interpolacin de Lagrange y de
aproximacin. Las instrucciones spline; csape; calculan enforma
numrica y detallada los polinomios de interpolacin por trazos:
splines.
El comando interp1 permite interpolar datos
unidimensionales:
yi = interp1(x; y; xi;0metodo0) (26)
x : Vector con los puntos conocidos de la abcisay : Vector con
los puntos conocidos de la ordenada.xi : Vector con los puntos que
se quiere interpolar de la abcisayi : Vector con los puntos
interpolados de la ordenada.
Los mtodos de interpolacin pueden ser:
Mtodo Descripcin0linear0 Interpolacin utilizando polinomios
lineales por intervalo (Default)0nearest0 Entrega el valor conocido
ms cercano0spline0 Interpolacin utilizando splines cbicos0cubic0
Interpolacin utilizando polinomios de Hermite cbicos por
intervalo
Observaciones:
i) Los vectores x e y deben tener la misma dimensin.
ii) Para los mtodos 0linear0 y 0nearest0; todos los elementos
del vector xi deben estar adentro del intervalode los valores del
vector x. Para los mtodos 0spline0 y 0cubic0, se puede
extrapolar.
iii) El comando interp1 no entrega los coecientes del polinomio
de interpolacin calculado de acuerdo almtodo seleccionado. Slo
entrega la evaluacin del polinomio de interpolacin en los puntos
xi:
Por ejemplo, para calcular la interpolacin lineal, de spline y
de Hermite de la funcin f(x) = x sin(x2) enel intervalo [0; 4] se
debe ejecutar la secuencia de instrucciones:
>> x=[0:0.5:4];
>> y=x.*sin(x.^2);
>> xi=[0:0.1:4];
>> yil=interp1(x,y,xi,linear);
>> yis=interp1(x,y,xi,spline);
>> yic=interp1(x,y,xi,cubic);
>> plot(xi,yil,-k);
>> hold on
>> plot(xi,yis,-r);
>> plot(xi,yic,-g);
7
-
0 0.5 1 1.5 2 2.5 3 3.5 4-2
-1.5
-1
-0.5
0
0.5
1
1.5
x
Inte
rpol
aci
n de
f(x)
Interpolacin lineal, de spline, de Hermite de f(x)=xsin(x 2)
LinealSpline cbicoHermite cbico
Figura 2. Interpolacin lineal, de spline, de Hermite de la uncin
f(x) = x sin(x2) en [0; 4]:
El comando interp2 interpola datos bidimensionales en forma
similar a interp1: Se utiliza de la siguienteforma:
zi = interp2(x; y; z; xi; yi;0metodo0) (27)
donde:(x; y) : Malla bidimensional con los puntos conocidos de
los ejes x; y:z : Malla bidimensional con los puntos conocidos del
eje z:(xi; yi) : Malla bidimensional con los puntos que se quiere
interpolar de los ejes x; y:Los mtodos de interpolacin pueden
ser:
Mtodo Descripcin0linear0 Interpolacin utilizando polinomios
lineales por intervalo (Default)0nearest0 Entrega el valor conocido
ms cercano0spline0 Interpolacin utilizando splines cbicos0cubic0
Interpolacin utilizando polinomios de Hermite cbicos por
intervalo
Para generar la malla bidimensional (x; y) se puede utilizar el
comando meshgrid :
[x; y] = meshgrid(ix : hx : fx; iy : hy : fy)
[x; y] = meshgrid(i : h : f) (28)
[x; y] = meshgrid(ux; uy)
donde:ix; iy : Son los valores iniciales de las variables x;
yhx; hy : Son los pasos de las variables x; yfx; fy : Son los
valores nales de las variables x; yPor ejemplo:
>> [x,y] = meshgrid(-1:0.5:1,0:0.25:1)
x =
-1.0000 -0.5000 0 0.5000 1.0000
8
-
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
y =
0 0 0 0 0
0.2500 0.2500 0.2500 0.2500 0.2500
0.5000 0.5000 0.5000 0.5000 0.5000
0.7500 0.7500 0.7500 0.7500 0.7500
1.0000 1.0000 1.0000 1.0000 1.0000
Si las variables x; y tienen igual rango y equiespaciado se
utiliza: [x; y] = meshgrid(i : h : f): Por ejemplo:
>> [x,y] = meshgrid(0:0.25:1)
x =
0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
0 0.2500 0.5000 0.7500 1.0000
y =
0 0 0 0 0
0.2500 0.2500 0.2500 0.2500 0.2500
0.5000 0.5000 0.5000 0.5000 0.5000
0.7500 0.7500 0.7500 0.7500 0.7500
1.0000 1.0000 1.0000 1.0000 1.0000
Para construir una malla no equiespaciada se utiliza [x; y] =
meshgrid(ux; uy) donde ux; uy son los valoresa asignar a las
variables x; y: Por ejemplo:
>> ux=[0 0.3 0.5 0.8]; uy=[0 0.1 0.3 0.7];
>> [x,y] = meshgrid(ux,uy)
x =
0 0.3000 0.5000 0.8000
0 0.3000 0.5000 0.8000
0 0.3000 0.5000 0.8000
0 0.3000 0.5000 0.8000
y =
0 0 0 0
0.1000 0.1000 0.1000 0.1000
0.3000 0.3000 0.3000 0.3000
0.7000 0.7000 0.7000 0.7000
Ejemplicaremos el comando interp2 calculando las interpolaciones
nearest; linear; cubic de la funcin peaksen el intervalo [3; 3]
:
>> [x,y] = meshgrid(-3:0.5:3); z = peaks(x,y);
>> [xi,yi] = meshgrid(-3:0.25:3);
>> zi1 = interp2(x,y,z,xi,yi,nearest); zi2 =
interp2(x,y,z,xi,yi,linear);
9
-
>> zi3 = interp2(x,y,z,xi,yi,cubic);
>> [xx,yy] = meshgrid(-3:0.1:3); zz = peaks(xx,yy);
>> subplot(2,2,1), surf(xx,yy,zz)
>> subplot(2,2,2), surf(xi,yi,zi1)
>> subplot(2,2,3), surf(xi,yi,zi2)
>> subplot(2,2,4), surf(xi,yi,zi3)
-50
5
-50
5-10
0
10
x
Funcin "peaks"
y -50
5
-50
5-10
0
10
x
Interpolacin peaks con mtodo 'nearest'
y
-50
5
-50
5-10
0
10
x
Interpolacin peaks con mtodo 'linear'
x -50
5
-50
5-10
0
10
x
Interpolacin peaks con mtodo 'cubic'
y
Figura 3. Interpolaciones nearest; linear; cubic de la funcin
peaks en el intervalo [3; 3]:
El comando polyfit calcula el polinomio de interpolacin de
Lagrange p de grado n :
[p; S] = polyfit(x; y; n) (29)
Los inputs de este comando son:x : Vector con los datos x0; x1;
:::; xn y : Vector con los datos y0; y1::::ynn : Grado del
polinomio
Los outputs de este comando son:p : Coecientes del polinomio de
aproximacin ordenados de mayor a menor potencia.S : Estructura que
contiene la matriz R de la factorizacin QR de la matriz de
Vandermonde, df los
grados de libertad, normr la norma de los errores, llamados
usualmente residuos.
Un spline cbico es un polinomio cbico S(x) denido por trazos que
interpola una funcin y = f(x) en elintervalo [a; b]: Para contruir
la spline slo se necesitan (n+ 1) puntos (xk; yk) tales que:
i) x0 = a < x1 < x2 < < xn1 < xn = b
ii) y0 = f(x0); y1 = f(x1); y2 = f(x2); :::; yn1 = f(xn1); yn =
f(xn)
10
-
Luego, S(x) es un polinomio cbico en el subintervalo [xk; xk+1]
denotado por Sk(x) para k = 0; 1; : : : ; (n1), y denido por:
S(x) =
8>>>>>>>>>:
S0(x) = a0 + b0(x x0) + c0(x x0)2 + d0(x x0)3 x 2 [x0; x1]S1(x)
= a1 + b1(x x1) + c1(x x1)2 + d1(x x1)3 x 2 [x1; x2]S2(x) = a2 +
b2(x x2) + c2(x x2)2 + d2(x x2)3 x 2 [x2; x3]
......
Sn1(x) = an1 + bn1(x xn1) + cn1(x xn1)2 + dn1(x xn1)3 x 2 [xn1;
xn]
(30)
Para determinar un spline cbico se imponen las siguientes
condiciones:
i) Condicin de Interpolacin:
S(xk) = Sk(xk) = f(xk) 8k = 0; 1; :::; n (31)
ii) Condicin de continuidad de S(x):
Sk(xk+1) = Sk+1(xk+1) 8k = 0; :::; n 2 (32)
iii) Condicin de continuidad de S0(x):
S0k(xk+1) = S0k+1(xk+1) 8k = 0; :::; n 2 (33)
iv) Condicin de continuidad de S00(x):
S00k (xk+1) = S00k+1(xk+1) 8k = 0; :::; n 2 (34)
Las condiciones i) - iv) generan (4n 2) ecuaciones. Las dos
ltimas ecuaciones se obienen de lascondiciones de frontera:
v) Condiciones de frontera:
(a) Natural, Libre o Variacional:
S00(x0) = S00(xn) = 0, c0 = cn = 0 (35)
(b) Segunda Derivada:
S00(x0) = f00(x0) (36)
S00(xn) = f00(xn)
(c) Sujeta:
S0(x0) = f0(x0) (37)
S0(xn) = f0(xn)
(d) Not a knot:
S0000 (x1) = S0001 (x1) (38)
S000n2(xn1) = S000n1(xn1)
11
-
(e) Peridica:
S0(x0) = S0(xn) (39)
S00(x0) = S00(xn)
Se deducirn a continuacin las ecuaciones que deben satisfacer el
spline, aplicando las condiciones i) - v)para las condiciones de
frontera natural y sujeta.Aplicando la condicin i):
ak = Sk(xk) = f(xk) 8k = 0; 1; :::; n (40)
Aplicando la condicin ii):
Sk(xk+1) = Sk+1(xk+1) 8k = 0; :::; n 2 (41)ak + bk(xk+1 xk) +
ck(xk+1 xk)2 + dk(xk+1 xk)3 = ak+1
Si se dene:hk = (xk+1 xk) 8k = 0; :::; n 1 (42)
se obtiene:ak + bkhk + ckh
2k + dkh
3k = ak+1 8k = 0; :::; n 2 (43)
Aplicando la condicin iii):
S0k(xk+1) = S0k+1(xk+1) 8k = 0; :::; n 2 (44)
bk + 2ckhk + 3dkh2k = bk+1
Aplicando la condicin iv):
S00k (xk+1) = S00k+1(xk+1) 8k = 0; :::; n 2 (45)
ck + 3dkhk = ck+1
Despejando dk de (45):
dk =1
3hk(ck+1 ck) (46)
y sustituyendo en (43) y (44) se obtienen las ecuaciones:
ak+1 = ak + bkhk + (ck+1 + 2ck)h2k3
8k = 0; :::; n 2 (47)
bk+1 = bk + (ck+1 + ck)hk 8k = 0; :::; n 2 (48)
Al despejar bk y bk1 de (47) se obtiene:
bk = (ak+1 ak)1
hk (ck+1 + 2ck)
hk3
8k = 0; :::; n 1 (49)
bk1 = (ak ak1)1
hk1 (ck + 2ck1)
hk13
8k = 1; :::; n
Si se reemplaza bk y bk1 en (48) para k = 1; :::; n se obtiene
nalmente:
bk = bk1 + (ck + ck1)hk1 8k = 1; :::; n 1
(ak+1 ak)1
hk (ck+1 + 2ck)
hk3= (ak ak1)
1
hk1 (ck + 2ck1)
hk13
+ (ck + ck1)hk1 (50)
(ck+1 + 2ck)hk (ck + 2ck1)hk1 + (ck + ck1)3hk1 = (ak+1 ak)3
hk (ak ak1)
3
hk1
12
-
ck1hk1 + ck(2kk1 + 2hk) + ck+1hk = (ak+1 ak)3
hk (ak ak1)
3
hk18k = 1; :::; n 1 (51)
A este sistema de (n 1) ecuaciones lineales se deben agregar las
condiciones de frontera libre o sujeta,obtenindose un sistema
tridiagonal de (n + 1) ecuaciones lineales para las (n + 1)
incgnitas c0; c1; :::; cn:Aplicando las condiciones de frontera
Libre o Natural:
c0 = 0 (52)
cn = 0
se obtiene el sistema:26666641 0 0 0h0 2(h0 + h1) h1 0...
. . .. . .
. . ....
0 hn2 2(hn2 + hn1) hn10 0 1
3777775
2666664c0c1...
cn1cn
3777775 =26666664
03(a2a1)
h1 3(a1a0)h0...
3(anan1)hn1
3(an1an2)hn20
37777775 (53)
Aplicando las condiciones de frontera sujetas:
S00(x0) = f0(x0) (54)
S0n(xn) = f0(xn)
se obtiene el sistema:
26666642h0 h0 0 0h0 2(h0 + h1) h1 0...
. . .. . .
. . ....
0 hn2 2(hn2 + hn1) hn10 hn1 2hn1
3777775
2666664c0c1...
cn1cn
3777775 =266666664
3(a1a0)h0
3f 0(x0)3(a2a1)
h1 3(a1a0)h0...
3(anan1)hn1
3(an1an2)hn23f 0(xn) 3(anan1)hn1
377777775(55)
Ambos sistemas tiene solucin nica si y slo si: x0 = a < x1
< x2 < < xn1 < xn = b:
A continuacin veremos un ejemplo para ambas condiciones de
frontera.
Ejemplo 4 Condicin de Frontera Natural: Consideremos los puntos
equiespaciados: x0 = 0; x1 = 14 ; x2 =12 ; x3 =
34 ; x4 = 1 y la funcin f(x) = sin(x): Luego: y0 = sin(0) = 0;
y1 = sin(
4 ) =
p22 ; y2 = sin(
2 ) =
1; y3 = sin(34 ) =
p22 ; y4 = sin() = 0: Para determinar el sistema (53) se
necesita calcular h0; h1; h2; h3
y a0;a1; a2; a3; a4: Como los puntos son equiespaciados: h0 = h1
= h2 = h3 = 14 : Los ak se determinan de(40): ak = f(xk) 8k = 0; 1;
:::; 4: Luego: a0 = 0; a1 =
p22 ; a2 = 1; a3 =
p22 ; a4 = 0: El sistema (53) queda:266664
1 0 0 0 0h0 2(h0 + h1) h1 0 00 h1 2(h1 + h2) h2 00 0 h2 2(h2 +
h3) h30 0 0 0 1
377775266664c0c1c2c3c4
377775 =2666664
03(a2a1)
h1 3(a1a0)h0
3(a3a2)h2
3(a2a1)h13(a4a3)
h3 3(a3a2)h20
3777775 (56)Reemplazando los valores:266664
1 0 0 0 014 1
14 0 0
0 14 114 0
0 0 14 114
0 0 0 0 1
377775266664c0c1c2c3c4
377775 =266664
0
12(1p2)
12(p2 2)
12(1p2)
0
377775 =266664
04: 970 67: 029 44: 970 6
0
377775 (57)
13
-
Cuya solucin es: 266664c0c1c2c3c4
377775 =266664
03: 672 35: 193 33: 672 3
0
377775 (58)Finalmente se tienen que determinar los bk y dk: Para
ello se utilizan las ecuaciones:
bk = (ak+1 ak)1
hk (ck+1 + 2ck)
hk3
8k = 0; :::; n 1 (59)
dk =1
3hk(ck+1 ck) 8k = 0; :::; n 1
Luego: 2664b0b1b2b3
3775 =26664(a1 a0) 1h0 (c1 + 2c0)
h03
(a2 a1) 1h1 (c2 + 2c1)h13
(a3 a2) 1h2 (c3 + 2c2)h23
(a4 a3) 1h3 (c4 + 2c3)h33
37775 =2664
3:13442:21640
2:2164
3775 (60)2664d0d1d2d3
3775 =2664
13h0(c1 c0)
13h1(c2 c1)
13h2(c3 c2)
13h3(c4 c3)
3775 =26644:89632:02812:02814:8963
3775 (61)Ejemplo 5 Condicin de Frontera Sujeta: Consideremos los
puntos equiespaciados: x0 = 0; x1 = 14 ; x2 =12 ; x3 =
34 ; x4 = 1 y la funcin f(x) = cos(x): Luego: y0 = cos(0) = 1;
y1 = cos(
4 ) =
p22 ; y2 = cos(
2 ) =
0; y3 = cos(34 ) =
p22 ; y4 = cos() = 1: Para determinar el sistema (55) se
necesita calcular h0; h1; h2; h3
y a0;a1; a2; a3; a4: Como los puntos son equiespaciados: h0 = h1
= h2 = h3 = 14 : Los ak se determinan de(0): ak = f(xk) 8k = 0; 1;
:::; 4: Luego: a0 = 1; a1 =
p22 ; a2 = 0; a3 =
p22 ; a4 = 1: El sistema (55)
queda:
2666642h0 h0 0 0 0h0 2(h0 + h1) h1 0 00 h1 2(h1 + h2) h2 00 0 h2
2(h2 + h3) h30 0 0 h3 2h3
377775266664
c0c1c2cn1cn
377775 =26666664
3(a1a0)h0
3f 0(x0)3(a2a1)
h1 3(a1a0)h0
3(a3a2)h2
3(a2a1)h13(a4a3)
h3 3(a3a2)h2
3f 0(x4) 3(a4a3)h3
37777775 (62)
Reemplazando los valores:26666412
14 0 0 0
14 1
14 0 0
0 14 114 0
0 0 14 114
0 0 0 1412
377775266664c0c1c2c3c4
377775 =2666664
12(p22 1)
12(1p2)
0
12(1p2)
12(p22 1)
3777775 =2666643: 514 74: 970 6
04: 970 63: 514 7
377775 (63)
Cuya solucin es: 266664c0c1c2c3c4
377775 =2666645: 193 33: 672 2
03: 672 25: 193 3
377775 (64)
14
-
Finalmente se tienen que determinar los bk y dk: Para ello se
utilizan las ecuaciones:
bk = (ak+1 ak)1
hk (ck+1 + 2ck)
hk3
8k = 0; :::; n 1 (65)
dk =1
3hk(ck+1 ck) 8k = 0; :::; n 1
Luego: 2664b0b1b2b3
3775 =26664(a1 a0) 1h0 (c1 + 2c0)
h03
(a2 a1) 1h1 (c2 + 2c1)h13
(a3 a2) 1h2 (c3 + 2c2)h23
(a4 a3) 1h3 (c4 + 2c3)h33
37775 =2664
02:21643:13442:2164
3775 (66)2664d0d1d2d3
3775 =2664
13h0(c1 c0)
13h1(c2 c1)
13h2(c3 c2)
13h3(c4 c3)
3775 =26642:02814:89634:89632:0281
3775 (67)Ejemplo 6 Construyamos mediante splines cbicas
naturales el contorno de la citroneta de la fotografa:
Figura 4. Fotograa de citroneta.
1) Primero, se realiza la toma de datos usando una malla
cuadriculada sobre la fotografa:
Figura 5. Discretizacin de borde de citroneta.
2) Luego, los datos se tabulan. Se realizar la interpolacin por
partes. Los datos del contorno superiorson 24 k 0 1 2 3 4 5 6 7 8 9
10 11 12xk 2 2:7 3:8 6 8 10 13 16 18 21 25 30 36
yk 5 7:8 9 10 10:2 10:3 10:4 14:5 15 15:4 15:5 14 5
35 (68)15
-
3) Ahora se calculan los elementos del sistema de spline
natural:26666641 0 0 0h0 2(h0 + h1) h1 0...
. . .. . .
. . ....
0 hn2 2(hn2 + hn1) hn10 0 1
3777775
2666664c0c1...
cn1cn
3777775 =26666664
03(a2a1)
h1 3(a1a0)h0...
3(anan1)hn1
3(an1an2)hn20
37777775(69)
Para simplicar los clculos se dene:
hk = xk+1 xkk =
yk+1 ykhk
(70)
k = 3 (k k1)2664k 0 1 2 3hk 0:7 1:1 2:2 2k
2:80:7 = 4
1:21:1 =
1211
12:2 =
511
0:22 =
110
k 3 ( 1211 4) = 9611 3 (
511
1211 ) =
2111 3 (
110
511 ) =
117110
3775 (71)2664k 4 5 6 7hk 2 3 3 2k
0:12 =
120
0:13 =
130
4:13 =
4130
0:52 =
14
k 3 ( 120 110 ) =
320 3 (
130
120 ) =
120 3 (
4130
130 ) = 4 3 (
14
4130 ) =
6720
3775 (72)2664k 8 9 10 11hk 3 4 5 6k
0:43 =
215
0:14 =
140
1:55 =
310
96 =
32
k 3 ( 215 14 ) =
720 3 (
140
215 ) =
1340 3 (
310
140 ) =
3940 3 (
32 +
310 ) =
185
3775(73)
4) Usando las condiciones de borde de spline natural: S00(x0) =
0; S
00(xn) = 0; y reemplazando valores,
el sistema de spline es:2666666666666666666664
1 0 0 0 0 0 0 0 0 0 0 0 0710
185
1110 0 0 0 0 0 0 0 0 0 0
0 1110335
115 0 0 0 0 0 0 0 0 0
0 0 115425 2 0 0 0 0 0 0 0 0
0 0 0 2 8 2 0 0 0 0 0 0 00 0 0 0 2 10 3 0 0 0 0 0 00 0 0 0 0 3
12 3 0 0 0 0 00 0 0 0 0 0 3 10 2 0 0 0 00 0 0 0 0 0 0 2 10 3 0 0 00
0 0 0 0 0 0 0 3 14 4 0 00 0 0 0 0 0 0 0 0 4 18 5 00 0 0 0 0 0 0 0 0
0 5 22 60 0 0 0 0 0 0 0 0 0 0 0 1
3777777777777777777775
2666666666666666666664
c0c1c2c3c4c5c6c7c8c9c10c11c12
3777777777777777777775
=
2666666666666666666664
0 9611 2111 117110 320 1204 6720 720 1340 3940 1850
3777777777777777777775
)
26666666666666666664
c0c1c2c3c4c5c6c7c8c9c10c11
37777777777777777775
2666666666666666666664
02: 4820:188 80:193 20:071 970:169 70:500 90:500 70:077 070:039
770:000 133 40:163 7
0
3777777777777777777775(74)
5) Se construye la spline natural, 8k = 0; 1; :::; 11
Sk(x) = ak + bk(x xk) + ck(x xk)2 + dk(x xk)3 (75)
ak = yk bk = (ak+1 ak)1
hk (ck+1 + 2ck)
hk3
dk =ck+1 ck3hk
16
-
La spline cbica es:
S(x) =
8>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>:
S0(x) = 1: 182x3 + 7: 091x2 9: 604x+ 5: 297 x 2 [2; 2:7]S1(x) =
0:809 3x
3 9: 038x2 + 33: 94x 33: 9 x 2 [2:7; 3:8]S2(x) = 0:05788x3 +
0:848 6x2 3: 623x+ 13: 69 x 2 [3:8; 6]S3(x) = 0:044 2x
3 0:988 7x2 + 7: 401x 8: 359 x 2 [6; 8]S4(x) = 0:04028x3 + 1:
039x2 8: 818x+ 34: 89 x 2 [8; 10]S5(x) = 0:07451x
3 2: 405x2 + 25: 62x 79: 9 x 2 [10; 13]S6(x) = 0:111 3x3 + 4:
841x2 68: 58x+ 328:3 x 2 [13; 16]S7(x) = 0:096 3x
3 5: 123x2 + 90: 84x 522 x 2 [16; 18]S8(x) = 0:01298x3 + 0:778
1x2 15: 37x+ 115: 3 x 2 [18; 21]S9(x) = 0:003325x
3 0:249 3x2 + 6: 201x 35: 68 x 2 [21; 25]S10(x) = 0:01092x3 +
0:819 3x2 20: 51x+ 186: 9 x 2 [25; 30]S11(x) = 0:009094x
3 0:982 2x2 + 33: 53x 353: 5 x 2 [30; 36]
6) Ahora, se tabulan los datos de la parte inferior del
escarabajo. Dada su forma, se interpolar portrazos usando
polinomios de grado 1 y 2:
xk 2 3 7 12 36yk 5 4 7:9 3:8 5
(76)
f0(x) = 5(x 3)2 3 + 4
(x 2)3 2 = x+ 7
f1(x) = 4(x 7)(x 12)(3 7)(3 12) + 7:9
(x 3)(x 12)(7 3)(7 12) + 3:8
(x 3)(x 7)(12 3)(12 7) = 0:199 4x
2 + 2: 969x 3: 113(77)
f2(x) = 3:8(x 36)(12 36) + 5
(x 12)(36 12) = 0:05x+ 3: 2
Luego, esta funcin queda denida por trozos segn:
f(x) =
8
-
Teorema 7 Sea f 2 C4[a; b] y una malla de puntos x0 = a < x1
< x2 < < xn1 < xn = b en [a; b];donde h = max
i=0;:::;n1(xi+1 xi). Si S es la spline sujeta determinada en los
puntos x0; x1; :::; xn; entonces:f (j) S(j)f 1 jh4j f (4)1 para j =
0; 1; 2; 3 (79)
El valor de las constantes j es igual a:
0 =5
3841 =
1
242 =
3
8(80)
3 =1
2
0@ hmin
i=0;:::;n1(xi+1 xi)
+
mini=0;:::;n1
(xi+1 xi)
h
1ADemostracin. Ver refs. [2, 3].
Teorema 8 Sea r 2 C2[a; b] una funcin que satisface las
condiciones de interpolacin sujetas en los puntosx0 = a < x1
< x2 < < xn1 < xn = b para una funcin f :
r(xk) = f(xk) 8k = 0; 1; :::; n (81)r0(x0) = f
0(x0); r0(xn) = f
0(xn)
Entonces, si Sf es la spline sujeta de f calculada en los puntos
(x0; f(x0)); (x1; f(x1)); :::; (xn; f(xn)):
bZa
S00f (x)2 dx bZa
jr00(x)j2 dx (82)
Adicionalmente, para toda spline cbica pS que interpola la
funcin f :
bZa
f 00(x) S00f (x)2 dx bZa
jf 00(x) p00S(x)j2dx (83)
Demostracin. Ver refs. [2, 3].
Estos 2 resultados justican el uso de splines sujetas. El primer
teorema establece la convergencia uniformede la spline Sf ; S0f ;
S
00f a f y su primera y segunda derivada, si h ! 0: El segundo
teorema establece una
propiedad de optimalidad: la spline sujeta Sf es la que oscila
menos de todas las funciones suaves queinterpolan a f:
El comando spline determina completamente la spline cbica,
incluyendo todos sus coecientes. Adicional-mente, permite imponer
una condicin de borde sujeta. Se utiliza de la siguiente forma:
pp = spline(x; [dl y dr]) (84)
donde dl; dr son los valores de la derivada en el extremo
izquierdo y derecho del intervalo y pp es unaestructura de
polinomio por trazo que contiene:
- Los puntos x denominados por Matlab breaks
18
-
- Los coecientes de la splines cbica coefs ordenados de potencia
mayor a menor:
coefs =
26664d0 c0 b0 a0d1 c1 b1 a1...
......
...dn1 cn1 bn1 an1
37775 (85)
- La cantidad de intervalos l
- El orden de las splines: k = 4
- La dimensin de las splines: d = 1
Por ejemplo, la secuencia de comandos:
>> x=[0:0.5:4]; y=x.*sin(x);
>> pp=spline(x,[1 y -1])
pp =
form: pp
breaks: [0 0.5000 1 1.5000 2 2.5000 3 3.5000 4]
coefs: [8x4 double]
pieces: 8
order: 4
dim: 1
calculan la spline cbica de la funcin f(x) = x sin(x) en el
intervalo [0; 4] utilizando una malla de puntosequi-espaciados a
distancia h = 0:5 y condiciones de borde S0(0) = 1; S0(4) = 1: Para
evaluar la spline ppen puntos distintos a los breaks se utilizan
las instrucciones ppval o fnval:
>> xi=[0:0.25:4];
>> yi=ppval(pp,xi);
>> yi=fnval(pp,xi);
El comando csape, del Spline Toolbox, calcula la spline cbica
con condiciones de borde generalizadas:
pp = csape(x; [cb0 y cbn]; [d0 dn]) (86)
S(d0)(x0) = cb0 S(dn)(xn) = cbn
Por ejemplo, para calcular la spline de f(x) = x cosx2con
condiciones de borde y0(0) = 1; y00(6) = 146:26
se utiliza el comando csape de la siguiente forma:
>> x=[0:0.25:6]; y=x.*cos(x.^2);
pp=csape(x,[1 y 146.26],[1 2])
pp =
form: pp
breaks: [1x25 double]
coefs: [24x4 double]
pieces: 24
order: 4
dim: 1
19
-
0 1 2 3 4 5 6-6
-4
-2
0
2
4
6
x
Interpolacin mediante splines de f(x)=xcos(x 2)
DatosSpline
f(x)=xcos(x 2)
Figura 7. Spline sujeta de f(x) = x cos(x2):
Las instrucciones unmkpp y mkpp extraen la informacin de pp y
crean la estructura pp:
>> [breaks,coefs,l,k,d] = unmkpp(pp)
breaks =
Columns 1 through 8
0 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.7500
Columns 9 through 16
2.0000 2.2500 2.5000 2.7500 3.0000 3.2500 3.5000 3.7500
Columns 17 through 24
4.0000 4.2500 4.5000 4.7500 5.0000 5.2500 5.5000 5.7500
Column 25
6.0000
coefs =
-0.0671 0.0090 1.0000 0
-0.6686 -0.0413 0.9919 0.2495
-1.7634 -0.5428 0.8459 0.4845
-2.4649 -1.8653 0.2438 0.6344
-0.6436 -3.7140 -1.1510 0.5403
5.8773 -4.1967 -3.1287 0.0104
13.8103 0.2113 -4.1250 -0.9423
8.5869 10.5690 -1.4300 -1.7445
-22.4113 17.0092 5.4646 -1.3073
-46.5561 0.2007 9.7671 0.7718
11.3206 -34.7164 1.1381 2.4986
104.9478 -26.2259 -14.0974 0.7903
-1.7704 52.4850 -7.5326 -2.7334
-198.5018 51.1572 18.3779 -1.3639
88.0988 -97.7191 6.7374 3.3263
273.1748 -31.6451 -25.6037 0.2797
-412.4744 173.2360 9.7941 -3.8306
20
-
96.1197 -136.1198 19.0731 3.0002
447.0089 -64.0300 -30.9643 0.7629
-845.3628 271.2266 20.8348 -3.9956
912.5079 -362.7955 -2.0574 4.9560
-695.5229 321.5854 -12.3599 -3.9751
345.3596 -200.0568 18.0222 2.1664
18.8895 58.9629 -17.2512 -0.4353
l = 24
k = 4
d = 1
>> pp = mkpp(breaks,coefs);
Es posible realizar otras operaciones sobre la estructura pp
como por ejemplo: gracar, calcular mnimos,mximos y ceros, derivar,
integrar, etc. Las funciones fnder y fnint devuelven la derivada e
integral de laspline en la forma pp.
>> fnplt(pp)
>> [minval,minx] = fnmin(pp,[c d])
>> z = fnzeros(pp,[a b])
>> der_pp = fnder(pp,dorder)
>> int_pp = fnint(pp)
ACT 1: Interpolacin polinomial:
1) Utilizando una de las fotos de las Torres del Paine
(foto-torres-del-paine-1.jpg, foto-torres-del-paine-2.jpg) dena una
malla de al menos 21 puntos (xk; yk), no necesariamente
equi-espaciados.
Genere un archivo Excel con esta malla: torresdelpaine.xls.
2) Desde Matlab importe los datos del archivo
torresdelpaine.xls, guardando los datos importados en losvectores
x; y: Escriba en el informe los comandos utilizados.
Hint: Para importar datos desde algn archivo Excel, este debe
estar visualizado en el Current Directoryde Matlab, y luego
utilizar el siguiente comando:
[var1; text; cell_array; var2] = xlsread(0archivo0;0 planilla0;0
rango0;0 function_handle0) (87)
Los inputs de esta instruccin son:
0archivo0: Nombre del archivo Excel del cual se importarn los
datos.
0planilla0: Nombre de la planilla u hoja que especica desde
donde se importarn los datos.
0rango0: Regin de la planilla de la cual se importarn los datos.
Se ocupa la notacin de Excel, porejemplo: 0C2 : E50.
0function_handle0 : Referencia a una funcin que se quiere
aplicar antes de asignar los valores a var1:Esta funcin tiene como
output: var1; var2:
Los outputs de esta instruccin son:
var1 : Datos importados en formato double, excepto en las
casillas dentro del rango importado queestn vacias o tengan texto.
En este caso, se asigna el valor 0NAN 0:
21
-
text : Variable tipo cell array que contiene todas las casillas
con texto dentro del rango importado.
cell_array : Variable tipo cell array que contiene todas las
casillas dentro del rango importado, nmer-icas o de texto.
var2 : Segundo output de la funcin 0function_handle0:
Por ejemplo:
>>
[var1,text,cellarray]=xlsread(datos.xls,Hoja1,A1:B4)
var1 =
1.0000 0.1100
2.0000 0.2200
3.0000 0.3300
text = datos_x datos_y
cellarray =
datos_x datos_y
[ 1] [ 0.1100]
[ 2] [ 0.2200]
[ 3] [ 0.3300]
Para escribir datos a un archivo Excel, este (en el caso que
exista) debe estar visualizado en el CurrentDirectory de Matlab, y
luego utilizar el siguiente comando:
xlswrite(0archivo0; variable;0 planilla0;0 rango0) (88)
Observaciones:
- En el caso que el archivo no exista, se crea un archivo con el
nombre especicado. En el caso quela planilla no exista, se crea una
planilla con el nombre especicado.
- En el caso que el rango especicado tenga dimensin menor que el
de la variable, entonces secopian en el archivo solo los datos en
el rango.
3) Utilizando los datos importados a las variables x; y y una
malla ms na de puntos xi; calcule lainterpolacin por trazos
utilizando los mtodos: lineal, cbico y spline cbico.
Graque estas 3 interpolacines en un msmo grco, destacando los
datos importados. Exporte lainterpolacin en el mismo archivo Excel,
en la planilla 0Spline0. Incluya en el informe los comandosque
utiliz para hacer este clculo, como tambin los resultados y grcos
generados.
4) Un spline curtico S(x) es un polinomio de grado 4 denido por
trazos, que interpola datos o unafuncin y = f(x) en el intervalo
[x0; xn]: Para contruir la spline slo se necesitan (n+1) puntos
(xk; yk)tales que: x0 = a < x1 < < xn1 < xn = b; y0 =
f(x0); y1 = f(x1); :::; yn = f(xn): El polinomioS(x) ser denotado
por Sk(x) en el subintervalo [xk; xk+1] para k = 0; 1; : : : ; n 1
:
Sk(x) = ak + bk(x xk) + ck(x xk)2 + dk(x xk)3 + ek(x xk)4 8x 2
[xk; xk+1] (89)
(a) Determine la cantidad de ecuaciones que se necesitan para
calcular en forma nica un spline cur-tico que interpola los puntos
(x0; y0); :::; (xn; yn):Determine las condiciones que debe vericar
el spline curtico. Puede utilizar 2 tipos de condi-ciones de
borde.
22
-
(b) Determine en forma explcita las ecuaciones que debe vericar
el spline curtico. Despeje todoslos coecientes en funcin de uno
solo. Construya un sistema lineal para estos coecientes.
(c) Programe la funcin spline_cuartica.m que reciba como input
los puntos (x0; y0); :::; (xn; yn) yentrega como resultado
i) Un arreglo s con los coecientes de la spline curtica
ordenados de mayor a menor potencia:
s =
26664e0 d0 c0 b0 a0e1 d1 c1 b1 a1...
......
......
en1 dn1 cn1 bn1 an1
37775 (90)ii) El error de aproximacin en el intervalo [a; b], en
el caso que los datos provengan de unafuncin y = f(x):
iii) El grco de la spline curtica calculado en una malla na de
puntos denida en [x0; xn]
La funcin spline_cuartica.m adicionalmente tiene que vericar la
condicin: x0 < x1 < < xn:Si no se cumple, se debe imprimir
un mensaje de error y salir del programa sin ejecutar
lasinstrucciones.
(d) Compare los resultados de las interpolaciones por trazos
calculadas: splines lineal, cuadrticas,cbicas y curticas en cuanto
a:
i) Complejidad del mtodo: Cantidad de ops necesarias para
obtener la solucin.
ii) Errores de aproximacin: Calidad de interpolacin.
Qu interpolacin se asemeja ms a la foto seleccionada ?
Hint: Para calcular la interpolacin por splines cuadrticas puede
utilizar la funcin spline_cuadratica.mque se adjunta.
3 Aproximacin polinomial
El problema de calcular el polinomio de aproximacin pm de grado
m de una funcin f 2 F consiste endeterminar la solucin del
problema:
kf pmkF = minq2Pmkf qkF (91)
Revisaremos los casos de aproximacin uniforme de funciones
contnuas F = C[a; b] y de funciones decuadrado integrable F = L2(a;
b):
El teorema de Weierstrass arma que toda funcin f contnua puede
ser aproximada uniformemente por unpolinomio en un intervalo [a;
b]: Esta aproximacin se construye con la base de polinomios de
Bernstein degrado m:
bm;j(x) =
m
j
xj(1 x)mj j = 0; :::;m (92)
Un polinomio p(x) de grado m cualquiera se expresa en esta base
segn:
p(x) =mXj=0
jbm;j(x) (93)
23
-
Los coecientes j se denominan los coecientes de Bernstein o
Bzier. Para una funcin f contnua laaproximacin polinomial pf;Bm(x)
de Bernstein de grado m en el intervalo [0; 1] se dene como:
pf;Bm(x) =mXj=0
fjm
bm;j(x) (94)
Luego:kf pf;Bmk1 = minq2Pm
kf qk1 (95)
En el caso de funciones de cuadrado integrable F = L2(a; b); si
consideramos la base de standard de PmBm =
1; x; x2; :::; xm
; se tiene que:
kf pmk2L2(a;b) = minq2Pmkf qk2L2(a;b) (96)
c = mina0;a1;:::;am
bZa
f(x)
mXk=0
akxk
!2dx
Dado que la funcin "C (a0; a1; :::; am) es cuadrtica y convexa
con respecto a los coecientes a0; a1; :::; am,para determinar el
polinomio pm basta aplicar las condiciones de optimalidad de primer
orden:
@"c@a0
= 0
@"c@a1
= 0 (97)
...@"c@am
= 0
cuya solucin est dada por las ecuaciones normales contnuas:
26666666664
Z ba
x0dx
Z ba
x1dx
Z ba
x2dx Z ba
xmdxZ ba
x1dx
Z ba
x2dx
Z ba
x3dx Z ba
xm+1dx
......
.... . .
...Z ba
xmdx
Z ba
xm+1dx
Z ba
xm+2dx Z ba
x2mdx
37777777775
26664a0a1...am
37775 =
26666666664
Z ba
x0f(x)dxZ ba
x1f(x)dx
...Z ba
xmf(x)dx
37777777775(98)
266664(b a) b2a22
b3a33
bm+1am+1m+1
b2a22
b3a33
b4a44
bm+2am+2m+2
......
......
...bm+1am+1
m+1bm+2am+2
m+2bm+3am+3
m+3 b2m+1a2m+1
2m+1
37777526664a0a1...am
37775 =
26666666664
Z ba
x0f(x)dxZ ba
x1f(x)dx
...Z ba
xmf(x)dx
37777777775Por ejemplo, si f(x) = sin(x) y se quiere determinar
su aproximacin de mnimos cuadrados de grado 3
24
-
p3(x) en [0; 1] :
26641 1=2 1=3 1=41=2 1=3 1=4 1=51=3 1=4 1=5 1=61=4 1=5 1=6
1=7
37752664a0a1a2a3
3775 =2664
2=1=
(2 4)=3(2 6)=3
3775 =
266666666664
Z 10
x0 sin(x)dxZ 10
x1 sin(x)dxZ 10
x2 sin(x)dxZ 10
x3 sin(x)dx
377777777775=
26642=1=
(2 4)=3(2 6)=3
3775 (99)
2664a0a1a2a3
3775 =2664
13
122 120
13
602 720
13
602 720
0
3775 =26645: 046 5 102
4: 122 54: 122 5
0
3775 (100)
0 0.2 0.4 0.6 0.8 1-0.2
0
0.2
0.4
0.6
0.8
1
1.2
x
f(x)
=sin
( x)
vs
p 3
Aproximacin mnimos cuadrados standard de f(x)=sin( x)
f(x)p3(x)
Figura 8. Aproximacin de mnimos cuadrados de f(x) = sin(x) en
[0; 1]:
El sistema de mnimos cuadrados (98) denido por la base standard
de Pm Bm =1; x; x2; :::; xm
genera
una matriz mal condicionada. Para solucionar este problema y
obtener un sistema ms simple de resolverse utilizan bases
ortogonales de Pm.
Consideremos una base ortogonal BPm = f0; 1; :::; mg de Pm en
L2(a; b) con respecto a una funcin depeso ! tal que: ! > 0 8x 2
[a; b]; es decir:
bZa
!(x)i(x)j(x)dx =
i > 00
si i = jsi i 6= j (101)
i =
bZa
!(x)2i (x)dx
En este caso el problema de mnimos cuadrados se reduce a :
kf pmk2L2!(a;b) = minq2Pmkf qk2L2!(a;b) (102)
c = mina0;a1;:::;am
bZa
!(x)
f(x)
mXk=0
akk(x)
!2dx
25
-
Nuevamente la funcin "c (a0; a1; :::; am) es cuadrtica y convexa
con respecto a los coecientes a0; a1; :::; am.Para determinar el
polinomio pm basta aplicar las condiciones de optimalidad de primer
orden:
@"c@a0
= 0
@"c@a1
= 0 (103)
...@"c@am
= 0
cuya solucin est dada por las ecuaciones normales contnuas:
26666666664
Z ba
!(x)20(x)dx
Z ba
!(x)0(x)1(x)dx Z ba
!(x)0(x)m(x)dxZ ba
!(x)1(x)0(x)dx
Z ba
!(x)21(x)dx Z ba
!(x)1(x)m(x)dx
......
. . ....Z b
a
!(x)m(x)0(x)dx
Z ba
!(x)m(x)1(x)dx Z ba
!(x)2m(x)dx
37777777775
26664a0a1...am
37775 =
26666666664
Z ba
!(x)f(x)0(x)dxZ ba
!(x)f(x)1(x)dx
...Z ba
!(x)f(x)m(x)dx
37777777775(104)
26666666664
Z ba
!(x)20(x)dx 0 0
0
Z ba
!(x)21(x)dx. . .
...
.... . .
. . . 0
0 0Z ba
!(x)2m(x)dx
37777777775
26664a0a1...am
37775 =
26666666664
Z ba
!(x)f(x)0(x)dxZ ba
!(x)f(x)1(x)dx
...Z ba
!(x)f(x)m(x)dx
37777777775(105)
Luego, la solucin del sistema diagonal anterior est dada
por:
ak =
Z ba
!(x)f(x)k(x)dxZ ba
!(x)2k(x)dx
8i = 0; 1; :::;m (106)
Para construir un base ortogonal de polinomios en el intervalo
[a; b] para una funcin de peso ! cualquierase aplica el siguiente
teorema:
Teorema 9 El conjunto de polinomios f0; 1; :::; mg de Pm denidos
recursivamente es ortogonal enL2(a; b) con respecto a la funcin de
peso ! :
0(x) = 1
1(x) = x b1 (107)k(x) = (x bk)k1(x) ckk2(x) 8k = 2; :::;m
26
-
donde las constantes bk; ck se calculan de la siguiente
forma:
bk =
Z ba
x!(x)2k1(x)dxZ ba
!(x)2k1(x)dx
8k = 1; :::;m
(108)
ck =
Z ba
x!(x)k2(x)k1(x)dxZ ba
!(x)2k2(x)dx
8k = 2; :::;m
Demostracin. Ver refs. [1, 3].
Si se considera la funcin de peso !(x) = 1 y el intervalo [1;
1], el teorema anterior genera la base ortogonalde Legendre, cuyos
5 primeros polinomios normalizados con la condicin k(1) = 1
son:
0(x) = 1
1(x) = x
2(x) =12
3x2 1
(109)
3(x) =12
5x3 3x
4(x) =
18
35x4 30x2 + 3
Para determinar los polinomios de Legendre normalizados se puede
aplicar la recursin:
k+1(x) =(2k + 1)
k + 1xk(x)
k
k + 1k1(x) 8k 1 (110)
o bien la frmula de Rodrigues:
k(x) =1
2kk!
dk
dxk
x2 1
k 8k 0 (111)Se verica adicionalmente que: Z 1
1i(x)j(x)dx =
(1
(i+ 12 )Si i = j
0 en otro caso(112)
El siguiente teorema resume las propiedades de los polinomios
ortogonales de Legendre:
Teorema 10 Sea f 2 L2(1; 1); n 2 N; k el polinomio k-simo de
Legendre. Entonces:
1) f tiene una expansin en series de Legendre, es decir 9 bfk 2
R tales que:f(x) =
1Xk=0
bfkk(x) (113)donde:
bfk = hf; kiL2(1;1)kkkL2(1;1) =Z 11f(x)k(x)dxZ 112k(x)dx
=k + 12
Z 11f(x)k(x)dx (114)
27
-
2) Existe un nico polinomio en Pm denotado por mf que es solucin
del problema de mnimos cuadradoscontnuos en L2(1; 1); es decir:
kf mfk2L2(1;1) = minq2Pmkf qk2L2(1;1) (115)
Este polinomio mf es la serie de Legendre truncada al orden m
:
mf(x) =mXk=0
bfkk(x) (116)Ms an:
limm!1
kf mfk2L2(1;1) = 0 (117)
Si se considera la funcin de peso !(x) = 1p1x2 y el intervalo
[1; 1], el teorema anterior genera la base
ortogonal de Chebyshev, denidos recursivamente segn:
T0(x) = 1
T1(x) = x (118)
Tk+1(x) = 2xTk(x) Tk1(x) 8k = 1; :::;m
El siguiente teorema resume las propiedades de los polinomios
ortogonales de Chebyshev:
Teorema 11 Sea Tk(x) el k-simo polinomio de Chebyshev denido
recursivamente segn (118). Entonces:
1) Tk(x) es un polinomio de grado k que tiene k ceros simples en
el intervalo [1; 1] denidos por:
xk;j = cos
2j 12k
8j = 1; :::; k (119)
2) Tk(x) alcanza sus extremos en:
bxk;j = cosjk
T (bxk;j) = (1)k 8j = 0; 1; :::; k (120)
3) Sea pnL;T (x) el polinomio de Lagrange de grado n calculado
en los ceros del polinomio de ChebyshevTn(x): Entonces, 8f 2
Cn+1[1; 1] :
maxx2[1;1]
f(x) pnL;T (x) 12n(n+ 1)! maxx2[1;1] f (n+1)(x)
(121)Demostracin. Ver ref. [3]. La propiedad anterior (121) es la
mejor cota de error que se puede alcanzar
utilizando la interpolacion de Lagrange.
Las funciones peridicas o muy similares a funciones
trigonomtricas es posible aproximarlas con la basetrigonomtrica Bm
, que en el intervalo [; ] est denida como:
0(x) =12
k(x) = cos(kx) k = 1; 2; :::;m (122)
m+k(x) = sin(kx) k = 1; 2; :::;m 1
28
-
El conjunto generado por esta base se denomina polinomios
trigonomtricos m: Para una funcin f 2C[; ] la aproximacin de mnimos
cuadrados en m es de la forma:
Sm(x) =a02+ am cos(mx) +
m1Xk=1
(ak cos(kx) + bk sin(kx)) (123)
donde los coecientes ak; bk se calculan como:
ak =
Z f(x) cos(kx)dxZ cos2(kx)dx
=1
Z
f(x) cos(kx)dx 8k = 0; 1; :::;m (124)
bk =
Z f(x) sin(kx)dxZ sin2(kx)dx
=1
Z
f(x) sin(kx)dx 8k = 1; :::;m 1
Por ejemplo, la aproximacin trigonomtrica de grado 3 de la
funcin f(x) = jxj en [; ] es:
S(x) =1
2 4cos(x) 4
9cos(3x) (125)
-3 -2 -1 0 1 2 30
0.5
1
1.5
2
2.5
3
x
f(x) v
s ap
roxi
mac
in
trigo
nom
tric
a
Aproximacin trigonomtrica de f(x)=abs(x)
Figura 9. Aproximacin trigonomtrica de f(x) = jxj en [; ]:
En el caso de conocer solo datos en la forma de puntos: (x0;y0);
(x1; y1); :::; (xn; yn) aplicando la mismametodologa anterior es
posible determinar el polinomio que mejor los representa en el
sentido de los mnimoscuadrados discretos:
mina0;a1;:::;am
"d =nXi=0
(yi pm(xi))2 =nXi=0
yi
mXk=0
akxki
!2(126)
Dado que la funcin "d es cuadrtica y convexa con respecto a los
coecientes a0; a1; :::; am, para calcular el
29
-
polinomio pm basta aplicar las condiciones de optimalidad de
primer orden:
@"d@a0
= 0
@"d@a1
= 0 (127)
...@"d@am
= 0
cuya solucin est dada por las ecuaciones
normales:2666666666664
(n+ 1)nXi=0
xi
nXi=0
x2i nXi=0
xmi
nXi=0
xi
nXi=0
x2i
nXi=0
x3i nXi=0
xm+1i
......
.... . .
...nXi=0
xmi
nXi=0
xm+1i
nXi=0
xm+2i nXi=0
x2mi
3777777777775
266666664
a0
a1
...am
377777775=
2666666666664
nXi=0
yi
nXi=0
xiyi
...nXi=0
xmi yi
3777777777775(128)
El comando polyfit calcula el polinomio standard de aproximacin
p de grado m en el sentido de los mnimoscuadrados:
[p; S] = polyfit(x; y;m) (129)
Los inputs de este comando son:x : Vector con los datos x0; x1;
:::; xny : Vector con los datos y0; y1::::ynm : Grado del
polinomioEn el caso que m = n el polinomio p de aproximacin es el
polinomio de interpolacin de Lagrange.Los outputs de este comando
son:p : Coecientes del polinomio de aproximacin ordenados de mayor
a menor potencia.S : Estructura que contiene la matriz R de la
factorizacin QR de la matriz de Vandermonde, df los
grados de libertad, normr la norma de los errores, llamados
usualmente residuos:
normr =p"d =
vuut nXi=0
(yi pm(xi))2 (130)
Por ejemplo, para calcular los polinomios de mnimos cuadrados de
grado 4; 6 y 8 de la funcin f(x) =x sin(x2) el intervalo [0; 4]
utilizando una malla de puntos equi-espaciados a distancia h = 0:5,
se debeejecutar la secuencia de comandos:>> x=[0:0.5:4];
y=x.*sin(x.^2);>> p4=polyt(x,y,4);>>
p6=polyt(x,y,6);>> p8=polyt(x,y,8);>> xf=[0:0.05:4];
yf=xf.*sin(xf.^2);>> yy4=polyval(p4,xf); yy6=polyval(p6,xf);
yy8=polyval(p8,xf);>> yf=xf.*sin(xf.^2);
30
-
0 0.5 1 1.5 2 2.5 3 3.5 4-4
-3
-2
-1
0
1
2
3
4
x
Pol
inom
ios
de a
prox
iam
cin
de
grad
o 4,
6,
8
Aproximacin de mnimos cuadrados de f(x)=xsin(x 2)
f(x)=xsin(x2)Polinomio de grado 4Polinomio de grado 6Polinomio
de grado 8
Figura 10. Aproximacin de mnimos cuadrados de f(x) = x
sin(x2)
Como podemos observar, no siempre el polinomio pasa por los
puntos, pero si el grado es igual a la cantidadde puntos menos uno,
entonces el polinomio que minimiza el error cuadrtico es el
polinomio interpolante,siempre y cuando no haya valores repetidos
en el vector x:
En este ejemplo se calcula adicionalmente el la estructura S
:
>> x=[0:0.5:6]; y=x.*cos(x.^2);
>> [p,S]=polyfit(x,y,5)
p =
-0.0550 0.7308 -3.2849 5.8414 -3.6074 0.3913
S =
R: [6x6 double]
df: 7
normr: 7.2964
>> S.R
ans = 1.0e+004 *
-1.0018 -0.1773 -0.0317 -0.0057 -0.0011 -0.0002
0 -0.0173 -0.0070 -0.0022 -0.0006 -0.0002
0 0 -0.0009 -0.0006 -0.0003 -0.0002
0 0 0 -0.0001 -0.0001 -0.0001
0 0 0 0 0.0000 0.0001
0 0 0 0 0 -0.0001
ACT 2: Aproximacin polinomial de funciones y datos:
Programe la funcin aproximacion_polinomial.m que calcula la
aproximacin polinomial standard, deLegendre, de Chebyshev y
trigonomtrica de funciones y datos. De acuerdo al mtodo
seleccionado yal tipo de dato la funcin debe realizar algunos
clculos y entregar diferentes outputs.
1) Aproximacin contnua. En este caso los inputs de la funcin
deben ser:
31
-
i1) Puntero a la funcin .m que se aproximar. Este puntero es
llamado en Matlab "function handle".Luego, si por ejemplo la funcin
es g.m el puntero se utiliza de la siguiente forma:
[o1; o2; o3] = aproximacion_polinomial(@g; i2; i3; i4) (131)
i2) Tipo de aproximacin: standard, Legendre, Chebyshev,
trigonomtrica. Se debe considerar laseleccin de 2 o ms tipos de
aproximacin.
i3) Intervalo [a; b] para el clculo de los polinomios.
i4) Grado del polinomio de aproximacin m:
Los outputs de la funcin deben ser:
o1) Coecientes de los polinomios calculados.
Hint: Se recomienda utilizar la funcin quad para calcular
aproximadamente las integrales.
o2) Error total de aproximacin para cada mtodo: c; ver ecuacin
(96).
o3) Grco de la funcin, polinomios de aproximacin y error de
aproximacin puntual.
Verique el programa aproximacion_polinomial.m con algunas
funciones difciles de aproximar, comopor ejemplo:
f(x) =1
1 + x2f(x) = xejsin(x)j f(x) =
1
1 + ejxj(132)
2) Aproximacin discreta. En este caso los inputs de la funcin
deben ser:
i1) Dos vectores x; y de igual dimensin.
i2) Tipo de aproximacin: standard, trigonomtrica.
i3) Grado del polinomio de aproximacin m:
Los outputs de la funcin deben ser:
o1) Coecientes de los polinomios calculados.
o2) Error total de aproximacin para cada mtodo: d:
o3) Grco de los datos, polinomios de aproximacin y error de
aproximacin puntual.
Pruebe el programa .m con diferentes tipos de datos.
3) Una vez que el mineral de cobre sale de las plantas de
molienda primaria y secundaria, ver gura 11, seaplica el proceso de
lixiviacin que separa el cobre del mineral que lo contiene,
aplicando una disolucinde cido sulfrico y agua. Para esto, el
mineral se ingresa a piscinas o bien se forman pilas que sonregadas
con esta disolucin.
32
-
Figura 11. Esquema planta de molienda SAG1 de El Teniente.
El proceso de lixiviacin se considera exitoso si el porcentaje
de recuperacin de cobre es lo mayor posi-ble (respetando
restricciones de produccin) con respecto a la razn de lixiviacin,
que es proporcionalal tiempo que se debe aplicar el proceso.
Lamentablemente no se conoce la relacin funcional exactaentre ambas
cantidades. Solo se cuenta con una serie de mediciones
experimentales. En el workspaceque acompaa este laboratorio se
encuentra una de estas mediciones, donde r es la razn de
lixiviaciny p el porcentaje de recuperacin, ver gura 12.
0 0.5 1 1.5 2 2.5 3 3.5 410
20
30
40
50
60
70
80
Razn de Lixiviacin: r
Por
cent
aje
de R
ecup
erac
in:
p
Figura 12. Datos experimentales de razn de lixiviacin y
porcentaje de recuperacin.
33
-
Utilizando el curve tting tool cftool del toolbox de curve tting
determine un modelo lineal de losdatos (r; p) de la forma:
p(r) = 0 + 1f1(r) + 2f2(r) + 3f3(r) (133)
donde i i = 0; :::; 3 son constantes y fi i = 0; :::; 3 son
funciones que dependen solamente de r: Elmodelo debe tener un
coeciente de correlacin R2 0:98:
Incluya en el informe los programas .m, las pruebas realizadas,
como tambin los resultados y grcosgenerados. Comente los resultados
obtenidos.
References
[1] Burden, R., J. D. Faires, Anlisis Numrico, Sptima Edicin,
Thomson Learning, 2002.
[2] Quarteroni, A., R. Sacco, F. Saleri, Numerical Mathematics,
Second Edition, Text in Applied Mathe-matics, Springer, 2007.
[3] Stoer, J., R. Burlisch, Introduction to Numerical Analysis,
Second Edition, Springer, 1992.
34