Você está na página 1de 10

Introdução

A variação das leituras de uma variável ou fatores externos aos experimentos podem
muitas vezes levar a interpolação a gerar um polinômio de grau elevado para modelar
sistemas que na verdade são lineares ou de grau bem mais baixo.
Nestes casos devemos usar o ajuste de curvas para determinar o melhor polinômio de
grau mais baixo que se encaixe nos dados apresentados.
Portanto, a diferença entre interpolação e ajuste de curvas é que na interpolação, o
polinômio gerado irá invariavelmente passar por todos os pontos da tabela utilizada no
cálculo, com um polinômio de grau (n-1). No ajuste de curvas, o polinômio gerado
passa pelo melhor caminho entre os pontos da tabela, e não sobre eles. O ajuste de
curvas normalmente utiliza polinômios de grau menor.
Se por acaso o polinômio gerado no ajuste de curvas for de grau (n-1), ele será
idêntico ao polinômio gerado na interpolação.
Exercícios

Fazendo o Script de Plotagem:


vx = [0; 0.15; 0.31; 0.5; 0.6; 0.75];
vy = [1.0; 1.04; 1.031; 1.117; 1.223; 1.422];
G = [ones(vx),(vx)];
y = vy;
a = inv(G'*G)*G'*y;
disp(a, "Coeficientes: ")
x = 0:0.01:1;
plot(vx, vy, 'or');
fx = a(1)*ones(x) + a(2)*(x);
plot(x, fx);
xgrid
Obtém-se o seguinte resultado:

Como a é uma regressão linear, a função é do 1º grau, com coeficientes "a" e "b"
obtidos com os seguintes valores:
a = 0.9436213
b = 0.5070442

Fazendo o Script de Plotagem:


vx = [0; 0.15; 0.31; 0.5; 0.6; 0.75];
vy = [1.0; 1.04; 1.031; 1.117; 1.223; 1.422];
G = [ones(vx),(vx), (vx).^2, (vx)^3];
y = vy;
a = inv(G'*G)*G'*y;
disp(a, "Coeficientes: ")
x = 0:0.01:1;
plot(vx, vy, 'or');
fx = a(1)*ones(x) + a(2)*(x) + a(3)*(x).^2 + a(4)*(x)^3;
plot(x, fx);
xgrid
Obtém-se o seguinte resultado:

Como é uma regressão cúbica, temos uma função do 3º grau, com coeficientes "a",
"b", "c" e "d" dados por:
a = 1.0048967
b = 0.2151917
c = -0.8022776
d = 1.6862796

A regressão cúbica é melhor, pois os pontos estão mais próximos da curva dada.

Fazendo o Script de Plotagem:


function [y]=interpolacao_lagrange(vx, vy, x)
n = length(vx);
y = 0;
for i = 1:n
li = 1;
for j = 1:n
if(i ~= j)
li = li*( (x-vx(j))/(vx(i)-vx(j)) );
end
end
y = y + vy(i)*li;
end
endfunction
vx = [0; 0.15; 0.31; 0.5; 0.6; 0.75];
vy = [1.0; 1.04; 1.031; 1.117; 1.223; 1.422];
x = 0.4122;
y = interpolacao_lagrange(vx, vy, x);
disp(y, "f(0.4122) = ")
Obtém-se o seguinte resultado para f(0.4122), usando o método de Lagrange:
f (0.4122) = 1.0581593

Fazendo o Script de Plotagem:


function [T]=diferencas_divididas(vx, vy)
k = length(vx);
T = zeros(k, k);
T(:,1) = vy;
for j = 1:k-1
for i = 1:k-j
T(i, j+1) = ( T(i+1, j) - T(i, j) )/( vx(i+j)-vx(i) );
end
end
endfunction
function [y]=interpolacao_newton(vx, vy, x)
k = length(vx);
T = diferencas_divididas(vx, vy);
y = 0;
for i = 1:k
p = 1;
for j = 1:i-1
p = p*(x - vx(j));
end
y = y + T(1,i)*p;
end
endfunction
vx = [0; 0.15; 0.31; 0.5; 0.6; 0.75];
vy = [1.0; 1.04; 1.031; 1.117; 1.223; 1.422];
x = 0.4122;
y = interpolacao_newton(vx, vy, x);
disp(y, "f(0.4122) = ")
Obtém-se o seguinte resultado para f(0.4122), usando o método de Newton:
f(0.4122) = 1.0581593

Sim, isto era esperado pois o ponto f(0.4122) está muito próximo dos valores de x.
Fazendo o Script de Plotagem:
vx = [2; 3; 4; 5; 6; 7; 8; 9; 10; 19; 20];
vy = [1.9; 1.2; 2.9; 2.3; 9.2; 5.3; 6.7; 1.9; 2.3; 5.3; 1.2];
G = [ones(vx),(vx), (vx).^2, (vx)^3, (vx)^4];
y = vy;
a = inv(G'*G)*G'*y;
x = 0.75;
fx = a(1)*ones(x) + a(2)*(x) + a(3)*(x)^2 + a(4)*(x)^3 + a(5)*(x)^4;
disp(a, "Coeficientes: ")
Como o polinômio é de grau 4, a função contém cinco coeficientes, "a", "b", "c", "d" e
"e" dados pelos seguintes valores:
a = -10.339358
b = 7.3735822
c = -1.217545
d = 0.0800511
e = -0.0018035

Fazendo o Script de Plotagem:


vx = [2; 3; 4; 5; 6; 7; 8; 9; 10; 19; 20];
vy = [1.9; 1.2; 2.9; 2.3; 9.2; 5.3; 6.7; 1.9; 2.3; 5.3; 1.2];
G = [ones(vx),(vx), (vx).^2, (vx)^3, (vx)^4];
y = vy;
a = inv(G'*G)*G'*y;
x = 2:0.01:20;
plot(vx, vy, 'or');
fx = a(1)*ones(x) + a(2)*(x) + a(3)*(x)^2 + a(4)*(x)^3 + a(5)*(x)^4;
plot(x, fx);
xgrid

Como o menor e maior valor de distância do lançador são respectivamente 2 e 20, o


gráfico é obtido através desses dois valores.
Fazendo o Script de Plotagem:
function [y]=interpolacao_lagrange(vx, vy, x)
n = length(vx);
y = 0;
for i = 1:n
li = 1;
for j = 1:n
if(i ~= j)
li = li*( (x-vx(j))/(vx(i)-vx(j)) );
end
end
y = y + vy(i)*li;
end
endfunction
vx = [2:3:102];
vy = [vx.*cos(vx)];
x = 40.79;
y = interpolacao_lagrange(vx, vy, x);
disp(y, "f(40.79) = ")

Logo, o valor de f(40.79) encontrado foi:


f(40.79) = -52.960613

Fazendo o Script de Plotagem:


function [T]=diferencas_divididas(vx, vy)
k = length(vx);
T = zeros(k, k);
T(:,1) = vy;
for j = 1:k-1
for i = 1:k-j
T(i, j+1) = ( T(i+1, j) - T(i, j) )/( vx(i+j)-vx(i) );
end
end
endfunction
function [y]=interpolacao_newton(vx, vy, x)
k = length(vx);
T = diferencas_divididas(vx, vy);
y = 0;
for i = 1:k
p = 1;
for j = 1:i-1
p = p*(x - vx(j));
end
y = y + T(1,i)*p;
end
endfunction
vx = [2:3:102];
vy = [vx.*cos(vx)];
x = 40.79;
y = interpolacao_newton(vx, vy, x);
disp(y, "f(40.79) = ")

Logo, o valor de f(40.79) obtido foi:

f(40.79) = -52.960613

Fazendo o Script de Plotagem:


TaK = [273.15; 283.15; 293.15; 303.15; 313.15];
Kw = [1.164*10^(-15); 2.950*10^(-15); 6.846*10^(-15); 1.467*10^(-14); 2.929*10^(-14)];
G = [1./(TaK), log10(TaK), (TaK), ones(TaK)];
y = -log10(Kw);
a = inv(G'*G)*G'*y;
disp(a, "Coeficientes: ")

Logo, os parâmetros encontrados foram:


a = 5180.6642
b = 13.424128
c = 0.005629
d = -38.276241
Conclusão
Em termos de complexidade computacional, a interpolação é um processo mais
simples que a regressão polinomial (solução do sistema linear).
A interpolação deve ser utilizada quando se necessita de um valor intermediário não
constante de uma tabela.
A regressão tem que ser utilizada quando se deseja estimar um parâmetro de um
modelo semideterminístico e/ou prever um valor dado por esse modelo.
Bibliografia

CHAPRA, S. C.; CANALE, R. P. Métodos Numéricos para Engenharia. 5ª Ed.


São Paulo: McGraw‐Hill Brasil, 2008. ISBN: 9788586804878.
Slides utilizados na aula de computação numérica do professor Francisco Jose
Targino Vidal.
Apostilha do Professor Sandro Bruno do Nascimento Lopes.
Regressão e Interpolação de Pontos

Nome: Josiel
Turma: 04

Natal/RN
11/11/2017

Você também pode gostar