Você está na página 1de 28

Interpolação

Prof. Dr. Marcus Pinto da Costa da Rocha


Objetivo
Interpolar uma função f(x) consiste em aproximar essa
função por uma outra função g(x), escolhida entre uma
classe de funções definidas (polinômios). g(x) é usada
em substituição à função f.

Marcus Pinto da Costa da Rocha


Problemática
Essa necessidade de efetuar esta substituição surge quando:
Quando são somente conhecidos os valores numéricos da função para
um conjunto de pontos e é necessário calcular o valor de um ponto no
tabelado.
Quando a expressão da função é complicada de mais para ser integrada
ou diferenciada.

Marcus Pinto da Costa da Rocha


Graficamente

Marcus Pinto da Costa da Rocha


Interpolação polinomial

Prof. Dr. Marcus Pinto da Costa da Rocha


Interpolação Linear - Resolução do sistema
Vamos encontrar o polinômio de grau £1 que interpola os pontos da
tabela:
x 0 1
f(x) 1,35 2,94
Considerando p1(x)=a0+a1x. Temos o sistema:

[ 𝑥0
𝑥1
1
1 ][ ] [ ] [ ][ ] [ ] {
𝑎1
𝑎0
𝑦
= 0 ⇔
𝑦1
0
1
1 𝑎1
1 𝑎0
=
1 , 35
2 , 94

0. 𝑎 1+1. 𝑎 0 =1 ,35
1. 𝑎 1 +1. 𝑎 0=2 , 94

𝑎 0= 1 ,35 𝑒 𝑎1 =1 ,59 ⇒ 𝑝1 ( 𝑥 ) =1 ,35 +1 ,59 𝑥

Marcus Pinto da Costa da Rocha


Interpolação Quadrática - Resolução do sistema
Vamos encontrar o polinômio de grau £2 que interpola os pontos da
tabela:
x -1 0 2
f(x) 4 1 -1
Considerando p2(x)=a0+a1x+a2x . Temos o sistema:
2

[ ][ ] [ ] [ ][ ] [ ]
𝑥20 𝑥0 1 𝑎2 𝑓 ( 𝑥 0) 1 −1 1 𝑎2 4
𝑥21 𝑥1 1 𝑎1 = 𝑓 ( 𝑥 1) ⇔ 0 0 1 𝑎1 = 1
𝑥22 𝑥2 1 𝑎0 𝑓 ( 𝑥 2) 4 2 1 𝑎0 −1

a 0 -a1 +a 2 =4
 7 2 7 2 2
 a 0  1, a 1   , a 2  𝑃 2 ( 𝑥 )= 1− 𝑥+ 𝑥
a 0 =1 3 3
a +2a +4a =-1 3 3
 0 1 2

Marcus Pinto da Costa da Rocha


Obter pn(x)

Para obter o polinômio pn(x), existem diversos métodos, o mais


direto sendo a resolução do sistema linear.

A escolha do método depende de várias condições: a estabilidade


do sistema, performance computacional, ...

As interpolações: Linear e Quadrática são casos particulares da


interpolação de Lagrange

Marcus Pinto da Costa da Rocha


Interpolação de Lagrange: Matriz
A matriz do sistema é:
1 x0 ... x0 
n

 n 
 1 x1 ... x1 
A
1 ... ... ... 
 n

1 xn ... xn 

Essa matriz é uma matriz de Vandermonde, desde que x 0, ..., xn


são pontos distintos, temos det A¹0. Então o sistema admite uma
solução única.

Marcus Pinto da Costa da Rocha


Interpolação de Lagrange: Determinante de Vandermonde

O determinante da matriz de Vandermonde pode ser escrito da


forma seguinte:

n
1 x0 ... x0
n
1 x1 ... x
1 ... ...
1

...
 
0i  j  n
( x j  xi )
n
1 xn ... xn

Marcus Pinto da Costa da Rocha


Exemplo
Sejam os valores: xo=1, x1=0, x2=3 e x3=2. Determinar:

∏ (𝑥 𝑗 − 𝑥 𝑖) = (𝑥 1 − 𝑥 0 )(𝑥 2 − 𝑥 0)(𝑥 3 − 𝑥 0)(𝑥 2 −𝑥1 )(𝑥 3 − 𝑥 1)(𝑥 3 − 𝑥 2)


𝑖< 𝑗
(1)(2)(-1) =12

12

Marcus Pinto da Costa da Rocha


Forma de Lagrange
A forma de Lagrange para o polinômio interpolador é:

𝑛 𝑛
(𝑥 − 𝑥 𝑗 )
𝑃 𝑛 = ∑ 𝑦 𝑖∗ ∏
𝑖= 0 𝑗= 0 (𝑥𝑖 − 𝑥 𝑗 )
𝑗≠ 𝑖

𝑛 𝑖−1
𝑃 𝑛 ( 𝑥 ) =𝑦 0+ ∑ ∆ 𝑦 0 ∏ (𝑥 − 𝑥 𝑗 ) 𝑖

𝑖=1 𝑗= 0

Marcus Pinto da Costa da Rocha


Exemplo
Seja a tabela: x -1 0 2
f(x) 4 1 -1
Temos:
( x  x1 )( x  x2 ) ( x  0)( x  2) x2  2 x
L0 ( x)   
( x0  x1 )( x0  x2 ) (1  0)(1  2) 3
( x  x0 )( x  x2 ) ( x  1)( x  2) x 2  x  2
L1 ( x)   
( x1  x0 )( x1  x2 ) (0  1)(0  2) 2
( x  x0 )( x  x1 ) ( x  1)( x  0) x 2  x
L2 ( x)   
( x2  x0 )( x2  x1 ) (2  1)(2  0) 6

x2  2x x2  x  2 x2  x 7 2
pn ( x)  4    1 x  x2
3 2 6 3 3
Marcus Pinto da Costa da Rocha
Forma de Lagrange
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%% Método de Lagrange - Interpolação %%%%%%%%%%%%%%%%%%%%%
%%% Descrição: Este programa permite realizar interpolações a partir %%%%%
%%% dos pontos (x,f(x)) %%%%%
%%% Dados de Entrada: x, f(x) %%%%%
%%% Equação de Lagrange: P(x)= sum(f(x(i))+Prod(x-x(j))/(x(i)-x(j)) %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Disciplina: Cálculo Numérico %%%%%
%%% Periodo: 1 semestre de 2021 %%%%%
%%% Professor: Marcus Rocha %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% DADOS DE ENTRADA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Marcus Pinto da Costa da Rocha


clear,clf
xf=[-1 0 2];
fx=[4 1 -1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms x
for i=1:3
n=1;
for j=1:3
if i ~= j
PDD(n)=x-xf(j);
PDN(n)=xf(i)-xf(j);
n=n+1;
end
end
result(i)=prod(PDD)/prod(PDN);
P1(i)=fx(i)*result(i);

end
PX(x)=sum(P1);

Marcus Pinto da Costa da Rocha


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(1)
plot(xf,fx,'*')
axis([-2 3 -2 5])
hold on
pause(5)
x=-2:0.1:3;
plot(x,PX(x))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Marcus Pinto da Costa da Rocha


Operador diferenças divididas
f(x) é uma função tabelada em x 0,...,xn.
Os operadores de diferenças divididas são definidos por:

 f [ x0 ]  f ( x0 ) ordem 0

 f [ x0 , x1 ]  f [ x1 ]  f [ x0 ] ordem1
 x1  x0

 f [ x , x , x ]  f [ x1 , x2 ]  f [ x0 , x1 ] ordem 2
 0 1 2
x2  x0

 f [ x ,..., x ]  f [ x1 ,..., xn ]  f [ x0 ,..., xn 1 ] ordem n
 0 n
xn  x0

Marcus Pinto da Costa da Rocha


Operador diferenças divididas

x Ordem 0 Ordem 1 Ordem 2 ... Ordem n


𝑓 ( 𝑥 1 ) − 𝑓 ( 𝑥 0)
x0 f[x0] 𝑓 ( 𝑥 0 , 𝑥 1)=
𝑥1 − 𝑥 0
f[x0,x1]
x1 f[x1] f[x0,x1,x2] 𝑓 ( 𝑥 1 , 𝑥 2) − 𝑓 ( 𝑥 0 , 𝑥 1 )
𝑓 ( 𝑥 0 , 𝑥 1 , 𝑥 2)=
𝑥2 − 𝑥0
f[x1,x2]
x2 f[x2] f[x1,x2,x3]
f[x0,...,xn]
f[xn-2, xn-1, xn]
.... f[xn-1, xn]
xn f[xn]

Marcus Pinto da Costa da Rocha


Operador diferenças divididas - Exemplo:
𝑓 ( 𝑥 1 , 𝑥 2) − 𝑓 ( 𝑥 0 , 𝑥 1 )
𝑓 ( 𝑥 1 ) − 𝑓 ( 𝑥 0) 𝑓 ( 𝑥 0 , 𝑥 1 , 𝑥 2)=
x f(x) 𝑓 ( 𝑥 0 , 𝑥 1)=
𝑥1 − 𝑥 0
=
1 −1
0 −(− 1)
=0 𝑥2 − 𝑥0

-1 1 x Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4


𝑓 ( 1 ,0 ,1 ) =
−1 − 0
=−
1
1 − (− 1 ) 2
0 1 -1 1
0
1 0 0 1 -1/2
-1 1/6
2 -1 1 0 0 -1/24
3 -2 -1 0
2 -1 0
-1
3 -2

Marcus Pinto da Costa da Rocha


Operador diferenças divididas - Exemplo:
𝑓 ( 𝑥 1 ) − 𝑓 ( 𝑥 0) 1 −1
x=[-1 0 1 2 3];
𝑓 ( 𝑥 0 , 𝑥 1)= = =0 f=[1 1 0 -1 -2];
𝑥1 − 𝑥 0 0 −(− 1)

𝑓 ( 𝑥 1 , 𝑥 2) − 𝑓 ( 𝑥 0 , 𝑥 1 ) 1 for i=2:5
𝑓 ( 𝑥 0 , 𝑥 1 , 𝑥 2)= =− f1(i-1)=(f(i)-f(i-1)) / (x(i)-x(i-1));
𝑥2 − 𝑥0 2
end
x Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4
-1 1 for i=2:4
f2(i-1)=(f1(i)-f1(i-1))/(x(i+1)-x(i-1));
0
end
0 1 -1/2
-1 1/6 for i=2:3
1 0 0 -1/24 f3(i-1)=(f2(i)-f2(i-1))/(x(i+2)-x(i-1));
end
-1 0
2 -1 0 for i=2:2
-1 f4(i-1)=(f3(i)-f3(i-1))/(x(i+3)-x(i-1));
3 -2 end

Marcus Pinto da Costa da Rocha


Forma de Newton

2 𝑛
𝑃 𝑛 ( 𝑥 ) = 𝑦 0+ ( 𝑥 − 𝑥 0 ) ∆ 𝑦 0 + ( 𝑥 − 𝑥 0 ) ( 𝑥 − 𝑥1 ) ∆ 𝑦 0 +… + ( 𝑥 − 𝑥 0 ) ( 𝑥 − 𝑥 1 ) … (𝑥 − 𝑥𝑛 ) ∆ 𝑦 0

𝑛 𝑖−1
𝑃 𝑛 ( 𝑥 ) =𝑦 0+ ∑ ∆ 𝑦 0 ∏ (𝑥 − 𝑥 𝑗 ) 𝑖

𝑖=1 𝑗= 0

Marcus Pinto da Costa da Rocha


Operador diferenças divididas - Exemplo:
𝑓 ( 𝑥 1 , 𝑥 2) − 𝑓 ( 𝑥 0 , 𝑥 1 )
x f(x) 𝑓 ( 𝑥 0 , 𝑥 1)=
𝑓 ( 𝑥 1 ) − 𝑓 ( 𝑥 0)
=
1 −1
=0 𝑓 ( 𝑥 0 , 𝑥 1 , 𝑥 2)=
𝑥2 − 𝑥0
𝑥1 − 𝑥 0 0 −(− 1)
-1 1 x Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4 −1 − 0 1
𝑓 ( 1 ,0 ,1 ) = =−
1 − (− 1 ) 2
0 1 -1 1
0
1 0 0 1 -1/2
-1 1/6
2 -1 1 0 0 -1/24

3 -2 -1 0
2 -1 0
-1
3 -2

𝑃 𝑛 ( 𝑥 ) = 𝑦 0+ ( 𝑥 − 𝑥 0 ) ∆ 𝑦 0 + ( 𝑥 − 𝑥 0 ) ( 𝑥 − 𝑥1 ) ∆2 𝑦 0 +… + ( 𝑥 − 𝑥 0 ) ( 𝑥 − 𝑥 1 ) … (𝑥 − 𝑥𝑛 ) ∆ 𝑛 𝑦 0

𝑃 4 ( 𝑥 ) =1 + ( 𝑥 −( − 1 ) ) 0 + ( 𝑥 − ( − 1 ) ) ( 𝑥 − 0 ) ¿

Marcus Pinto da Costa da Rocha


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
%%%%%%%%%%%%%%%%%% Método de Newton - Interpolação %%%%%%%%%%%%%%%%%%%%%
%%% Descrição: Este programa permite reliazar interpolações a partir %%
%%%
%%% de pontos (x,f(x)), %%
%%%
%%% Dados de Entrada: x, f(x) %%
%%%
%%% Equação de Lagrange: P(x)= sum(f(x(i))+Prod(x-x(j))/(x(i)-x(j)) %%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%
%%% Disciplina: Cálculo Numérico %%
%%%
%%% Periodo: 1 semestre de 2021 %%
%%%
%%% Professor: Marcus Rocha %%
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Marcus Pinto da Costa da Rocha
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%
%%% DADOS DE ENTRADA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%
clear,clf

xf=[-1 0 1 2 3];
fx=[1 1 0 -1 -2];
%delta=[0 -0.5 0.167 -0.04162];

Marcus Pinto da Costa da Rocha


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calculo dos ?y
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
n=5;
m=5;
fx1=fx;
f1(:,1)=fx1;
for j=2:5
for i=2:n
f1(i-1,j)=(fx1(i)-fx1(i-1))/(xf(i+j-2)-xf(i-1));
end
fx1=f1(:,j);
n=n-1;
end

Marcus Pinto da Costa da Rocha


delta=f1(1,2:5);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%
% Cálculo do Pn(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
syms x

for j=1:4
PDD(j)=x-xf(j);
P1(j)=delta(j)*prod(PDD);
end

PX(x)=fx(1)+sum(P1);

Marcus Pinto da Costa da Rocha


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plot do Pn(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
plot(xf,fx,'*')
axis([-2 3 -2 5])
hold on
pause(5)
x=-2:0.1:3;
plot(x,PX(x))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Marcus Pinto da Costa da Rocha


Obrigado!

Prof. Dr. Marcus Pinto da Costa da Rocha

Você também pode gostar