function LagrangePlot(f,a,b,n)
  %{
    -- LagrangePlot(f,a,b,n)
    A megadott f(x) függvény Lagrange-polinomjának grafikus ábrázolása.
    Alappontok: linspace(a,b,n).
    
    Bemenő paraméterek
    f:    a közelítendő függvény (function handle)
    a:    az intervallum bal széle (bal szélső alappont)
    b:    az intervallum jobb széle (jobb szélső alappont)
    n:    az ekvidisztáns alappontok száma
  %}
% Ez lesz az n darab ekvidisztáns alappont:
x = linspace(a,b,n);
% A közelítendő függvény értéke az alappontokban:
y = f(x); 

% Először a megfelelő L_n Lagrange polinomot számítjuk ki:           
L_n = LagrangeInterpolacio(x,y);

% A szép sima ábrához felveszünk 500 mintapontot:
xx = linspace(a,b, 500); 
yy = f(xx);

% Az ábrázoláshoz kellenek az L_n helyettesítési értékei a mintapontokban:
yL = polyval(L_n,xx); 

% Ábra elkészítése:
hold on
plot(x, x-x, 'linewidth',2,'k-', 'HandleVisibility','off',  % X tengely
     x, x-x, 'MarkerSize', 24,'k.',  % az X tengelyen az x_i alappontok
     x,   y, 'MarkerSize', 24,'r.',  % az y_i függvényértékek
     xx, yy, 'linewidth',2,'r-',     % f(x) grafikonja
     xx, yL, 'linewidth',2,'b-');    % az L_n(x) Lagrange polinom grafikonja
vonalrajzolo(x, y, 'k')
title('Az f(x) közelítése Lagrange interpolációval, n darab ekvidisztáns alapponttal');
legend('alappontok','függvényértékek','f(x)','L_n(x)','location','northeast');

endfunction

function vonalrajzolo(x,y,color)
 n = length(x);
 for i = 1:n
   % 'HandleVisibility','off' : ne szerepeljen a jelmagyarázatban
   plot([x(i),x(i)],[0,y(i)],'color',color,'--','HandleVisibility','off');
 endfor
endfunction