Вы находитесь на странице: 1из 9

Mtodos Numricos

M. Audelo

Interpolacin de Splines

1.1

Funcin spline

Consiste en una funcin formada por varios polinomios, cada uno sobre un intervalo que se unen obedeciendo ciertas
condiciones de continuidad.
Supongamos que tenemo n + 1 puntos x0 ; x1 ; x2 ; :::; xn (x0 < x1 < x2 < ::: < xn ), para K 0. Una funcin spline
de grado K es una funcin S que satisface:
1. En cada intervalo [xi

1 ; xi )

S es un polinomio de grado menor o igual a K

2. S tiene una derivada de orden K

1 continua en [x0 ; xn ]

Ejemplo 1 Spline de grado 0


8
S0 (x) = C0
>
>
>
>
S1 (x) = C1
>
>
<
:
S(x) =
:
>
>
>
>
:
>
>
:
Sn 1 (x) = Cn

[x0 ; x1 )
[x1 ; x2 )
:
:
:
[xn 1 ; xn )

5
4
3
2
1
0
1

-1
-2

Ejemplo 2 Spline de grado 1


8
S0 (x) = a0 x + b0
>
>
>
>
S1 (x) = a1 x + b1
>
>
<
:
S(x) =
> :
>
>
>
> :
>
:
Sn 1 (x) = an 1 x + bn

[x0 ; x1 )
[x1 ; x2 )
:
:
:
[xn 1 ; xn )

Mtodos Numricos

M. Audelo

5
4
3
2
1
0
1

-1
-2

El spline de grado 3 o ms concocido como spline cbico es el ms utilizado (K = 3), debido a que proporciona un
excelente ajuste a los puntos tabulados y su clculo no es excesivamente complejo

0
0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

-1

1.2

Spline cbico

Si [a; b] se divide en n intervalos x0 = a; x1 ; x2 ; :::; xn = b, S(x) se dice spline cbico en el intervalo [a; b] si satisface
las siguientes propiedades:
1. xi

xi+1

i = 0; 1; 2; :::; n

S(x) = Si (x) =

3
ix

2
ix

ix

2. S(xi ) = f (xi )
3. Si+1 (xi+1 ) = Si (xi+1 )
0

00

00

i = 0; 1; 2; :::; n

4. Si+1 (xi+1 ) = Si (xi+1 )


5. Si+1 (xi+1 ) = Si (xi+1 )
00

00

6. S (a) = S (b) = 0

Trazador Natural; S (a) = f (a) y S (b) = f (b)


2

Trazador Sujeto

Mtodos Numricos

M. Audelo

Una forma alternativa de hallar estos coecientes es suponer de partida que el polinomio cbico Si (x) en el intervalo
[xi ; xi+1 ] tiene la forma:
Si (x) = ai + bi (x

xi )2 + di (x

xi ) + ci (x

xi )3

De la propiedad 1: S(xi ) = f (xi )


Si (xi ) = ai + bi (xi
ai = f (xi )
Denamos hi = xi+1
De la propiedad 3

xi )2 + di (xi

xi ) + ci (xi

xi )3 = f (xi )

xi

Si+1 (xi+1 ) = Si (xi+1 )

Si+1 (xi+1 ) = ai+1 + bi+1 (xi+1 xi+1 ) + ci+1 (xi+1 xi+1 )2 + di+1 (xi+1 xi+1 )3
Si (xi+1 ) = ai + bi (xi+1 xi ) + ci (xi+1 xi )2 + di (xi+1 xi )3 = ai + bi hi + ci h2i + di h3i
ai+1 = ai + bi hi + ci h2i + di h3i
0

Como Si (x) =

dS(x)
dx

= bi + 2ci (x

i = 0; 1; :::; n

(1)

xi ) + 3di (x

xi ) , utilizando la propiedad 4
0

Si+1 (xi+1 ) = Si (xi+1 )


0

Si+1 (xi+1 )
0

Si (xi+1 )

= bi+1 + 2ci+1 (xi+1


= bi + 2ci (xi+1

xi+1 ) + 3di+1 (xi+1

xi ) + 3di (xi+1

bi+1 = bi + 2ci hi + 3di h2i


00

Como Si (x) =

d S(x)
dx2

= 2ci + 6di (x

xi+1 )2

xi )2 = bi + 2ci hi + 3di h2i

i = 0; 1; :::; n

(2)

xi ), utilizando la propiedad 5
00

00

Si+1 (xi+1 ) = Si (xi+1 )


00

Si+1 (xi+1 )
00

Si (xi+1 )

2ci+1 + 6di+1 (xi+1

2ci + 6di (xi+1

xi+1 )

xi ) = 2ci + 6di hi

2ci+1 = 2ci + 6di hi


ci+1 = ci + 3di hi
di =

i = 0; 1; :::; n

ci+1 ci
3hi

Si reemplazamos la ec. 3 en la ec. 1


ai+1
ai+1
ai+1

ci+1 ci 3
hi
3hi
ci+1 ci 2
= ai + bi hi + ci h2i +
hi
3
1
1 2
= ai + bi hi + ci h2i + ci+1 h2i
ci h
3
3 i
= ai + bi hi + ci h2i +

(3)

Mtodos Numricos

M. Audelo

1
ai+1 = ai + bi hi + (2ci + ci+1 )h2i
3

(4)

Si reemplazamos la ec. 3 en la ec. 2.


= bi + 2ci hi + 3di h2i
ci+1 ci 2
hi
= bi + 2ci hi + 3
3hi
= bi + 2ci hi + (ci+1 ci )hi
= bi + 2ci hi + ci+1 hi ci hi
= bi + ci hi + ci+1 hi

bi+1
bi+1
bi+1
bi+1
bi+1

bi+1 = bi + (ci + ci+1 )hi

(5)

De la ec. 4 despejando bi tenemos:


bi =

ai+1 ai
hi

1
(2ci + ci+1 )hi
3

(6)

Disminuimos en la ec. 6 el indice en una unidad


bi

ai

ai
hi

bi = bi

1
(2ci
3

+ ci )hi

(7)

Disminuimos en la ec. 5 el indice en una unidad


+ (ci

+ ci )hi

(8)

1
(2ci
3

+ ci )hi

Reemplazamos las ec. 6 y 7 en la ec. 8


ai ai
1
(2ci + ci+1 )hi =
3
hi 1

ai+1 ai
hi
3(ai+1 ai )
hi

(2ci + ci+1 )hi =

3(ai+1 ai )
hi

3(ai ai
hi 1

3(ai+1 ai )
hi

3(ai ai
hi 1

3(ai+1 ai )
hi

1)

3(ai ai
hi 1

Que representa un conjunto de n


3(a2 a1 )
h1
3(a3 a2 )
h2
3(a4 a3 )
h3

1)

3(ai ai
hi 1

1)

= (2ci + ci+1 )hi

= 2ci hi + ci+1 hi
1)

= ci

1 hi 1

2ci

+ 2(hi

+ (ci

+ ci )hi

(2ci

+ ci )hi

+ 3(ci

+ ci )hi

(2ci

+ ci )hi

+ 3(ci

+ ci )hi

1 hi 1

ci hi

+ 3ci

+ hi )ci + ci+1 hi

1 hi 1

+ 3ci hi

i = 1; 2; :::; n

1 ecuaciones:

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

= c0 h0 + 2(h0 + h1 )c1 + c2 h1
= c1 h1 + 2(h1 + h2 )c2 + c3 h2
= c2 h2 + 2(h2 + h3 )c3 + c4 h3

.
.
.
3(an an
hn 1

1)

3(an

hn

an
2

2)

= cn

2 hn 2

Este sistema de ecuaciones no puede ser resuelto, tenemos n


Si consideramos un trazador sujeto:
00
00
S (x0 ) = S (xn ) = 0
00
S0 (x0 ) = 2c0 + 6d0 (x0 x0 ) = 2c0 = 0 =) c0 = 0
4

+ 2(hn

+ hn

1 )cn 1

+ cn hn

1 ecuaciones y n + 1 incognitas c0 ; c1 ; c2 ; :::; cn .

Mtodos Numricos

M. Audelo

00

Sn (xn ) = 2cn + 6d0 (xn xn ) = 2cn = 0 =) cn = 0


Con lo cual, el sistema anterior se transforma en un sistema de n + 1 ecuaciones con n + 1 incognitas
0

3(a2 a1 )
h1
3(a3 a2 )
h2
3(a4 a3 )
h3

3(an an
hn 1

1)

3(an

= c0
= c0 h0 + 2(h0 + h1 )c1 + c2 h1
= c1 h1 + 2(h1 + h2 )c2 + c3 h2
= c2 h2 + 2(h2 + h3 )c3 + c4 h3
:
:
:
2)
= cn 2 hn 2 + 2(hn 2 + hn 1 )cn
0 = cn

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

hn

an
2

Que puede ser representado matricialmente:


2
1
0
0
0
:
6h0 2(h0 + h1 )
h
0
:
1
6
60
h
2(h
+
h
)
h
0
1
1
2
2
6
60
0
h2
2(h2 + h3 ) h3
6
6:
:
0
:
:
6
6:
:
:
:
6
4:
:
:
0
0
0
:
:

+ cn hn

2
3
32 3
0
c0
3(a2 a1 )
3(a1 a0 )
6
7
7 6 c1 7 6
7
h1
h0
76 7 6
7
3(a3 a2 )
3(a2 a1 )
7 6 c2 7 6
7
h2
h1
76 7 6
7
3(a4 a3 )
3(a3 a2 )
7 6 c3 7 6
7
76 7 = 6
7
h3
h2
76 : 7 6
7
:
76 7 6
7
76 : 7 6
7
:
:
76 7 6
7
3(an 1 an 2 ) 7
3(an an 1 )
hn 2 2(hn 2 + hn 1 ) hn 1 5 4 : 5 6
4 hn 1
5
hn 2
cn
:
0
1
0
Una vez resuelto el sistema y determinado los coecientes c0 ; c1 ; c2 ; :::; cn , utilizamos las ec. 3 para determinar di y
la ec. 6 para hallar bi conjuntamente con ai = f (xi ).
Por lo tanto el spline cbico quedara determinado como:
8
S0 (x) = a0 + b0 (x x0 ) + c0 (x x0 )2 + d0 (x x0 )3
[x0 ; x1 )
>
>
>
2
3
>
S
(x)
=
a
+
b
(x
x
)
+
c
(x
x
)
+
d
(x
x
)
[x1 ; x2 )
>
1
1
1
1
1
1
1
1
>
>
>
[x2 ; x3 )
< S2 (x) = a2 + b2 (x x2 ) + c2 (x x2 )2 + d2 (x x2 )3
:
:
S(x) =
>
>
:
:
>
>
>
>
:
:
>
>
:
Sn 1 (x) = an 1 + bn 1 (x xn 1 ) + cn 1 (x xn 1 )2 + dn 1 (x xn 1 )3 [xn 1 ; xn )
:
:
:
0
:
:

:
:
:
:

0
0
0
:
:
:

Ejemplo 3 Construya el trazador cbico libre de los siguientes datos


xi
0:5
0:25
0

y = f (xi )
0:0247500
0:3349375
1:1010000

El spline cbico estar determinado como:


S(x) =

S0 (x) = a0 + b0 (x
S1 (x) = a1 + b1 (x

x0 ) + c0 (x
x1 ) + c1 (x

x0 )2 + d0 (x
x1 )2 + d1 (x

x0 )3
x1 )3

[ 0:5; 0:25)
[ 0:25; 0)

Determinamos la diferencia entre dos puntos consecutivos, donde se denira cada polinomio cbico
hi = xi+1 xi
h0 = x1 x0 = 0:25 ( 0:5) = 0:25
h1 = x2 x1 = 0 ( 0:25) = 0:25
Los valores del los coecientes ai son:
ai = f (xi )
a0 = f (x0 ) = 0:0247500
a1 = f (x1 ) = 0:3349375
a2 = f (x2 ) = 1:1010000
c0 = 0
c2 = 0
5

Mtodos Numricos

para i = 1
3
ai )
hi (ai+1
3
a1 )
h1 (a2

3
hi

3
h0 (a1

M. Audelo

(ai ai 1 )
3
3
ao ) = 0:25
(1:1010000 0:3349375) 0:25
(0:3349375 + 0:0247500) = 4: 876 5
2
32
3
3 2
0
1
0
0
c0
3
4 h0 2(h0 + h1 ) h1 5 4 c1 5 = 4 3 (a2 a1 )
ao ) 5
h1
h0 (a1
0
0
1
c2
0
2
32
3 2
3
1
0
0
c0
0
4 0:25 1 0:25 5 4 c1 5 = 4 4: 876 5 5
0
0
1
c2
0

La matriz aumentada del sistema

1
4 0:25
0

0
0
1 0:25
0
1

3
0
4:8765 5
0

Se transforma en una matriz triangular inferior por eliminacin Gaussiana:


3
2
1:0 0
0
0
4 0 1:0 0:25 4: 876 5 5
0
0
1:0
0

cuya solucin es:


c0 = 0
c1 = 4: 876 5
c2 = 0
ci
por tanto con di = ci+1
3hi
d0 = 6:502
d1 = 6:502
1
y con bi = ai+1hi ai
3 (2ci + ci+1 )hi
b0 = 1:03238
b1 = 2:2515
Por tanto, las ecuaciones son:
S0 (x) = 0:0247500 + 1:03238(x + 0:5) + 6:502(x + 0:5)3 = 6: 502x3 + 9: 753x2 + 5: 908 88x + 1: 304 19
S1 (x) = 0:3349375 + 2:2515(x + 0:25) + 4: 876 5(x + 0:25)2 6:502(x + 0:25)3 = 6: 502x3 + 3: 470 625x + 1: 101
S(x) =

6: 502x3 + 9: 753x2 + 5: 908 88x + 1: 304 19


6: 502x3 + 3: 470 625x + 1: 101

0:5 x
0:25
0:25 x 0

1.2
1.0
0.8
0.6
0.4
0.2

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

0.1
-0.2

Mtodos Numricos

M. Audelo

Ejemplo 4 La temperatura media en un recinto vara con respecto al tiempo, un grupo de termocuplas sensa la
temperatura en diferentes puntos del recinto, las cuales a travs de una tarjeta de adquisicin de datos enva los
valores hacia un computador la cual calcula la media en cada instante de tiempo que se registra, entregando la
siguiente informacin:
i
ti ( min)
Ti = f (ti )( C)

0
10
14

1
25
10

2
38
21

3
59
15

Haciendo uso de un spline cbico natural, calcule lo siguiente:


1. Determine el spline indicando sus resultados parciales.
2. La temperatura a los 20 minutos.
3. La razn de cambio ( C= min) a los 45 min.
El spline cbico estar determinado como:
8
< S0 (t) = a0 + b0 (t
S1 (t) = a1 + b1 (t
S(t) =
:
S2 (t) = a2 + b2 (t

t0 ) + c0 (t
t1 ) + c1 (t
t2 ) + c2 (t

t0 )2 + d0 (t
t1 )2 + d1 (t
t2 )2 + d2 (t

t0 )3
t1 )3
t2 )3

[10; 25)
[25; 38)
[38; 59)

Determinamos la diferencia entre dos puntos consecutivos, donde se denira cada polinomio cbico
hi = ti+1 ti
h0 = t1 t0 = 25 10 = 15
h1 = t2 t1 = 38 25 = 13
h2 = t3 t2 = 59 38 = 21
Los valores del los coecientes ai son:
ai = f (ti )
a0 = f (t0 ) = 14
a1 = f (t1 ) = 10
a2 = f (t2 ) = 21
a3 = f (t3 ) = 15
c0 = 0
c3 = 0
para i = 1; 2
3
ai ) hi3 1 (ai ai 1 )
hi (ai+1
3
3
3
a1 ) h30 (a1 ao ) = 13
(21 10) 15
(10 14) = 217
h1 (a2
65 = 3:338461538
3
3
3
309
3
(a
a
)
(a
a
)
=
(15
21)
(21
10)
=
3:395604396
3
2
2
1
h2
h1
21
13
91 =
Por tanto:
3
2
32
3 2
0
1
0
0
0
c0
6 h0 2(h0 + h1 )
6
7 6 217 7
h1
0 7
6
7 6 c1 7 = 6 65
7
4 0
5
5
4
h1
2(h1 + h2 ) h2
c2 5 4 309
91
0
0
0
1
c3
0
2
32
3 2
3
0
1
0
0
0
c0
6 15 56 13 0 7 6 c1 7 6 217 7
6
76
7 6 65 7
4 0 13 68 21 5 4 c2 5 = 4 309 5
91
0
0
0
1
c3
0
Resolviendo por el mtodo de Gauss simple
2
1 0
0
6 0 56
13
6
4 0 0 64:98214286
0 0
0

cuya solucin es:


c0 = 0

32
0
c0
6 c1
0 7
76
21 5 4 c2
1
c3

7 6
7=6
5 4

7
7
4:170604396 5
0
217
65

Mtodos Numricos

217

M. Audelo

13 ( 6:418 077663 10

c1 = 65
= 0:07451
56
4:170604396
= 0:06418
c2 = 64:98214286
c3 = 0
1
por tanto con bi = ai+1hi ai
3 (2ci + ci+1 )hi
b0 = 0:63924
b1 = 0:47848
b2 = 0:61282
ci
Con di = ci+1
3hi
d0 = 1:65588 10 3
d1 = 3:55629 10 3
d2 = 1:01874 10 3
Las ecuaciones son:
S0 (t) = 14 0:63924(t 10) + 1:65588 10 3 (t 10)3 = 0:001 655 88t3 0:049 676 4t2 0:142 476 t + 18: 736 52
S1 (t) = 10 + 0:47848(t 25) + 0:07451(t 25)2 3:55629 10 3 (t 25)3 = 0:003 556 29t3 + 0:341 231 75t2 9:
915 063 75t + 100: 173 781 3
S2 (t) = 21 + 0:61282(t 38) 0:06418(t 38)2 + 1:01874 10 3 (t 38)3 = 0:001 018 74t3 0:180 316 36t2 + 9:
903 681 68t 150: 863 381 3
8
0:001 655 88t3 0:049 676 4t2 0:142 476 t + 18: 736 52
10 t < 25
<
0:003 556 29t3 + 0:341 231 75t2 9: 915 063 75t + 100: 173 781 3 25 t < 38
S(x) =
:
0:001 018 74t3 0:180 316 36t2 + 9: 903 681 68t 150: 863 381 3 38 t < 59

S(t) 30

20

10

0
0

10

20

30

40

S0 (t) = 0:00165588t3 0:049676 4t2 0:142476t + 18:73652


S0 (20) = 9:26348 C
S2 (t) = 0:001 01874t3 0:18031636t2 + 9:903681 68t 150:863381 3
2 (t)
h(t) = dSdt
= 0:00305622t2 0:360 632 72t + 9:90368168
h(45) = 0:135 945 22 C= min

1.3

Programa en Matlab

clc;
clear;
fprintf(INTERPOLACIN CON EL MTODO DE SPLINES CBICOSnn);
n=input(nnDigite el nmero de puntos: );
for i=1:n
fprintf(x(%d) = ,i);
x(i)=input(n);

50

60

Mtodos Numricos

M. Audelo

fprintf(y(%d) = ,i);
y(i)=input(n);
end
for i=1:n-1
h(i)=x(i+1)-x(i);
end
for i=1:n
a(i)=y(i);
end
v(1)=0;
v(n)=0;
for i=2:n-1
v(i)=3*((a(i+1)-a(i))/h(i))-3*((a(i)-a(i-1))/h(i-1));
end
H(1,1)=1;
H(n,n)=1;
for i=2:n-1
H(i,i)=2*(h(i-1)+h(i));
H(i,i-1)=h(i-1);
H(i,i+1)=h(i);
end
%Resuelve el sistema de ecuaciones
%Matriz aumentada
for i=1:n
H(i,n+1)=v(i);
end
%Transforma la matriz H en una matriz triangular superior
for k=1:n-1
for i=k+1:n
factor=H(i,k)/H(k,k);
for j=k:n+1
H(i,j)=H(i,j)-factor*H(k,j);
end
end
end
%Sustitucin hacia atras y determina los coeficientes c
c(n)=H(n,n+1)/H(n,n);
for i=n-1:-1:1
sum=H(i,n+1);
for j=i+1:n
sum=sum-H(i,j)*c(j);
end
c(i)=sum/H(i,i);
end
%Determina los coeficientes d y b
for i=1:n-1
d(i)=(c(i+1)-c(i))/(3*h(i));
b(i)=((a(i+1)-a(i))/h(i))-((2*c(i)+c(i+1))*h(i))/3;
end
%Muestra todos los coeficientes
disp(i a b c d)
for i=1:n-1
fprintf(%d %5.4f %5.4f %5.4f %5.4fnn,i-1,a(i),b(i),c(i),d(i));
end

Вам также может понравиться