

#interpolacja wielomianowa
N=6; #ilosc wezlow - 1
x=1:N;
y=zeros(size(x)); y(3)=1;
s=linspace(1,N);
l3=polyfit(x,y,N);
plot(s,polyval(l3,s),";wiel baz Lagr l3;",x,y,"+");pause(1);
norm(polyval(l3,s),'inf')#norma sporo ponad 2

#interpolcja splajnami (war brzegowe not-a-knot 
#te same wezly i warunki interpolacyjne
pp3=spline(x,y);
plot(s,ppval(pp3,s),";spline;",x,y,"+");pause(1);
norm(ppval(pp3,s),'inf')#norma ponizej 1

#spline o minimalnym nosniku
N=10;
x=linspace(0,5,N+1);
y=zeros(size(x)); y(6)=1;y(5)=y(7)=.25;
pp=spline(x,y);
plot(s,ppval(pp,s),x,y,"+");
#norm(ppval(pp,s),'inf')#norma ponizej 1

#oszacowanie bledu w rownooodlegle/Czebyszewa
function er=testintLwr(f=@(x) sin(x),a=0,b=5,N0=3,M=5,Czeb=0,TolDisp=1e-1)
s=linspace(a,b,10000);
fs=f(s);
N=N0;
er=zeros(M,2);
er(:,1)=(N0:N0+M-1)';
for k=1:M,
 if(Czeb==0)
  x=linspace(a,b,N+1); #wezly rownoodlgle
 else
  x=0.5*(a+b)-0.5*(b-a)*cos(pi*(0.5+(0:N))/(N+1));# czebyszewa
 end
 pr=polyfit(x,y=f(x),N);
 prs=polyval(pr,s);
 er(k,2)=norm(prs-fs,'inf');
 if(er(k,2)>TolDisp)
  disp("Rysujemy wykres");
  plot(s,fs,[";f,st=", num2str(N) ";"],s,prs,x,y,"+;wezly;");
  pause(1);
 endif
 N++;
endfor

endfunction


ersr=testintLwr(f=@(x) sin(x),0,5,3,30,Czeb=0,TolDisp=1e-3)
ers5r=testintLwr(f=@(x) sin(5*x),0,5,3,30,Czeb=0)

ersc=testintLwr(f=@(x) sin(x),0,5,3,30,Czeb=1,2);
ers5c=testintLwr(f=@(x) sin(5*x),0,5,3,35,Czeb=1)


#oszacowanie bledu splajnowej w rownooodlegle/Czebyszewa
function er=testintSp(f=@(x) sin(x),a=0,b=5,N0=3,M=5,Czeb=0,TolDisp=1e-1)
s=linspace(a,b,10000);
fs=f(s);
N=N0;
er=zeros(M,2);

for k=1:M,
 er(k,1)=N;
 if(Czeb==0)
  x=linspace(a,b,N+1); #wezly rownoodlgle
 else
  disp("Czeb");
  x=0.5*(a+b)-0.5*(b-a)*cos(pi*(0.5+(0:N))/(N+1));# czebyszewa
 end
 pr=spline(x,y=f(x));
 prs=ppval(pr,s);
 er(k,2)=norm(prs-fs,'inf');
 if(er(k,2)>TolDisp)
  disp("Rysujemy wykres");
  plot(s,fs,[";f,il wez =", num2str(N+1) ";"],s,prs,x,y,"+;wezly;");
  pause(1);
 endif
 N*=2;
endfor
endfunction



erss=testintSp(f=@(x) sin(x),0,5,3,7,Czeb=0,TolDisp=1e-3)
erss(1:6,2)./erss(2:7,2) #czy zbiega do 4,8 lub 16 (odp zbieznosc h^2,h^3,h^4
ers5s=testintSp(f=@(x) sin(5*x),0,5,3,7,Czeb=0)
ers5s(1:6,2)./ers5s(2:7,2) #czy zbiega do 4,8 lub 16 (odp zbieznosc h^2,h^3,h^4


erssc=testintSp(f=@(x) sin(x),0,5,4,7,Czeb=1,TolDisp=1e-3)
erss(1:6,2)./erss(2:7,2) #czy zbiega do 4,8 lub 16 (odp zbieznosc h^2,h^3,h^4
ers5sc=testintSp(f=@(x) sin(5*x),0,5,3,7,Czeb=1)
ers5sc(1:6,2)./ers5sc(2:7,2) #czy zbiega do 4,8 lub 16 (odp zbieznosc h^2,h^3,h^4

