clc
clear
disp('  Különböző f(x) függvények közelítései az interp1 gyári függvénnyel');
disp('  A függvénydefiníciók közül töröljük a forrásban');
disp('  a % kommentjelet az elől,amit tesztelni szeretnénk!');
%%% case utasítással elegánsabb lenne a választás...

%%% Az f(x) = x^3*cos((x^3) függvény:
f = @(x) x.^3.*cos(x.^3)

%%% Az f(x) = (x-1)^2/(x^3 + 2) függvény:
%f = @(x) (x-1).^2./(x.^3 + 2)

%%% Az f(x) = sin(x) függvény:
%f = @(x) sin(x)

%%% Az f(x) = sqrt(x+1) függvény:
%f = @(x) sqrt(x+1)



ido = 5;                        % késleltetés
x=linspace(1,4,10);             % 10 interpolációs alappont az [1 4] intervallumban
y = f(x);                       % függvényértékek az alappontokban

xx=linspace(1,4,500);           % mintapontok az ábrázoláshoz
    
yy1=interp1(x,y,xx,'nearest');  % a 'nearest' közelítő függvény értéke az xx helyeken
yy2=interp1(x,y,xx,'linear');   % a lineáris közelítő függvény értéke az xx helyeken

yy3=interp1(x,y,xx,'spline');   % a spline közelítő függvény értéke az xx helyeken

plot(x,y,'markersize',24,'r.',xx,f(xx),'r','linewidth',2);
title('Az f(x) függvény közelítései','fontsize',14);
legend('az [x_i f(x_i) alappontok', 'f(x)',
       'location','northwest');
grid on;
hold on;
refresh;

pause(ido);
plot(xx,yy1,'b','linewidth',2);

legend('az [x_i f(x_i) alappontok', 'f(x)',
       'a legközelebbi értékkel (lépcsősfüggvénnyel) való közelítés',    
       'location','northwest');
refresh
       
pause(ido);
plot(xx,yy2,'m','linewidth',2);

legend('az [x_i f(x_i) alappontok', 'f(x)',
       'a legközelebbi értékkel (lépcsősfüggvénnyel) való közelítés', 
       'szakaszonként lineáris közelítés',
       'location','northwest');
refresh;
       
pause(ido);
plot(xx,yy3,'g','linewidth',2);

legend('az [x_i f(x_i) alappontok', 'f(x)',
       'a legközelebbi értékkel (lépcsősfüggvénnyel) való közelítés', 
       'szakaszonként lineáris közelítés',
       'spline közelítés',    
       'location','northwest');
refresh;

input('Befejezés ENTER-rel');
close       