guia interpolacion

34
Laboratorio 3 MA-4301 : Interpolacin y Aproximacin Polinomial Gonzalo HernÆndez UChile - Departamento de Ingeniera MatemÆtica El objetivo de este laboratorio es aprender a utilizar los comandos de Matlab que permiten para una funcin o puntos (datos): 1) Operar con polinomios. 2) Calcular el polinomio de interpolacin y de aproximacin. 3) Calcular el polinomio trigonomØtrico de aproximacin. Este tema es de gran importancia por su amplia variedad de aplicaciones: Representacin de funciones, ajuste de datos, cÆlculo de parÆmetros de modelos, etc. 1 Operaciones con polinomios En esta seccin se enseæarÆ cmo operar con polinomios: i) Creacin y evaluacin de polinomios ii) Calcular raices de polinomios iii) Realizar operaciones aritmØticas entre polinomios. Utilizaremos como ejemplo estos polinomios: p(x) = 5x 5 +6x 2 +7x +3 (1) q(x) = x 17 +3x 1 El tipo de representacin que ocupa Matlab para los polinomios es el de un vector la o columna con los coecientes 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=[10000000000000003-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

Upload: hvillafuerteb

Post on 08-Sep-2015

279 views

Category:

Documents


1 download

DESCRIPTION

guia metodos numericos

TRANSCRIPT

  • 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