%% Negyedik gyakorlat: Interpoláció II.
%
%% 1. Hermite-Fejér interpoláció
% Cél: egy f: \mathbb{R} \rightarrow \mathbb{R} függvény n+1darab pontban (ún. alappontban) ismert (x_i, f_i) vagy (x_i, f'(x_i)) értékeiből állítsunk elő egy olyan (megadott tulajdonságokkal rendelkező) g görbét, amire teljesül, hogy g(x_i) = f_i és g'(x_i) = f'(x_i).
% Határozzuk meg az Hermite--féle interpolációs polinomot, ha
% f(1)=0, \; f(2)=1, \; f'(2)=3, \; f''(2)=-2, \; f(3)=1.
%
%% 2. Spline interpoláció
% A cél, hogy olyan, szakaszonként polinomokkal interpoláljuk a függvényértékeket, ahol a csatlakozási pontokban nem csak folytonos az interpoláció, hanem n
% -edfokú spline esetén n-1-szer deriválható is.
%             2. Írjuk fel azt az S_2(x) másodfokú splinet, amely illeszkedik a (-1,2), \; (0,1), \; (2,-1) pontokra és S'(2)=-2.
%
%             3. Tekintsük az f(x) = \sin\left(\frac{\pi}{2}x \right) függvényt és a {-1, 0, 1}alappontrendszert! Határozzuk meg az f-et interpoláló köbös splinet Hermite--féle peremfeltétellel, azaz f'(-1) = f'(1) = 0.

...
    

%
%             4. Tekintsük az x = -2:0.5:2 pontokban az y = -\frac{1}{4}x^4 + \frac{1}{2}x^2 függvényt. Használjuk az interpl függvényt és rajzoltassuk ki a kapott közelítő megoldásokat.

x = ... 
y = ...
xi = linspace(-2, 2); 
ynear = interp1(x, y, xi, 'nearest'); 
ylin = interp1(x, y, xi, 'linear'); 
ypc = interp1(x, y, xi, 'pchip'); 
yspl = interp1(x, y, xi, 'spline'); 
subplot(2,2,1), plot(xi,ynear,x,y,'o'), title('Nearest neighbor interpolation') 
%hold on 
subplot(2,2,2), plot(xi,ylin,x,y,'o'), title('Linear interpolation') 
subplot(2,2,3), plot(xi,ypc,x,y,'o'), title('Piecewise cubic Hermite interpolation')
subplot(2,2,4), plot(xi,yspl,x,y,'o'), title('Cubic spline interpolation')