Você está na página 1de 6

Ajuste de Splines a um Conjunto de Dados

Reginaldo J. Santos
Departamento de Matematica-ICEx
Universidade Federal de Minas Gerais
http://www.mat.ufmg.br/~regi
regi@mat.ufmg.br
7 de junho de 2001

Seja C 2 (I) o espaco das funcoes que possuem a segunda derivada contnua no intervalo
I. Dados os n umeros reais b1 < b2 < . . . < bn , igualmente espacados, isto e, bk+1 bk =
(bn b1 )/(n 1), para k = 1, . . . , n 1. Seja S o subconjunto de C 2 [b1 , bn ] formado pelas
funcoes que sao polinomios de grau menor ou igual a 3 em cada subintervalo [bk , bk+1 ], para
k = 1, . . . , n 1. Este conjunto e chamado de Splines (c ubicos) em [b1 , bn ] com pontos de
quebra b2 , . . . , bn1 . O conjunto S e claramente um subespaco de C 2 [b1 , bn ]. Vamos mostrar
que a dimensao de S e n + 2.
Seja f um elemento generico de S. Entao
(1) (1) (1) (1)

a0 +
a1 x + a 2 x2 + a3 x3 , se b1 x < b2 ,
f (x) = .. ..
. .
(n1)
(n1) (n1) 2 (n1) 3
a0 + a1 x + a2 x + a3 x , se bn1 x bn ,

Assim a funcao f e uma combinacao linear de 4(n 1) = 4n 4 funcoes. Mas, os coeficientes


nao sao independentes, pois precisamos usar o fato de que f , f 0 e f 00 sao contnuas nos pontos
de quebra b2 , . . . , bn1 . Do fato de que f , f 0 e f 00 sao contnuas em b2 obtemos as equacoes

(1) (1) (1) 2 (1) 3 (2) (2) (2) 2 (2) 3


a0 + a 1 b 2 + a 2 b 2 + a 3 b 2 a 0 a 1 b 2 a 2 b 2 a 3 b 2 = 0

(1) (1) (1) (2) (2) (2)


a1 + 2a2 b2 + 3a3 b22 a1 2a2 b2 3a3 b22 = 0
(1) (1) (2) (2)
2a2 + 3a3 b2 2a2 6a3 b2 = 0

Do fato de que f , f 0 e f 00 sao contnuas em b3 obtemos as equacoes

(2) (2) (2) 2 (2) 3 (3) (3) (3) 2 (3) 3


a0 + a 1 b 3 + a 2 b 3 + a 3 b 3 a 0 a 1 b 3 a 2 b 3 a 3 b 3 = 0

(2) (2) (2) (3) (3) (3)


a1 + 2a2 b3 + 3a3 b23 a1 2a2 b3 3a3 b23 = 0
(2) (2) (3) (3)
2a2 + 3a3 b3 2a2 6a3 b3 = 0

Juntando os dois conjuntos de equacoes obtidos aos que podemos obter para os pontos de quebra
restantes obtemos um sistema linear homogeneo triangular superior com 3(n 2) = 3n 6
equacoes e 4n 4 incognitas. Como o sistema e triangular superior, entao as equacoes sao
linearmente independentes e portanto teremos uma solucao que depende de (4n4)(3n6) =

1
n+2 parametros. E assim, podemos escrever todo spline de S como combinacao linear de apenas
n + 2 funcoes. Isto mostra que a dimensao de S e menor ou igual a n + 2.
Vamos agora exibir um conjunto de n + 2 splines linearmente independentes o que vai nos
permitir concluir que a dimensao de S e n + 2. Para k = 1, . . . , n + 2, sejam


p1 (t), se bk3 x < bk2 ,
p2 (t), se bk2 x < bk1 ,

qk (x) =

p 2 (1 t), se bk1 x < bk ,
p1 (1 t), se bk x bk+1 ,

em que
1 3
p1 (t) = t,
4
3
p2 (t) = 1 (1 + t)(1 t)2
4
e t = (x bk )/h com h = bk+1 bk = (bn b1 )/(n 1).

y y y
0.8 0.8 0.8

0.6 0.6 0.6

0.4 0.4 0.4

0.2 0.2 0.2

0 x 0 x 0 x
0.2 0.2 0.2
0 0.5 1 0 0.5 1 0 0.5 1

y y y
0.8 0.8 0.8

0.6 0.6 0.6

0.4 0.4 0.4

0.2 0.2 0.2

0 x 0 x 0 x
0.2 0.2 0.2
0 0.5 1 0 0.5 1 0 0.5 1

Figura 1: Funcoes qk , para k = 1, . . . , 6 no intervalo [0, 1] dividido em 3 subintervalos

Vamos considerar a combinacao linear nula dos splines qk


n+2
X
k qk (x) = 0. (1)
k=1

Em cada intervalo [bk , bk+1 ] somente as funcoes qk , qk+1 , qk+2 e qk+3 podem ser diferentes de
zero, e sao dadas neste intervalo por
qk (x) = p1 (1 t),

2
qk+1 (x) = p2 (1 t),
qk+2 (x) = p2 (t),
qk+3 (x) = p1 (t)
em que t = (x bk )/h com h = bk+1 bk = (bn b1 )/(n 1).

0.8

0.6

0.4

0.2

0
x

0.2
0.2 0 0.2 0.4 0.6 0.8

Figura 2: Funcoes qk , para k = 1, . . . , 6 no intervalo [0, 1] dividido em 3 subintervalos

Derivando a equacao (1) e substituindo nos pontos x = b1 e x = b2 obtemos as equacoes


3
4 1 + 34 3 = 0
3 3
4 2 + 4 4 = 0
Juntando com as equacoes correspondentes aos pontos b3 , . . . , bn obtemos n equacoes que dao
que os k s para k mpar sao iguais o mesmo acontecendo para os k s para k par.
Substituindo x = b1 e x = b2 na equacao (1) obtemos as equacoes
1
+ 2 + 14 3
4 1
= 0
1 1
+ 3 + 4 4 = 0
4 2

Como 3 = 1 e 4 = 2 , obtemos as equacoes


1
+ 2 = 0
2 1
1 + 12 2 = 0
o que da que 1 = 2 = . . . = n+2 = 0. Portanto as funcoes qk , para k = 1, . . . , n + 2, sao L.I.
o que prova que o subespaco S tem dimensao n + 2 e que o conjunto {qk | k = 1, . . . , n + 2} e
uma base de S.
Assim cada funcao f S tem uma u nica representacao como uma combinacao linear
n+2
X
f (x) = cj qj (x).
j=1

Usando a base {qk | k = 1, . . . , n + 2} o problema de encontrar uma funcao de S que melhor


se ajusta a um conjunto de pontos (x1 , y1 ), . . . , (xm , ym ) no sentido de quadrados mnimos toma
a forma
min ||AX B||,
em que a matriz A e definida por aij = qj (xi ), o vetor B e dado por bi = yi e X e o vetor dos
coeficientes cj , para j = 1, . . . , n + 2 e i = 1, . . . , m.

3
4.5
y

3.5

2.5

1.5

0.5

0
x
1.5 1 0.5 0 0.5 1 1.5 2 2.5 3 3.5

Figura 3: Ajuste dos dados do Exemplo 1 por splines dividindo-se o intervalo [1, 3] em dois
subintervalos

Exemplo 1. Considere o seguinte conjunto de dados


x 1 0 1 2 3
y 1 4 1 3 0

Dividindo-se o intervalo [1, 3] em dois subintervalos e usando a base {q1 , q2 , q3 , q4 , q5 }, o pro-


blema de encontrar um spline

f (x) = c1 q1 (x) + c2 q2 (x) + c3 q3 (x) + c4 q4 (x) + c5 q5 (x)

que melhor se ajusta ao conjunto de pontos (1, 1), (0, 4), (1, 1), (2, 3), (3, 0) no sentido de
quadrados mnimos toma a forma
min ||AX B||,
em que a matriz A e definida por aij = qj (xi ), B por bj = yj e X por xj = cj , para i = 1, . . . , 6,
j = 1, . . . , 5. Neste caso
1
1 14 0 0

4
1 23 23 1 1 c1
32 32 32 32 0

4 c2
1 1

A = 0 4 1 4 0 , B = 1 , X= c3 ,



0 1 23 23 1
3 c4
32 32 32 32
0 c5

1
0 0 4 1 14

Os coeficientes cj obtidos resolvendo o problema de quadrados mnimos sao

c1 = 103/3, c2 = 95/9, c3 = 35/9, c4 = 9, c5 = 289/9

Exemplo 2. Vamos, agora, acrscentar o par (1/2, 2) ao conjunto de dados do exemplo anterior
obtendo o seguinte conjunto de dados
x 1 0 1/2 1 2 3
y 1 4 2 1 3 0

4
4.5
y

3.5

2.5

1.5

0.5

0
x
1.5 1 0.5 0 0.5 1 1.5 2 2.5 3 3.5

Figura 4: Ajuste dos dados do Exemplo 2 por splines dividindo-se o intervalo [1, 3] em dois
subintervalos

Como no exemplo anterior, dividindo-se o intervalo [1, 3] em dois subintervalos e usando a


base {q1 , q2 , q3 , q4 , q5 }, o problema de encontrar um spline

f (x) = c1 q1 (x) + c2 q2 (x) + c3 q3 (x) + c4 q4 (x) + c5 q5 (x)

que melhor se ajusta ao conjunto de pontos (1, 1), (0, 4), (1/2, 2), (1, 1), (2, 3), (3, 0) no sentido
de quadrados mnimos toma a forma

min ||AX B||,

em que a matriz A e definida por aij = qj (xi ), B por bj = yj e X por xj = cj , para i = 1, . . . , 6,


j = 1, . . . , 5. Neste caso
1 1

4
1 4
0 0
1 23 23 1
32 32 32 32 0
1
4 c1
1 121 235 27
256 256 256 256 0
c2
, B = 2

A= 0 1 1 1
, X= c3 ,
4
1 4
0



c4


3
0 1 23 23 1 c5
32 32 32 32 0
1 1
0 0 4
1 4

Os coeficientes cj obtidos resolvendo o problema de quadrados mnimos sao

c1 = 34.3558, c2 = 10.6063, c3 = 4.0436, c4 = 9.2060, c5 = 32.7890

5
Comandos do MATLAB:

>>x=linspace(a,b) cria um vetor x contendo 100 valores igualmente espacados entre a e b.


>>plot(x,f(x)) desenha as funcao f(x) ligando os pontos que (xi , f (xi ).

Comandos do pacote GAAL:

>> qk=spline1(k,x,nbp,a,b) calcula o spline qk em x para um intervalo [a,b] dividido em


nbp-1 subintervalos.
>> A=spline1(X,nbp,a,b) cria a matriz aij = qj (Xi ) para um intervalo [a,b] dividido em
nbp-1 subintervalos.
>> f=spline1(C,x,nbp,a,b) calcula a soma Ck qk (x) com k=1:nbp+2

Refer
encias
[1] Charles L. Lawson and Richard J. Hanson. Solving Least Squares Problems. SIAM, Phila-
delphia, 1995.

[2] Reginaldo J. Santos. Geometria Analtica e Algebra Linear. Imprensa Universitaria da
UFMG, Belo Horizonte, 2000.

Você também pode gostar