Na interpolação, dado um conjunto de pontos em um plano XY se deseja calcular uma curva que passa exatamente por esses pontos. Se existem muitos pontos, pode-se calcular uma curva que passa por entre esses pontos de tal forma que a distância média entre a curva e os pontos seja mínima, isso é uma regressão (que pode ser linear ou não linear).
A regressão é "linear" se a relação da resposta às variáveis é uma função linear de alguns parâmetros. Nesta postagem apresentamos uma regressão polinomial usando Scilab: dado um conjunto de muitos pontos ruidosos, podemos calcular uma curva polinomial que passa por esses pontos.
Código Scilab:
clc; close;
// Pontos:
X = 0:0.01:3;
X = X + 0.001*rand(1,max(size(X)),'n');
Y = 1 + cos(X/1.5);
Y = Y + 0.01*rand(1,max(size(X)),'n');
plot(X,Y,'.');
plot([-0.01, 3.01],[0.01, 2.48],'wx');
title('Muitos pontos, uma curva polinomial');
xgrid; xlabel('x'); ylabel('y');
///////////////
tp1 = X; s1 = sum(tp1);
tp2 = X.*X; s2 = sum(tp2);
tp3 = X.*X.*X; s3 = sum(tp3);
tp4 = tp3.*X; s4 = sum(tp4);
tp5 = tp4.*X; s5 = sum(tp5);
tp6 = tp5.*X; s6 = sum(tp6);
yi = sum(Y);
yixi = sum(Y.*tp1);
yixi2 = sum(Y.*tp2);
yixi3 = sum(Y.*tp3);
Mb = [max(size(t)), s1, s2, s3
s1, s2, s3, s4
s2, s3, s4, s5
s3, s4, s5, s6];
vy = [yi; yixi; yixi2; yixi3];
b = inv(Mb)*vy;
pb = b(1) + b(2)*X + b(3)*X.*X + b(4)*X.*X.*X;
plot(t,pb,'m');
disp(b);
nao entende muito os codigos
ResponderExcluir