Contents

% Matlab/opas/lyhyt/esim/pnspoly.m

Eri asteisia pienimmän neliösumman (PNS) sovituksia

clear all; close all

% Erääseen kuvitteelliseen kemialliseen reaktioon liittyvä data
%  Kirjasta: Forsythe-Malcolm-Moler s. 81

xdata=[-1 -0.960 -0.86 -0.79 0.22 0.5 0.93];
ydata= [ -1 -0.151 0.894 0.986 0.895 0.5 -0.306];
plot(xdata,ydata,'o') % Piirretään taulukkopisteet erillisinä rinkuloina

a=min(xdata)-0.1;b=max(xdata)+0.1;
c=min(ydata)-0.1;d=max(ydata)+0.1;

axis([a b c d])

%m=length(xdata)-1    % Interpolaatiopolynomin asteluku

c1=polyfit(xdata,ydata,1); % PNS-suora
c2=polyfit(xdata,ydata,2); % PNS-polynomi, astetta 2
c3=polyfit(xdata,ydata,3); % PNS-suora, astetta 3
c4=polyfit(xdata,ydata,4); % PNS-suora, astetta 4

x=linspace(a,b); % Muodostetaan tiheä pisteistö, jossa polynomin arvot lasketaan..
                  % Muista, että linspace(a,b); on sama kuin
                  % linspace(a,b,100);
y1=polyval(c1,x);
y2=polyval(c2,x);
y3=polyval(c3,x);
y4=polyval(c4,x);

hold on           % Pidetään aiempi grafiikka
plot(x,y1,'r',x,y2,'b',x,y3,'k',x,y4,'g')
ylim([-1.1 3])
grid on
legend('Data','PNS-suora','PNS 2','PNS 3','PNS 4')