function fenomen_runge(n)
%% Fenomen de Runge
%% En aquest script il·lustrem l'anomenat "fenomen de Runge", 
%% que eventualment apareix en fer interpolació polinomial
%% amb polinomis de grau elevat.
%%
%% Considerarem les funcions,
%% 
%%                     1                      1
%%          f(x) = --------   i   g(x) = -----------
%%                        2                       2
%%                   1 + x                1 + 30 x
%%
%% a l'interval [-1,1].
%%
%% Voldrem trobar el seus polinomis interpoladors, P i Q res-
%% pectivament, fent servir una  xarxa de n+1 punts, equies- 
%% paiats; i.e., x(k)=-1+k*h amb h=2/n, k=0,...,n.
%%

x=linspace(-1,1,n+1);
xx=-1:0.01:1;

% Càlcul del polinomi interpolador de f(x), P(x):
display('Càlcul del polinomi interpolador de f(x), P(x):')
f=inline('1./(1+x.^2)','x');
y=f(x);
P=polyfit(x,y,n);
yy=polyval(P,xx);

% Comparem el polinomi interpolador amb la funció
plot(x,y,'or',xx,f(xx),'-black',xx,yy,'-b')
hleg1=legend('Punts de la taula','\itf(x)','\itP(x)',...
             'Location','NorthEastOutside');
set(hleg1,'FontSize',12)
    
hold on
xlabel('\bf\itx','FontSize',14)
ylabel('\bf\ity','Fontsize',14)
title('\bfInterpolació de la funció \itf(x)=(1+x^2)^{-1}',...
      'Fontsize',14)
hold off
display('...Intro per continuar')
pause

% Càlcul del polinomi interpolador de f(x), P(x):
display('Càlcul del polinomi interpolador de g(x), Q(x):')
g=inline('1./(1+30*x.^2)','x');
y=g(x);
Q=polyfit(x,y,n);
yy=polyval(Q,xx);

%% Comparem el polinomi interpolador amb la funció
plot(x,y,'or',xx,g(xx),'-black', xx,yy,'-b')
hleg2=legend('Punts de la taula','\itg(x)','\itQ(x)',...
             'Location','NorthEastOutside');
set(hleg2,'FontSize',12);
hold on
xlabel('\bf\itx','FontSize',14)
ylabel('\bf\ity','Fontsize',14)
title('\bfInterpolació de la funció \itg(x)=(1+30 x^2)^{-1}',...
      'Fontsize',14)
hold off
display('...Intro per continuar')

return
end
