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)

a1 x +
a 2 x2 +
a3 x3 , se b1 x < b2 ,
a0 +
..
..
f (x) =
.
.

(n1)
(n1) 3
(n1)
(n1) 2
x + a3
x , se bn1 x bn ,
x + a2
a0
+ a1

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

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

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

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

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
(3)
(3)
(2)
(3)
(2)
(2)

a1 2a2 b3 3a3 b23 = 0


a1 + 2a2 b3 + 3a3 b23

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

t),
se
bk1 x < bk ,

p1 (1 t), se bk x bk+1 ,
em que
1 3
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).
p1 (t) =

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
0.2

x
0

0.5

0.2

0.5

0
0.2

y
0.8

0.8

0.6

0.6

0.6

0.4

0.4

0.4

0.2

0.2

0.2

0.2

x
0

0.5

0
0.2

0.5

0.8

x
0

0.5

0
0.2

x
0

0.5

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).
y

0.8

0.6

0.4

0.2

0.2
0.2

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
= 0
4 1
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
f (x) =

n+2
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

3.5

2.5

1.5

0.5

0
x
1.5

0.5

0.5

1.5

2.5

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 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, 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
j = 1, . . . , 5. Neste caso
1

1 14 0 0


4
1
1 23 23 1

32 32 32 32 0

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

3
0 1 23 23 1

32
32
32
32
0
1
0 0 4 1 14

= cj , para i = 1, . . . , 6,

c1
c2
c3
c4
c5

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
y

1 0 1/2
1 4 2
4

1 2 3
1 3 0

4.5

3.5

2.5

1.5

0.5

0
x
1.5

0.5

0.5

1.5

2.5

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
j = 1, . . . , 5. Neste caso
1

1
1
0 0
4
4

1
1
23
23
1
32 32 32 32 0
4

1 121 235 27

256 256 256 256 0


, B = 2
A=
1
0
1
1
1
0

4
4

3
0
1
23
23
1

32
32
32
32
0
1
1
0
0
1 4
4

e X por xj = cj , para i = 1, . . . , 6,

X=

c1
c2
c3
c4
c5

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

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, Philadelphia, 1995.

[2] Reginaldo J. Santos. Geometria Analtica e Algebra


Linear. Imprensa Universitaria da
UFMG, Belo Horizonte, 2000.

Você também pode gostar