Upload
hvillafuerteb
View
280
Download
1
Tags:
Embed Size (px)
DESCRIPTION
guia metodos numericos
Citation preview
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