Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ESTG|P.PORTO, 2019-2020
1
Textos elaborados em colaboração com Aldina Correia (aic@estg.ipp.pt)
(LEI, ESTG|P.PORTO) MCII 2019-2020 1 / 33
1 Introdução
2 Splines
Splines Lineares
Splines Quadráticas
Splines Cúbicas
O uso de polinómios
interpoladores de grau muito
elevado, não é, em geral,
aconselhável, pois:
Podem oscilar muito;
São computacional
ineficientes.
Efeito de Runge
O erro entre a função e o polinómio
interpolador aumenta com o aumento
do grau do polinómio, especialmente, função de Runge – linha vermelha;
na região próxima dos pontos -1 e 1. polinómio interpolador de grau 5 – curva azul;
Definição geral
Seja f uma função de variável real x definida no intervalo [a, b] e conhecida
nos pontos da partição
Desta forma pode definir-se a Spline que une os pontos da partição como a
função S : [a, b] → R que satisfaz:
S1 S(xi ) = f (xi ), i = 0, ..., n;
S2 S ∈ C2 ([a, b]);
Definição
Uma função spline de grau m é um polinómio segmentado de grau m
continuamente derivável até à ordem m − 1.
Ou seja, dada uma partição, conforme definida no slide anterior, S é uma
função spline de grau m se:
S é um polinómio Si de grau m em cada intervalo da partição
[xi , xi+1 ], i = 0, ..., n − 1
Si (xi ) = f (xi ), i = 0, ..., n;
dk dk
S (x
i+1 i+1 ) = Si (xi+1 ) , k = 0, ..., m − 1, i = 0, ..., n − 1
dxk dxk
O spline mais simples que podemos fazer com dois pontos é uni-los por uma
reta.
Os splines de primeiro grau para um conjunto de pontos podem ser definidos
como um conjunto de funções lineares, tais que:
S0 (x) = f (x0 ) + m0 (x − x0 ), para x0 ≤ x < x1
S1 (x) = f (x1 ) + m1 (x − x1 ), para x1 ≤ x < x2
...
Sn−1 (x) = f (xn−1 ) + mn−1 (x − xn−1 ), para xn−1 ≤ x ≤ xn
onde
mi é o coeficiente angular da reta que liga os pontos, e é dado por:
f (xi+1 ) − f (xi )
mi =
xi+1 − xi
Exemplo:
Considere a tabela seguinte:
x 1 10 20 30 40
f (x) 1 30 −10 20 40
Resolução:
a) Determine a spline linear que aproxima f no intervalo [1, 40].
Temos que a spline linear é dada por:
S0 (x) = f (x0 ) + m0 (x − x0 ), 1 ≤ x < 10
S1 (x) = f (x1 ) + m1 (x − x1 ), 10 ≤ x < 20
S(x) =
S (x) = f (x2 ) + m2 (x − x2 ), 20 ≤ x < 30
2
S3 (x) = f (x3 ) + m3 (x − x3 ), 30 ≤ x ≤ 40
f (xi+1 )− f (xi )
onde mi = xi+1 −xi , para i = 0, 1, 2, 4.
Assim,
para 1 ≤ x < 10, temos
30 − 1 29 29 20
S0 (x) = 1 + (x − 1) = 1 + (x − 1) = x −
10 − 1 9 9 9
29 20 125
f (5) ' S0 (5) = ×5− =
9 9 9
Teorema
Seja f uma função contı́nua com derivadas de segunda ordem no intervalo
[x0 , xn ] e seja S uma spline linear.
Se 00
max f (ξ) ≤ M2
ξ∈[x0 ,xn ]
para x ∈ [x0 , xn ].
Observação:
Caso não se conheça a expressão analı́tica de f , recorre-se a diferenciação
numérica!
para i = 1, ..., n − 1
A primeira parábola deve passar por (x0 , y0 ) e a última por (xn , yn ), logo
temos mais 2 equações:
Exemplo:
Considere a tabela seguinte:
x 1 10 20 30 40
f (x) 1 30 −10 20 40
S0 (x) = a0 x2 + b0 x + c0 ,
1 ≤ x < 10
S1 (x) = a1 x2 + b1 x + c1 , 10 ≤ x < 20
S(x) =
S (x) = a2 x2 + b2 x + c2 , 20 ≤ x < 30
2
S3 (x) = a3 x2 + b3 x + c3 , 30 ≤ x ≤ 40
a0 x12 + b0 x1 + c0 = f (x1 )
a1 x12 + b1 x1 + c1 = f (x1 )
a1 x22 + b1 x2 + c1 = f (x2 )
a2 x22 + b2 x2 + c2 = f (x2 )
a2 x32 + b2 x3 + c2 = f (x3 )
a3 x32 + b3 x3 + c3 = f (x3 )
a0 x02 + b0 x0 + c0 = f (x0 )
a3 x42 + b3 x4 + c3 = f (x4 )
2a0 x1 + b0 = 2a1 x1 + b1
2a1 x2 + b1 = 2a2 x2 + b2
2a2 x3 + b2 = 2a3 x3 + b3
a0 , b0 , c0 , a1 , b1 , c1 , a2 , b2 , c2 , a3 , b3 , c3
a0 x12 + b0 x1 + c0 = f (x1 )
a1 x12 + b1 x1 + c1
= f (x1 )
a1 x22 + b1 x2 + c1
= f (x2 )
a2 x22 + b2 x2 + c2
= f (x2 )
a2 x32 + b2 x3 + c2
= f (x3 )
a3 x32 + b3 x3 + c3 = f (x3 )
a0 x02 + b0 x0 + c0 = f (x0 )
a3 x42 + b3 x4 + c3
= f (x4 )
2a0 x1 + b0 −2a1 x1 − b1 = 0
2a1 x2 + b1 −2a2 x2 − b2 = 0
2a2 x3 + b2 −2a3 x3 − b3 = 0
a0 = 0
Uma Spline Cúbica é uma função S definida num intervalo definido pelos
pontos I = [x0 , xn ] com as seguintes propriedades:
1 S, S0 e S00 são funções contı́nuas no intervalo I .
2 em cada subintervalo [xi , xi+1 ], S é um polinómio cúbico
Si = ai x3 + bi x2 + ci x + di tal que S(xi ) = f (xi ), para i = 0, 1, ..., n − 1.
S00 (x0 ) = 0
S00 (xn ) = 0
S0 (x0 ) = f 0 (x0 )
S0 (xn ) = f 0 (xn )
Teorema
Seja f uma função contı́nua com derivadas de segunda ordem no intervalo
[x0 , xn ] e seja S uma spline cúbica para f nesse intervalo. Se
max f (4) (ξ) ≤ M4
ξ∈[x0 ,xn ]
para x ∈ [x0 , xn ].
Considerem-se nesse intervalo pontos igualmente espaçados xi , i = 0, ..., n,
em que xi = xi−1 + h, i = 1, ..., n. Assim, h = xn −x
n
0
e o limite superior é:
5 4
| f (x) − S (x)| ≤ h M4
384
(LEI, ESTG|P.PORTO) MCII 2019-2020 28 / 33
Splines Cúbicas
Exemplo:
Um braço de um robô deve passar nos
instantes ti por posições pré-definidas
θ(ti ), onde θ é o ângulo (em radianos) que
o braço do robô faz com o plano XOY.
ti 1 2 3 4 5 6
θ(ti ) 0.9782 1.3028 1.6656 2.2568 2.837 2.8092
1 Supondo que
θ(ti ) = 0.0006ti5 − 0.0269ti4 + 0.2617ti3 − 0.9326ti2 + 1.6754ti :
1 Aproxime a trajetória do robô por uma spline cúbica completa.
2 Determine uma aproximação da posição do robô no instante t = 1.5.
3 Calcule o limite superior para o erro cometido na aproximação da alı́nea
anterior.
(LEI, ESTG|P.PORTO) MCII 2019-2020 29 / 33
Splines Cúbicas no Scilab
Resolução:
//introduzir os dados
x=[1 2 3 4 5 6];
y=[0.9782 1.3028 1.6656
2.2568 2.837 2.8092];
//representar graficamente
os pontos
plot2d(x’,y’,[-3],"011",
,[0,0,7,5]);
Resolução:
//estimar as derivadas no suporte
d = splin(x,y,"clamped",[0.4907;-0.6058]);
//definir o intervalo onde se vai estimar
xp=1:0.1:6
//definir a spline
[yp, yp1, yp2]= interp(xp, x, y, d);
5
|θ (t) − S (t)| ≤ × 14 × M4 ' 0.0074688
384