Está en la página 1de 34

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 funcin
o 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.

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)
q(x)

5x5 + 6x2 + 7x + 3
17

= x

+ 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

>> 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
Columns 10 through 18
0
0
0
0
0
0
0

-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
Columns 9 through 11
14.0784
17.1125
21.0000

5.6522

6.8112

8.1563

9.7488

11.6803

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 utiliza
de 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 comando
poly(r) calcula el polinomio normalizado (el coeciente de la potencia mayor es igual a uno) cuyas races
estn 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 restan
vectores. Cuando los polinomios no tienen el mismo grado se debe crear un vector auxiliar, que contenga el
polinomio de menor grado en la parte izquierda, y a la derecha se rellene con ceros hasta obtener la misma
dimensin del vector representante del polinomio de mayor grado. En nuestro caso, esto se debe hacer de la
siguiente forma:
>> s=[zeros(1,12) p]
s =
Columns 1 through 9
0
0
0
0
Columns 10 through 18
0
0
0
5

>> s=s+q
s =
Columns 1 through 14
1
0
0
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
Columns 15 through 23
0
0
15
-5

18

15

-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)
>> [d,r]=deconv(q,p)
d =
Columns 1 through 8
0.2000
0
0
Columns 9 through 13
0.6800
-0.0096
-1.1376

-0.2400

-0.2800

-1.9296

-1.3437

0
0

r =
Columns 1 through 8
0
0
0
Columns 9 through 16
0
0.0000
0.0000
Columns 17 through 18
18.1946
3.0310

(6)

-0.1200

0.2880

0.6720

-0.0000

4.8528

19.5696

24.9821

Si intentamos dividir el vector p por el vector q se obtiene:


>> [d,r]=deconv(p,q)
d =
0
r =
5
0
0

Este resultado se debe a que el vector q tiene mayor grado que p:


3

Interpolacin polinomial

En esta seccin se aprender a interpolar en base a datos obtenidos de alguna funcin (que se puede conocer
o no) utilizando los comandos interp1; interp2; polyf it; spline; csape. Las instrucciones interp1; interp2
interpolan datos en una y dos dimensiones en forma nmerica. La instruccin polyf it calcula los coecientes
del polinomio de interpolacin de Lagrange. Las instrucciones spline; csape calcula en forma numrica y
detallada los polinomios de interpolacin por trazos.

Sean (n + 1) puntos (x0 ; y0 ); :::; (xn ; yn ); tales que: x0 < x1 <


Lagrange:
n
X
pL (x) =
aj xj

< xn : El polinomio de interpolacin de


(7)

j=0

es el polinomio de menor grado que interpola estos puntos, es decir, que verica:
yk = pL (xk ) =

n
X

aj xjk

j=0

Para calcular pL (x) basta resolver el sistema de


2 n
x0 xn0 1
6 xn1 xn 1
1
6
6 .
..
..
4 ..
.
.
n 1
n
xn xn

8k = 0; 1; :::; n

Van der Monde:


32
an
x0 1
6 an 1
x1 1 7
76
..
.. 7 6 ..
.
. 54 .
xn

a0

7 6
7 6
7=6
5 4

(8)

y0
y1
..
.
yn

3
7
7
7
5

(9)

O bien, determinar pL (x) por su frmula analtica:


pL (x)

n
X

yk Ln;k (x)

(10)

k=0

Ln;k (x)

(x x0 )(x x1 )
(xk x0 )(xk x1 )

(x
(xk

xk 1 )(x xk+1 ) (x xn )
xk 1 )(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 C n+1 [a; b] ; entonces: (8x 2 [a; b]) (9 (x) 2 (a; b)) tal que:
f (x) = pL (x) +

f (n+1) ( (x))
(x
(n + 1)!

Demostracin. Ver refs. [2, 3].

x0 )(x

x1 )

(x

xn )

(13)

Con respecto al comportamiento del error de polinomio de Lagrange pL (x) :


eL (x) =

f (n+1) ( (x))
(x
(n + 1)!

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 en
forma uniforme a f: Basta considerar la funcin:
f (x) =

1
1 + x2

(15)

en el intervalo [ 5; 5] :
Contraejemplo de Runge
2

Interpolacin de Lagrange de f(x)=1/(1+x )

f(x)
p (x)
1.5

0.5

-0.5
-5

-4

-3

-2

-1

0
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 fe de la funcin


f en los puntos xk : Si peL es el polinomio de Lagrange de fe, es posible demostrar que:
kpL

peL k1 /

n!1

2n+1
max f (xk )
en log n k=0;:::;n

fe(xk )

(16)

si los puntos x0 ; x1 ; :::; xn son equi-espaciados. Luego, calcular el polinomio de Lagrange es inestable numricamente 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 por
trazos. Sean (n + 1) reales en el intervalo [a; b] tales que: x0 < x1 <
< xn ; y x0 = a; xn = b: Sea pi;k
L el
polinomio de Lagrange de grado k calculado en los puntos xi ; xi+1 ; :::; xi+k : Sean:
hj

= xj+1

xj ; j = 0; :::; n

max

j=0;:::;n 1

(17)

hj

Si f 2 C k+1 [a; b] entonces aplicando (13):


f

pi;k
L

chk+1 f (k+1)

(18)

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:
(
)
Z
b

L2 (a; b)

kf kL2 (a;b)

f : (a; b) ! R tal que

jf (x)j dx < 1

(19)

! 21

jf (x)j dx

1: Sea f (m) 2 L2 (a; b): Entoces existe un constante c > 0

Teorema 2 Sea 0
m
(k + 1) con k
independiente de h = max hj tal que:
j=0;:::;n 1

pi;k
L

(m)

chk+1

f (k+1)

L2 (a;b)

(20)

L2 (a;b)

Por ejemplo, para k = 1 y m = 0; 1 :


f
f

pi;1
L
pi;1
L

c1 h2 f (2)

L2 (a;b)

c2 h f (2)
L2 (a;b)

(21)

L2 (a;b)

L2 (a;b)

Demostracin. Ver ref. [2].


Para mejorar la calidad de la interpolacin, adems de (7) se imponen condiciones de interpolacin de las
derivadas de la funcin f: Sean (n + 1) reales en el intervalo [a; b] tales que: x0 < x1 <
< xn ; y
x0 = a; xn = b: El polinomio osculante se dene como el polinomio de menor grado que satisface:
dk p(xi )
dk f (xi )
=
k
dx
dxk

8k = 0; :::; mi

8i = 0; :::; n

(22)

donde mi son enteros no negativos para i = 0; :::; n; m = max mi ; f 2 C m [a; b] : Si n = 0 el polinomio


i=0;:::;n

osculante es el polinomio de Taylor; si mi = 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 C m [a; b] y (n + 1) reales en el intervalo [a; b]: x0 < x1 <
< xn ; y x0 = a; xn = b: El
polinomio de Hermite pH (x) es el nico polinomio de grado a lo mas (2n + 1) que interpola f (x) y f 0 (x) en
los puntos xi 8i = 0; :::; n :
pH (x) =

n
X

k=0

n
X

b n;k (x)
f 0 (xk )H

(23)

xk ) L0n;k (x) L2n;k (x)

(24)

f (xk )Hn;k (x) +

k=0

donde:
Hn;k (x)
b n;k (x)
H

=
=

1
(x

2 (x

xk ) L2n;k (x)

Adicionalmente, si f 2 C 2n+2 [a; b] ; entonces: (8x 2 [a; b]) (9 (x) 2 (a; b)) tal que:
f (x) = pH (x) +

f (2n+2) ( (x))
(x
(2n + 2)!

Demostracin. Ver ref. [2].


6

x0 )2 (x

x1 )2

(x

xn )2

(25)

Los comandos de Matlab interp1; interp2 interpolan datos en 1 y 2 dimensiones en forma numrica aplicando
diferentes mtodos (lineal, spline cbico, Hermite cbico, etc): La instruccin polyf it calcula los coecientes
del polinomio de interpolacin de Lagrange y de aproximacin. Las instrucciones spline; csape; calculan en
forma numrica y detallada los polinomios de interpolacin por trazos: splines.
El comando interp1 permite interpolar datos unidimensionales:
yi = interp1(x; y; xi;0 metodo0 )

(26)

x : Vector con los puntos conocidos de la abcisa


y : Vector con los puntos conocidos de la ordenada.
xi : Vector con los puntos que se quiere interpolar de la abcisa
yi : Vector con los puntos interpolados de la ordenada.
Los mtodos de interpolacin pueden ser:
Mtodo
0
linear0
0
nearest0
0
spline0
0
cubic0

Descripcin
Interpolacin utilizando polinomios lineales por intervalo (Default)
Entrega el valor conocido ms cercano
Interpolacin utilizando splines cbicos
Interpolacin utilizando polinomios de Hermite cbicos por intervalo

Observaciones:
i) Los vectores x e y deben tener la misma dimensin.
ii) Para los mtodos 0 linear0 y 0 nearest0 ; todos los elementos del vector xi deben estar adentro del intervalo
de los valores del vector x. Para los mtodos 0 spline0 y 0 cubic0 , se puede extrapolar.
iii) El comando interp1 no entrega los coecientes del polinomio de interpolacin calculado de acuerdo al
mtodo 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 ) en
el 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);

Interpolacin lineal, de spline, de Hermite de f(x)=xsin(x

1.5
1

Interpolacin de f(x)

0.5
0
-0.5
-1
Lineal
Spline cbico
Hermite cbico

-1.5
-2

0.5

1.5

2
x

2.5

3.5

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 siguiente
forma:
zi = interp2(x; y; z; xi; yi;0 metodo0 )
(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
0
linear0
0
nearest0
0
spline0
0
cubic0

Descripcin
Interpolacin utilizando polinomios lineales por intervalo (Default)
Entrega el valor conocido ms cercano
Interpolacin utilizando splines cbicos
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 )

[x; y]

= meshgrid(ux ; uy )

donde:
ix ; iy : Son los valores iniciales de las variables x; y
hx ; hy : Son los pasos de las variables x; y
fx ; fy : Son los valores nales de las variables x; y
Por ejemplo:
>> [x,y] = meshgrid(-1:0.5:1,0:0.25:1)
x =
-1.0000
-0.5000
0
0.5000

1.0000
8

(28)

-1.0000
-1.0000
-1.0000
-1.0000
y =
0
0.2500
0.5000
0.7500
1.0000

-0.5000
-0.5000
-0.5000
-0.5000

0
0
0
0

0.5000
0.5000
0.5000
0.5000

1.0000
1.0000
1.0000
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

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
0.2500
0.5000
0
0.2500
0.5000
0
0.2500
0.5000
0
0.2500
0.5000
y =
0
0
0
0.2500
0.2500
0.2500
0.5000
0.5000
0.5000
0.7500
0.7500
0.7500
1.0000
1.0000
1.0000

0.7500
0.7500
0.7500
0.7500
0.7500

1.0000
1.0000
1.0000
1.0000
1.0000

0
0.2500
0.5000
0.7500
1.0000

0
0.2500
0.5000
0.7500
1.0000

Para construir una malla no equiespaciada se utiliza [x; y] = meshgrid(ux ; uy ) donde ux ; uy son los valores
a 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 peaks
en 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)
Funcin "peaks"

Interpolacin peaks con mtodo 'nearest'

10

10

-10
5

-10
5

0
y

-5

-5

Interpolacin peaks con mtodo 'linear'


10

-10
5

0
-5

-5

-10
5

5
-5

-5

Interpolacin peaks con mtodo 'cubic'

10

0
y

0
y

-5

-5

Figura 3. Interpolaciones nearest; linear; cubic de la funcin peaks en el intervalo [ 3; 3]:


El comando polyf it calcula el polinomio de interpolacin de Lagrange p de grado n :
[p; S] = polyf it(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 ::::yn
n : 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 el
intervalo [a; b]: Para contruir la spline slo se necesitan (n + 1) puntos (xk ; yk ) tales que:
i) x0 = a < x1 < x2 <

< xn

< xn = b

ii) y0 = f (x0 ); y1 = f (x1 ); y2 = f (x2 ); :::; yn

= f (xn

10

1 ); yn

= f (xn )

Luego, S(x) es un polinomio cbico en el subintervalo [xk ; xk+1 ] denotado por Sk (x) para k = 0; 1; : : : ; (n
1), y denido por:
8
S0 (x) = a0 + b0 (x x0 ) + c0 (x
>
>
>
>
>
< S1 (x) = a1 + b1 (x x1 ) + c1 (x
S2 (x) = a2 + b2 (x x2 ) + c2 (x
S(x) =
>
>
>
>
>
:
Sn 1 (x) = an 1 + bn 1 (x xn

x0 )2 + d0 (x
x1 )2 + d1 (x
x2 )2 + d2 (x
..
.
1)

+ cn

1 (x

x0 )3
x1 )3
x2 )3
xn

2
1)

x 2 [x0 ; x1 ]
x 2 [x1 ; x2 ]
x 2 [x2 ; x3 ]
..
.
+ dn

1 (x

xn

3
1)

x 2 [xn

(30)

1 ; xn ]

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

(32)

(33)

(34)

iii) Condicin de continuidad de S 0 (x):


0
Sk0 (xk+1 ) = Sk+1
(xk+1 ) 8k = 0; :::; n

iv) Condicin de continuidad de S 00 (x):


00
Sk00 (xk+1 ) = Sk+1
(xk+1 ) 8k = 0; :::; n

Las condiciones i) - iv) generan (4n


condiciones de frontera:

2) ecuaciones. Las dos ltimas ecuaciones se obienen de las

v) Condiciones de frontera:
(a) Natural, Libre o Variacional:
S 00 (x0 ) = S 00 (xn ) = 0 , c0 = cn = 0

(35)

(b) Segunda Derivada:


S 00 (x0 )
00

S (xn )

= f 00 (x0 )

(36)

00

= f (xn )

(c) Sujeta:
S 0 (x0 )
0

= f 0 (x0 )

(37)

S (xn )

= f (xn )

S0000 (x1 )

= S1000 (x1 )

(d) Not a knot:

Sn000 2 (xn 1 )
11

Sn000 1 (xn 1 )

(38)

(e) Peridica:
S 0 (x0 )

= S 0 (xn )

00

(39)

00

S (x0 )

= S (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):

ak + bk (xk+1

Sk (xk+1 ) = Sk+1 (xk+1 ) 8k = 0; :::; n

xk ) + ck (xk+1

(41)

xk ) + dk (xk+1

xk ) = ak+1

Si se dene:
hk = (xk+1

xk ) 8k = 0; :::; n

(42)

se obtiene:
ak + bk hk + ck h2k + dk h3k = ak+1

8k = 0; :::; n

(43)

Aplicando la condicin iii):


0
Sk0 (xk+1 ) = Sk+1
(xk+1 ) 8k = 0; :::; n

bk + 2ck hk +

3dk h2k

(44)

= bk+1

Aplicando la condicin iv):


00
Sk00 (xk+1 ) = Sk+1
(xk+1 ) 8k = 0; :::; n

(45)

ck + 3dk hk = ck+1
Despejando dk de (45):

1
(ck+1
3hk
y sustituyendo en (43) y (44) se obtienen las ecuaciones:
dk =

ak+1 = ak + bk hk + (ck+1 + 2ck )


bk+1 = bk + (ck+1 + ck )hk
Al despejar bk y bk

Si se reemplaza bk y bk

ak )

h2k
3

(46)

8k = 0; :::; n

8k = 0; :::; n

(47)

(48)

de (47) se obtiene:
bk

(ak+1

(ak

bk

(ak+1

ck )

1
hk

(ck+1 + 2ck )hk

1
hk
1
1)
hk

ak )
ak

(ck+1 + 2ck )
(ck + 2ck
1

hk
3
1)

8k = 0; :::; n
hk
3

(49)

8k = 1; :::; n

en (48) para k = 1; :::; n se obtiene nalmente:

bk = bk 1 + (ck + ck 1 )hk
1
hk
(ck+1 + 2ck )
= (ak ak 1 )
3
hk
(ck + 2ck

1 )hk 1

+ (ck + ck

8k = 1; :::; n
(ck + 2ck

1 )3hk 1

12

= (ak+1

1)

1
hk
3
ak )

+ (ck + ck

3
hk

(ak

1 )hk 1

ak

1)

3
hk

(50)

3
3
(ak ak 1 )
8k = 1; :::; n 1
(51)
hk
hk 1
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:
ck

1 hk 1

+ ck (2kk

+ 2hk ) + ck+1 hk = (ak+1

se obtiene el sistema:
2
1
0
0
6 h0 2(h0 + h1 )
h
1
6
6 ..
.
.
.
.
6 .
.
.
6
4 0
hn 2
0

2(hn

c0

cn

32

0
0
..
.

..

.
+
hn
2
0

ak )

1 ) hn
1

Sn0 (xn )

c0
c1
..
.

76
76
76
76
76
5 4 cn 1
cn

Aplicando las condiciones de frontera sujetas:


S00 (x0 )

(52)

7 6
7 6
7 6
7=6
7 6
5 6
4

0
3(a2 a1 )
h1

3(an an
hn 1

3(a1 a0 )
h0

..
.

1)

3(an

an

hn

2)

7
7
7
7
7
7
5

= f 0 (x0 )

(53)

(54)

= f (xn )

se obtiene el sistema:
2
6
6
6
6
6
4

2h0
h0
..
.
0
0

h0
2(h0 + h1 )
..
.

0
h1
..
.
hn

..

.
2(hn 2 + hn
hn 1

32

0
0
..
.
1)

hn
2hn

1
1

c0
c1
..
.

76
76
76
76
76
5 4 cn 1
cn

6
7 6
7 6
7 6
7=6
7 6
5 6
4

Ambos sistemas tiene solucin nica si y slo si: x0 = a < x1 < x2 <

3(a1 a0 )
h0
3(a2 a1 )
h1

3(an an
hn 1
0

1)

3f (xn )

< xn

3f 0 (x0 )
3(a1 a0 )
h0

..
.

3(an

an

hn
an

2
1)

3(an
hn

< xn = b:

2)

7
7
7
7
7 (55)
7
7
5

A continuacin veremos un ejemplo para ambas condiciones de frontera.


Ejemplo 4 Condicin de Frontera Natural: Consideremos los puntos equiespaciados: x0p= 0; x1 = 41 ; x2 =
1
3
la funcin f (x) = sin( x): Luego: y0 = sin(0) = 0; y1 = sin( 4 ) = 22 ; y2 = sin( 2 ) =
2 ; x3 = 4 ; x4 = 1 y
p
1; y3 = sin( 34 ) = 22 ; 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:ph0 = h1 = h2 =p h3 = 14 : Los ak se determinan de
(40): ak = f (xk ) 8k = 0; 1; :::; 4: Luego: a0 = 0; a1 = 22 ; a2 = 1; a3 = 22 ; a4 = 0: El sistema (53) queda:
3
2
32
3 2
0
1
0
0
0
0
c0
6 h0 2(h0 + h1 )
6
7 6 3(a2h1 a1 ) 3(a1h0 a0 ) 7
h1
0
0 7
7
6
7 6 c1 7 6
3(a3 a2 )
3(a2 a1 ) 7
6 0
7 6 c2 7 = 6
h
2(h
+
h
)
h
0
(56)
7
6
1
1
2
2
6
76
7 6
h2
h1
7
4 0
0
h2
2(h2 + h3 ) h3 5 4 c3 5 4 3(a4 a3 ) 3(a3 a2 ) 5
h3
h2
0
0
0
0
1
c4
0
Reemplazando los valores:
2
1
6 1
6 4
6 0
6
4 0
0

0
1
1
4

0
0

0
1
4

1
1
4

0
0
1
4

0
0
0

1
0

1
4

32
76
76
76
76
54

c0
c1
c2
c3
c4

7 6
7 6
7=6
7 6
5 4
13

0 p
12(1
2)
p
12( 2 p2)
12(1
2)
0

7 6
7 6
7=6
7 6
5 4

0
4: 970 6
7: 029 4
4: 970 6
0

3
7
7
7
7
5

(57)

Cuya solucin es:

2
6
6
6
6
4

c0
c1
c2
c3
c4

7 6
7 6
7=6
7 6
5 4

0
3: 672 3
5: 193 3
3: 672 3
0

3
7
7
7
7
5

(58)

Finalmente se tienen que determinar los bk y dk : Para ello se utilizan las ecuaciones:

Luego:

bk

(ak+1

ak )

dk

1
(ck+1
3hk

1
hk

(ck+1 + 2ck )

ck )

8k = 0; :::; n

3 2
(a1 a0 ) h10
b0
6
6 b1 7 6 (a2 a1 ) h1
6
7
1
4 b2 5 = 6
4 (a3 a2 ) h12
b3
(a4 a3 ) h13
2
3 2 1
d0
3h0 (c1
6 d1 7 6 1 (c2
6
7 6 3h1
4 d2 5 = 4 1 (c3
3h2
1
d3
3h (c4
2

hk
3

(c1 + 2c0 ) h30


(c2 + 2c1 ) h31
(c3 + 2c2 ) h32
(c4 + 2c3 ) h33
3 2
c0 )
6
c1 ) 7
7=6
c2 ) 5 4
c3 )

8k = 0; :::; n

(59)

3
3:1344
7 6
7 6 2:2164 7
7
7=4
5
0
5
2:2164

(60)

1
3

3
4:8963
2:0281 7
7
2:0281 5
4:8963

(61)

Ejemplo 5 Condicin de Frontera Sujeta: Consideremos los puntos equiespaciados: x0 p= 0; x1 = 14 ; x2 =


1
3
la funcin f (x) = cos( x): Luego: y0 = cos(0) = 1; y1 = cos( 4 ) = 22 ; y2 = cos( 2 ) =
2 ; x3 = 4 ; x4 = 1 y p
2
0; y3 = cos( 34 ) =
1: Para determinar el sistema (55) se necesita calcular h0 ; h1 ; h2 ; h3
2 ; y4 = cos( ) =
1
: Los ak se determinan de
y a0; a1 ; a2 ; a3 ; a4 : Como los puntos son equiespaciados: hp
0 = h1 = h2 = h3 =
p 4
2
2
(0): ak = f (xk ) 8k = 0; 1; :::; 4: Luego: a0 = 1; a1 = 2 ; a2 = 0; a3 =
1: El sistema (55)
2 ; a4 =
queda:
3
2 3(a a )
1
0
2
32
3
3f 0 (x0 )
h0
2h0
h0
0
0
0
c0
7
6
6 h0 2(h0 + h1 )
6
7 6 3(a2 a1 ) 3(a1 a0 ) 7
h1
0
0 7
6
7 6 c1 7 6 3(a3h1 a2 ) 3(a2h0 a1 ) 7
6 0
6
7
7 6
h1
2(h1 + h2 )
h2
0 7
(62)
6
7 6 c2 7 = 6
7
h2
h1
6
4 0
0
h2
2(h2 + h3 ) h3 5 4 cn 1 5 4 3(a4 a3 ) 3(a3 a2 ) 7
5
h3
h2
0
0
0
h3
2h3
cn
3f 0 (x4 ) 3(a4h3 a3 )
Reemplazando los valores:
2

1
2
1
4

6
6
6 0
6
4 0
0
Cuya solucin es:

1
4

1
1
4

0
0

0
1
4

1
1
4

0
0
1
4

1
1
4

0
0
0
1
4
1
2

32
76
76
76
76
54
2
6
6
6
6
4

c0
c1
c2
c3
c4

c0
c1
c2
c3
c4

7 6
7 6
7=6
7 6
5 6
4
7 6
7 6
7=6
7 6
5 4

14

12( 22 p1)
12(1
2)
0 p
2)
12(1p
2
12( 2
1)
5: 193 3
3: 672 2
0
3: 672 2
5: 193 3

3
7
7
7
7
5

7 6
7 6
7 6
7=6
7 4
5

3: 514 7
4: 970 6
0
4: 970 6
3: 514 7

3
7
7
7
7
5

(63)

(64)

Finalmente se tienen que determinar los bk y dk : Para ello se utilizan las ecuaciones:

Luego:

bk

(ak+1

ak )

dk

1
(ck+1
3hk

1
hk

(ck+1 + 2ck )

ck )

8k = 0; :::; n

hk
3

8k = 0; :::; n

(65)

3 2
3 2
(a1 a0 ) h10 (c1 + 2c0 ) h30
b0
6 b1 7 6
(a2 a1 ) h11 (c2 + 2c1 ) h31 7
7 6
6
6
7=6
6
h2 7 = 4
4 b2 5 4 (a3 a2 ) 1
(c3 + 2c2 ) 3 5
h2
b3
(a4 a3 ) h13 (c4 + 2c3 ) h33
2
3 2 1
3 2
c0 )
d0
2:0281
3h0 (c1
6 d1 7 6 3h1 (c2 c1 ) 7 6 4:8963
6
7 6 1
7 6
4 d2 5 = 4 1 (c3 c2 ) 5 = 4 4:8963
3h2
1
d3
2:0281
c3 )
3h (c4
2

3
0
2:2164 7
7
3:1344 5
2:2164
3
7
7
5

(66)

(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
son
2
k 0 1
2
4xk 2 2:7 3:8
yk 5 7:8 9

realizar la interpolacin por partes. Los datos del contorno superior


3
6
10

4
8
10:2

5
10
10:3
15

6
13
10:4

7
8
16 18
14:5 15

9
21
15:4

3
10 11 12
25 30 365
15:5 14 5

(68)

3) Ahora se calculan los elementos del sistema de spline natural:


2

1
h0
..
.

0
2(h0 + h1 )
..
.

6
6
6
6
6
4 0
0

0
h1
..
.
hn

..

2(hn

32

0
0
..
.

.
+
hn
2
0

1)

hn
1

c0
c1
..
.

76
76
76
76
76
5 4 cn 1
cn

7 6
7 6
7 6
7=6
7 6
5 6
4

0
3(a2 a1 )
h1

3(an an
hn 1

3(a1 a0 )
h0

..
.

1)

3(an

hn

an

2)

7
7
7
7
7
7
5

(69)

Para simplicar los clculos se dene:


hk

= xk+1 xk
yk+1 yk
=
hk
= 3( k
k

k
k

k
6 hk
6
4 k

k
6 hk
6
4 k

k
6 hk
6
4 k

1
1:1
1:2
12
1:1 = 11
12
( 11 4) =

2
2

0
0:7
2:8
0:7 = 4
4
2
=

0:4
3
2
( 15

2
15

1
4)

3
20

0:1
1
3
30
1
1
( 30 20 ) =

1
20

4:1
3
( 41
30

9
4
=

7
20

0:1
1
4
40
1
2
( 40 15 ) =

1)

2
2:2
1
5
2:2 = 11
5
12
( 11 11 ) =

5
3
=

0:1
1
2
20
1
1
( 20 10 ) =

8
3
=

96
11

(70)

13
40

21
11

6
3
=

3
10

41
30
1
30 )

10
5
1:5
5 =

0:2
2

=4

3
10

1
40 )

1
( 10

39
40

3
2
=

1
10

5
11 )

( 14

3
117
110

7
2
0:5
2 =

1
4

41
30 )

7
7
5

67
20

(71)
3
7
7
5

11
6
9
3
6 =
2
3
3
( 2 + 10 ) =

(72)
3
18
5

7
7
5

(73)
00

4) Usando las condiciones de borde de spline natural: S


el sistema de spline es:
2
1
0
0
0 0 0
0
0
0
0
0
0
6 7 18 11 0 0 0
0
0
0
0
0
0
5
10
6 10 11
33
11
60
0 0
0
0
0
0
0
0
10
5
5
6
11
42
60
0
2
0
0
0
0
0
0
0
5
5
6
60
0
0
2
8
2
0
0
0
0
0
0
6
60
0
0
0
2
10
3
0
0
0
0
0
6
60
0
0
0
0
3
12
3
0
0
0
0
6
60
0
0
0
0
0
3
10
2
0
0
0
6
60
0
0
0
0
0
0
2
10
3
0
0
6
60
0
0
0
0
0
0
0
3
14
4
0
6
60
0
0
0
0
0
0
0
0
4
18
5
6
40
0
0
0 0 0
0
0
0
0
5 22
0
0
0
0 0 0
0
0
0
0
0
0

00

(x0 ) = 0; S (xn ) = 0; y reemplazando valores,


3
32 3 2
2
0
0
c0
c0
6 c1 7 6 96 7
07
7
7 6 7 6 11
6 c1
21
7
6 7 6
6
07
11 7
7 6 c2 7 6 117
6 c2
7
6 c3 7 6
6
07
7
7 6 7 6 110
6 c3
6 c4 7 6 3 7
6
07
7
7 6 7 6 20
6 c4
6
6 c5 7 6 1 7
07
7 6 7 6 20 7
6
6 c6 7 = 6 4 7 ) 6 c5
07
7 6 7 6 67 7
6 c6
7
6
6 7 6
07
7 6 c7 7 6 20
7
6 c7
6 c8 7 6 7 7
6
07
7
7 6 7 6 20
6 c8
6
6 c9 7 6 13 7
07
7
7 6 7 6 40
6 c9
6c10 7 6 39 7
6
07
7
7 6 7 6 40
4 c10
5
65 4c11 5 4 18
5
c11
c12
1
0

3
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
5

3
0
6 2: 482 7
6
7
6 0:188 8 7
6
7
6 0:193 2 7
6
7
6 0:071 97 7
6
7
6 0:169 7 7
6
7
6 0:500 9 7
6
7
6 0:500 7 7
6
7
6 0:077 07 7
6
7
6 0:039 77 7
6
7
60:000 133 47
6
7
4 0:163 7 5
0
(74)

5) Se construye la spline natural, 8k = 0; 1; :::; 11


Sk (x)
ak

= ak + bk (x
= yk

xk )2 + dk (x xk )3
hk
1
(ck+1 + 2ck )
ak )
hk
3

xk ) + ck (x

bk = (ak+1

16

(75)
ck+1 ck
dk =
3hk

La spline cbica es:


8
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
S(x) =
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
:

S0 (x) = 1: 182x3 + 7: 091 x2 9: 604x + 5: 297


S1 (x) = 0:809 3x3 9: 038x2 + 33: 94x 33: 9
S2 (x) = 0:05788x3 + 0:848 6x2 3: 623x + 13: 69
S3 (x) = 0:044 2 x3 0:988 7x2 + 7: 401x 8: 359
S4 (x) = 0:04028x3 + 1: 039x2 8: 818x + 34: 89
S5 (x) = 0:07451x3 2: 405x2 + 25: 62x 79: 9
S6 (x) = 0:111 3x3 + 4: 841 x2 68: 58x + 328:3
S7 (x) = 0:096 3 x3 5: 123x2 + 90: 84x 522
S8 (x) = 0:01298x3 + 0:778 1x2 15: 37x + 115: 3
S9 (x) = 0:003325 x3 0:249 3x2 + 6: 201x 35: 68
S10 (x) = 0:01092 x3 + 0:819 3x2 20: 51x + 186: 9
S11 (x) = 0:009094x3 0:982 2x2 + 33: 53x 353: 5

x 2 [2; 2:7]
x 2 [2:7; 3:8]
x 2 [3:8; 6]
x 2 [6; 8]
x 2 [8; 10]
x 2 [10; 13]
x 2 [13; 16]
x 2 [16; 18]
x 2 [18; 21]
x 2 [21; 25]
x 2 [25; 30]
x 2 [30; 36]

6) Ahora, se tabulan los datos de la parte inferior del escarabajo. Dada su forma, se interpolar por
trazos usando polinomios de grado 1 y 2:
xk
yk

2
5

3
4

7
7:9

12 36
3:8 5

(x 2)
3)
+4
= x+7
3
3 2
7)(x 12)
(x 3)(x 12)
(x
f1 (x) =
+ 7:9
+ 3:8
7)(3 12)
(7 3)(7 12)
(12
(x 36)
(x 12)
f2 (x) = 3:8
+5
= 0:05x + 3: 2
(12 36)
(36 12)
f0 (x)

(x
2
(x
4
(3

(76)

Luego, esta funcin queda denida por trozos segn:


8
< 7 x
2: 969 x 0:199 4x2
f (x) =
:
0:05x + 3: 2

3)(x 7)
=
3)(12 7)

3: 113

0:199 4x2 + 2: 969 x

x 2 [2; 3]
x 2 [3; 12]
x 2 [12; 36]

Figura 6. Resultado spline citroneta.


Los siguientes teoremas establecen los resultados principales acerca de splines sujetas.

17

3:(77)
113

(78)

Teorema 7 Sea f 2 C 4 [a; b] y una malla de puntos x0 = a < x1 < x2 <


< xn 1 < xn = b en [a; b];
donde h = max (xi+1 xi ). Si S es la spline sujeta determinada en los puntos x0 ; x1 ; :::; xn ; entonces:
i=0;:::;n 1

f (j)
El valor de las constantes
0

(j)

Sf

jh

4 j

f (4)

para j = 0; 1; 2; 3

(79)

es igual a:

=
=

5
384
0
1@
2

min

i=0;:::;n 1

1
24

3
8

(80)
min

h
(xi+1

xi )

i=0;:::;n 1

(xi+1
h

Demostracin. Ver refs. [2, 3].

xi )

1
A

Teorema 8 Sea r 2 C 2 [a; b] una funcin que satisface las condiciones de interpolacin sujetas en los puntos
x0 = a < x1 < x2 <
< xn 1 < xn = b para una funcin f :
r(xk )
0

r (x0 )

= f (xk )
0

8k = 0; 1; :::; n
0

(81)

= f (x0 ); r (xn ) = f (xn )

Entonces, si Sf es la spline sujeta de f calculada en los puntos (x0 ; f (x0 )); (x1 ; f (x1 )); :::; (xn ; f (xn )):
Zb

2
Sf00 (x)

Zb

dx

jr00 (x)j dx

(82)

Adicionalmente, para toda spline cbica pS que interpola la funcin f :


Zb

00

f (x)

2
Sf00 (x)

Zb

dx

jf 00 (x)

p00S (x)j dx

(83)

Demostracin. Ver refs. [2, 3].


Estos 2 resultados justican el uso de splines sujetas. El primer teorema establece la convergencia uniforme
de la spline Sf ; Sf0 ; Sf00 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 que
interpolan a f:
El comando spline determina completamente la spline cbica, incluyendo todos sus coecientes. Adicionalmente, 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 una
estructura de polinomio por trazo que contiene:
- Los puntos x denominados por Matlab breaks

18

- Los coecientes de la splines cbica coef s ordenados de potencia mayor a menor:


2
3
d0
c0
b0
a0
6 d1
7
c1
b1
a1
6
7
coef s = 6 .
.
.
.
..
..
.. 7
4 ..
5
dn 1 cn 1 bn 1 an 1

(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 puntos
equi-espaciados a distancia h = 0:5 y condiciones de borde S 0 (0) = 1; S 0 (4) = 1: Para evaluar la spline pp
en puntos distintos a los breaks se utilizan las instrucciones ppval o f nval:
>> 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
S

(d0 )

(x0 )

= csape(x; [cb0 y cbn ]; [d0 dn ])


= cb0

(dn )

(86)

(xn ) = cbn

Por ejemplo, para calcular la spline de f (x) = x cos x2 con condiciones de borde y 0 (0) = 1; y 00 (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

Interpolacin mediante splines de f(x)=xcos(x

6
Datos
Spline

f(x)=xcos(x )
2

-2

-4

-6

3
x

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
Columns 9 through 16
2.0000
2.2500
2.5000
2.7500
Columns 17 through 24
4.0000
4.2500
4.5000
4.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

1.0000

1.2500

1.5000

1.7500

3.0000

3.2500

3.5000

3.7500

5.0000

5.2500

5.5000

5.7500

20

96.1197 -136.1198
19.0731
447.0089 -64.0300 -30.9643
-845.3628 271.2266
20.8348
912.5079 -362.7955
-2.0574
-695.5229 321.5854 -12.3599
345.3596 -200.0568
18.0222
18.8895
58.9629 -17.2512
l = 24
k = 4
d = 1
>> pp = mkpp(breaks,coefs);

3.0002
0.7629
-3.9956
4.9560
-3.9751
2.1664
-0.4353

Es posible realizar otras operaciones sobre la estructura pp como por ejemplo: gracar, calcular mnimos,
mximos y ceros, derivar, integrar, etc. Las funciones f nder y f nint devuelven la derivada e integral de la
spline 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-paine2.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 los
vectores x; y: Escriba en el informe los comandos utilizados.
Hint: Para importar datos desde algn archivo Excel, este debe estar visualizado en el Current Directory
de Matlab, y luego utilizar el siguiente comando:
[var1; text; cell_array; var2] = xlsread(0 archivo0 ;0 planilla0 ;0 rango0 ;0 f unction_handle0 )

(87)

Los inputs de esta instruccin son:


0

archivo0 : Nombre del archivo Excel del cual se importarn los datos.

planilla0 : Nombre de la planilla u hoja que especica desde donde se importarn los datos.

rango0 : Regin de la planilla de la cual se importarn los datos. Se ocupa la notacin de Excel, por
ejemplo: 0 C2 : E50 .
0

f unction_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 que
estn vacias o tengan texto. En este caso, se asigna el valor 0 N AN 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, nmericas o de texto.
var2 : Segundo output de la funcin 0 f unction_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 Current
Directory de Matlab, y luego utilizar el siguiente comando:
xlswrite(0 archivo0 ; 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 que
la 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 se
copian 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 la
interpolacin por trazos utilizando los mtodos: lineal, cbico y spline cbico.
Graque estas 3 interpolacines en un msmo grco, destacando los datos importados. Exporte la
interpolacin en el mismo archivo Excel, en la planilla 0 Spline0 . Incluya en el informe los comandos
que 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 una
funcin 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 <
< xn 1 < xn = b; y0 = f (x0 ); y1 = f (x1 ); :::; yn = f (xn ): El polinomio
S(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 curtico que interpola los puntos (x0 ; y0 ); :::; (xn ; yn ):
Determine las condiciones que debe vericar el spline curtico. Puede utilizar 2 tipos de condiciones de borde.
22

(b) Determine en forma explcita las ecuaciones que debe vericar el spline curtico. Despeje todos
los 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 ) y
entrega como resultado
i) Un arreglo s con los coecientes de la spline curtica ordenados de mayor a menor potencia:
2
3
e0
d0
c0
b0
a0
6 e1
d1
c1
b1
a1 7
6
7
(90)
s=6 .
..
..
..
.. 7
4 ..
.
.
.
. 5
en 1 dn 1 cn 1 bn 1 an 1

ii) El error de aproximacin en el intervalo [a; b], en el caso que los datos provengan de una
funcin 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 las
instrucciones.
(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.m
que se adjunta.

Aproximacin polinomial

El problema de calcular el polinomio de aproximacin pm de grado m de una funcin f 2 F consiste en


determinar la solucin del problema:
kf

pm kF = min kf
q2Pm

qkF

(91)

Revisaremos los casos de aproximacin uniforme de funciones contnuas F = C[a; b] y de funciones de


cuadrado integrable F = L2 (a; b):
El teorema de Weierstrass arma que toda funcin f contnua puede ser aproximada uniformemente por un
polinomio en un intervalo [a; b]: Esta aproximacin se construye con la base de polinomios de Bernstein de
grado m:
m
bm;j (x) =
xj (1 x)m j j = 0; :::; m
(92)
j
Un polinomio p(x) de grado m cualquiera se expresa en esta base segn:
p(x) =

m
X
j=0

23

j bm;j (x)

(93)

Los coecientes j se denominan los coecientes de Bernstein o Bzier. Para una funcin f contnua la
aproximacin polinomial pf;Bm (x) de Bernstein de grado m en el intervalo [0; 1] se dene como:
pf;Bm (x) =

m
X

j
m

bm;j (x)

(94)

j=0

Luego:
kf

pf;Bm k1 = min kf
q2Pm

qk1

(95)

En el caso de funciones de cuadrado integrable F = L2 (a; b); si consideramos la base de standard de Pm


Bm = 1; x; x2 ; :::; xm ; se tiene que:
kf

pm kL2 (a;b)
c

min kf

qkL2 (a;b)

q2Pm

Zb

min

a0 ;a1 ;:::;am

(96)
m
X

f (x)

ak x

k=0

!2

dx

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
@"c
@a1

(97)

..
.
@"c
@am

cuya solucin est dada por las ecuaciones normales contnuas:


2 Z

x0 dx

x1 dx

x2 dx

6
6 Zab
Zab
Zab
6
1
2
6
x dx
x dx
x3 dx
6
6 a
a
a
6
..
..
..
6
.
.
6 Z .
Z b
Z b
4 b
xm dx
xm+1 dx
xm+2 dx
a

2
6
6
6
6
4

b3 a3
3
b4 a4
4

bm+1 am+1
m+1

bm+2 am+2
m+2

bm+3 am+3
m+3

a)

..
.

..

b2 a2
2
b3 a3
3

(b

..
.

..
.

xm dx

72
7 a0
7
m+1
6
x
dx 7
7 6 a1
7 6 ..
a
74 .
..
7
.
7 am
Z b
5
2m
x dx

Z
.

a
b

..
.

bm+1 am+1
m+1
bm+2 am+2
m+2

..
.

b2m+1 a2m+1
2m+1

32
76
76
76
74
5

a0
a1
..
.
am

2 Z

6
6
6
6
7
6
7
7 = 6
6
5
6
6
4
3

3
x0 f (x)dx 7
7
Zab
7
1
x f (x)dx 7
7
7
a
7
..
7
.
7
Z b
5
m
x f (x)dx
b

2 Z

x0 f (x)dx
6
6 Zab
6
7
6
x1 f (x)dx
7
6
7 = 6 a
6
5
..
6
.
6 Z
4 b
xm f (x)dx
3

(98)

7
7
7
7
7
7
7
7
7
5

Por ejemplo, si f (x) = sin( x) y se quiere determinar su aproximacin de mnimos cuadrados de grado 3

24

p3 (x) en [0; 1] :

32

a0
1
1=2 1=3 1=4
6 1=2 1=3 1=4 1=5 7 6 a1 7 6
7 6
6
76
4 1=3 1=4 1=5 1=6 5 4 a2 5 = 4 (
(
a3
1=4 1=5 1=6 1=7
2

a0
6 a1 7 6
6
7 6
4 a2 5 = 4
a3

1
3

1
3

1
3

2
2

2=
1=
4)=
6)=

2 Z

1
0

x sin(
6
6 Z0 1
6
6
x1 sin(
7 6
7 = 6 Z0 1
5 6
6
x2 sin(
6
6 Z0
4 1
x3 sin(
3

3
3

12 2 120
6
60 2 720 7
7=6
2
4
5
60
720
0

x)dx 7
7 2
7
x)dx 7
7 6
7=6
7 4 (
x)dx 7
7
(
7
5
x)dx

5: 046 5 10
4: 122 5
4: 122 5
0

2
2

2=
1=
4)=
6)=

7
7
5

3
3

3
7
7
5

(99)

(100)

Aproximacin mnimos cuadrados standard de f(x)= sin( x)


1.2
f(x)
p (x)

f(x)=sin( x) vs p

0.8

0.6

0.4

0.2

-0.2

0.2

0.4

0.6

0.8

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 resolver
se utilizan bases ortogonales de Pm .
Consideremos una base ortogonal BPm = f
peso ! tal que: ! > 0 8x 2 [a; b]; es decir:
Zb

!(x) i (x)

0;

1 ; :::;

mg

j (x)dx

de Pm en L2 (a; b) con respecto a una funcin de

Zb

> 0 si i = j
si i =
6 j

!(x)

(101)

2
i (x)dx

En este caso el problema de mnimos cuadrados se reduce a :


kf

pm kL2! (a;b)
c

min kf

q2Pm

min

a0 ;a1 ;:::;am

qkL2! (a;b)
Zb
a

25

!(x) f (x)

(102)
m
X

k=0

ak

!2

k (x)

dx

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
@"c
@a1

(103)

..
.
@"c
@am

cuya solucin est dada por las ecuaciones normales contnuas:


Z

b
2
0 (x)dx

!(x)
!(x) 0 (x) 1 (x)dx
6
aZ
6 Z b a
b
6
6
!(x)
(x)
(x)dx
!(x) 21 (x)dx
1
0
6
6 a
a
6
..
..
6
.
.
6 Z
Z
b
4 b
!(x) m (x) 0 (x)dx
!(x) m (x) 1 (x)dx
a

!(x)

!(x)

0
..
.

2
0 (x)dx

0
Z

b
2
1 (x)dx

!(x)
..

..

..

..
.
Z

0 (x) m (x)dx

72
7 a0
7
6
!(x) 1 (x) m (x)dx 7
7 6 a1
7 6 ..
a
74 .
..
7
.
7 am
Z b
5
2
!(x) m (x)dx

Zab

2 Z
6
6
6
6
6
6
6
6
6
4

..

0
b

!(x)

2
m (x)dx

72
7 a0
7
7 6 a1
76
7 6 ..
74 .
7
7 am
5

2 Z

2 Z

!(x)f (x)
6
6 Zab
6
7 6
!(x)f (x)
7 6
7=6 a
5 6
..
6
.
6 Z
4 b
!(x)f (x)
3

!(x)f (x)
6
6 Zab
6
7 6
!(x)f (x)
7 6
7=6 a
5 6
..
6
.
6 Z
4 b
!(x)f (x)
3

0 (x)dx

(104)
3

7
7
7
7
1 (x)dx 7
7
7
7
7
5
m (x)dx

(105)

Luego, la solucin del sistema diagonal anterior est dada por:

ak =

!(x)f (x) k (x)dx


Z b
!(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 ! cualquiera
se aplica el siguiente teorema:
Teorema 9 El conjunto de polinomios f 0 ;
L2 (a; b) con respecto a la funcin de peso ! :
0 (x)

1 (x)

= x

k (x)

1 ; :::;

mg

de Pm denidos recursivamente es ortogonal en

(x

b1
bk )

(107)
k 1 (x)

26

ck

k 2 (x)

8k = 2; :::; m

0 (x)dx

7
7
7
7
1 (x)dx 7
7
7
7
7
5
m (x)dx

donde las constantes bk ; ck se calculan de la siguiente forma:


Z b
x!(x) 2k 1 (x)dx
a
8k = 1; :::; m
bk = Z b
2
!(x) k 1 (x)dx
a

ck

x!(x) k 2 (x) k 1 (x)dx


Z b
!(x) 2k 2 (x)dx

(108)

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 ortogonal
de Legendre, cuyos 5 primeros polinomios normalizados con la condicin k (1) = 1 son:
0 (x)

1 (x)

= x

2 (x)

3 (x)

4 (x)

1
3x2

1
2
1
2
1
8

5x

(109)

3x

35x4

30x2 + 3

Para determinar los polinomios de Legendre normalizados se puede aplicar la recursin:


k+1 (x)

(2k + 1)
x
k+1

k
k+1

k (x)

k 1 (x)

8k

(110)

o bien la frmula de Rodrigues:


k (x)

dk
dxk

2k k!

x2

8k

(111)

Se verica adicionalmente que:


Z

1
i (x) j (x)dx

1
Si i = j
(i+ 12 )
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;

el polinomio k-simo de Legendre. Entonces:

1) f tiene una expansin en series de Legendre, es decir 9fbk 2 R tales que:


f (x) =

1
X

k=0

donde:
fbk =

hf;
k

k iL2 ( 1;1)

k kL2 ( 1;1)

fbk

k (x)

(113)

f (x)

k (x)dx

= k+

1
2
k (x)dx
1

27

1
2

f (x)
1

k (x)dx

(114)

2) Existe un nico polinomio en Pm denotado por


contnuos en L2 ( 1; 1); es decir:

2
m f kL2 ( 1;1)

kf
Este polinomio

mf

mf

que es solucin del problema de mnimos cuadrados

= min kf

qkL2 (

q2Pm

1;1)

(115)

es la serie de Legendre truncada al orden m :


m f (x)

m
X

k=0

Ms an:

fbk

k (x)

2
m f kL2 ( 1;1)

lim kf

m!1

(116)

=0

(117)

Si se considera la funcin de peso !(x) = p11 x2 y el intervalo [ 1; 1], el teorema anterior genera la base
ortogonal de Chebyshev, denidos recursivamente segn:
T0 (x)

T1 (x)

= x

Tk+1 (x)

1
(118)

2xTk (x)

Tk

1 (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 1
2k

8j = 1; :::; k

(119)

2) Tk (x) alcanza sus extremos en:


x
bk;j = cos

j
k

T (b
xk;j ) = ( 1)

8j = 0; 1; :::; k

(120)

3) Sea pnL;T (x) el polinomio de Lagrange de grado n calculado en los ceros del polinomio de Chebyshev
Tn (x): Entonces, 8f 2 C n+1 [ 1; 1] :
max

x2[ 1;1]

f (x)

1
max f (n+1) (x)
+ 1)! x2[ 1;1]

pnL;T (x)

2n (n

(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 base
trigonomtrica B m , que en el intervalo [ ; ] est denida como:
0 (x)

1
2

k (x)

cos(kx) k = 1; 2; :::; m

m+k (x)

sin(kx) k = 1; 2; :::; m

28

(122)
1

El conjunto generado por esta base se denomina polinomios trigonomtricos


C[ ; ] la aproximacin de mnimos cuadrados en m es de la forma:

m:

Para una funcin f 2

m
X1
a0
Sm (x) =
+ am cos(mx) +
(ak cos(kx) + bk sin(kx))
2

(123)

k=1

donde los coecientes ak ; bk se calculan como:


Z
f (x) cos(kx)dx
Z
1
Z
f (x) cos(kx)dx 8k = 0; 1; :::; m
=
ak =
2
cos (kx)dx
Z
f (x) sin(kx)dx
Z
1
Z
f (x) sin(kx)dx 8k = 1; :::; m 1
bk =
=
sin2 (kx)dx
Por ejemplo, la aproximacin trigonomtrica de grado 3 de la funcin f (x) = jxj en [
S(x) =

1
2

cos(x)

4
cos(3x)
9

(124)

; ] es:
(125)

Aproximacin trigonomtrica de f(x)=abs(x)


3

f(x) vs aproximacin trigonomtrica

2.5

1.5

0.5

0
-3

-2

-1

0
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 misma
metodologa anterior es posible determinar el polinomio que mejor los representa en el sentido de los mnimos
cuadrados discretos:

min

a0 ;a1 ;:::;am

"d =

n
X

(yi

pm (xi )) =

i=0

n
X
i=0

yi

m
X

k=0

ak xki

!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
@"d
@a1

(127)

..
.
@"d
@am

cuya solucin est dada por las ecuaciones normales:


2

n
X
(n
+
1)
xi
6
6
i=0
6 X
n
X
6 n
6
xi
x2i
6
6 i=0
i=0
6
..
..
6
.
.
6
6 X
n
n
X
4
xm
xm+1
i
i
i=0

i=0

n
X
i=0
n
X

n
X

x2i

i=0
n
X

xm+1
i

x3i

i=0

i=0

..
.

n
X

xm
i

..

n
X

xm+2
i

i=0

..
.
x2m
i

i=0

7 a0
7
76
76
7 6 a1
76
76
76
7 6 ..
74 .
7
5 am

n
X

yi

6
6 i=0
7 6 X
7 6 n
7 6
xi yi
7 6
7 = 6 i=0
7 6
..
7 6
.
5 6
6 X
n
4
xm
i yi
i=0

3
7
7
7
7
7
7
7
7
7
7
7
5

(128)

El comando polyf it calcula el polinomio standard de aproximacin p de grado m en el sentido de los mnimos
cuadrados:
[p; S] = polyf it(x; y; m)

(129)

Los inputs de este comando son:


x : Vector con los datos x0 ; x1 ; :::; xn
y : Vector con los datos y0 ; y1 ::::yn
m : Grado del polinomio
En 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:
v
u n
uX
p
normr = "d = t
(yi

pm (xi ))

(130)

i=0

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 debe
ejecutar 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

Aproximacin de mnimos cuadrados de f(x)= xsin(x

Polinomios de aproxiamcin de grado 4, 6, 8

-1

-2

f(x)= xsin(x )
Polinomio de grado 4
Polinomio de grado 6
Polinomio de grado 8

-3

-4

0.5

1.5

2
x

2.5

3.5

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 cantidad
de 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
S =
R: [6x6 double]
df: 7
normr: 7.2964
>> S.R
ans =
1.0e+004 *
-1.0018
-0.1773
-0.0317
0
-0.0173
-0.0070
0
0
-0.0009
0
0
0
0
0
0
0
0
0

5.8414

-3.6074

0.3913

-0.0057
-0.0022
-0.0006
-0.0001
0
0

-0.0011
-0.0006
-0.0003
-0.0001
0.0000
0

-0.0002
-0.0002
-0.0002
-0.0001
0.0001
-0.0001

ACT 2: Aproximacin polinomial de funciones y datos:


Programe la funcin aproximacion_polinomial.m que calcula la aproximacin polinomial standard, de
Legendre, de Chebyshev y trigonomtrica de funciones y datos. De acuerdo al mtodo seleccionado y
al 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 la


seleccin 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, como
por ejemplo:
1
1
f (x) = xe jsin(x)j
f (x) =
(132)
f (x) =
1 + x2
1 + e jxj
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, se
aplica el proceso de lixiviacin que separa el cobre del mineral que lo contiene, aplicando una disolucin
de cido sulfrico y agua. Para esto, el mineral se ingresa a piscinas o bien se forman pilas que son
regadas 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 posible (respetando restricciones de produccin) con respecto a la razn de lixiviacin, que es proporcional
al tiempo que se debe aplicar el proceso. Lamentablemente no se conoce la relacin funcional exacta
entre ambas cantidades. Solo se cuenta con una serie de mediciones experimentales. En el workspace
que acompaa este laboratorio se encuentra una de estas mediciones, donde r es la razn de lixiviacin
y p el porcentaje de recuperacin, ver gura 12.

80

Porcentaje de Recuperacin: p

70

60

50

40

30

20

10

0.5

1.5
2
2.5
Razn de Lixiviacin: r

3.5

Figura 12. Datos experimentales de razn de lixiviacin y porcentaje de recuperacin.

33

Utilizando el curve tting tool cf tool del toolbox de curve tting determine un modelo lineal de los
datos (r; p) de la forma:
p(r) = 0 + 1 f1 (r) + 2 f2 (r) + 3 f3 (r)
(133)
donde i i = 0; :::; 3 son constantes y fi i = 0; :::; 3 son funciones que dependen solamente de r: El
modelo debe tener un coeciente de correlacin R2 0:98:
Incluya en el informe los programas .m, las pruebas realizadas, como tambin los resultados y grcos
generados. 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 Mathematics, Springer, 2007.
[3] Stoer, J., R. Burlisch, Introduction to Numerical Analysis, Second Edition, Springer, 1992.

34

También podría gustarte