
function [x,it]=testsieczne(f,sol,x0,x1=x0*(1+1e-8),tol=1e-10)
#implementacja m siecznych dla f(x)=0 z testami rzedu
#zbieznosci
#input
#f - wskaznik do funkcji obliczajacej f(x)
#sol - rozwiazanie dokladne f(sol)=0 (tylko dla testow!)
#x0 - przyblizenie startowe
#x1 - 2gie przyblizenie startowe (opcja) domyslna wartosc x1=x0*(1+1e-8)
#tol - (opcja) tolerancja warunku stopu - domyslnie 10^(-10) 
# stop gdy |f(x)|<tol (lub ilosc iteracji >=od itmax=100)
#Output
#x - przyblizenie rozwiazania r. f(x)=0
#it - ilosc iteracji 
itmax=100; it=0;
xp=x0; yp=f(xp);
x=x1;y=f(x1);
e=x-sol;
while((abs(y)>tol)&&(it<itmax))
 z=(y-yp)/(x-xp);
 if(abs(z)>0)
  xp=x; 
  x=x-y/z;
 else 
   printf("(f(x_n)-f(x_(n-1))/(x_n-x(n-1)) zero tzn f[x_n,x_(n-1)](%g)=%g czyli zero\n",y,z)
 endif
 ep=e;e=x-sol;
 [ e, e/ep, e/(ep*ep),e/(ep*ep*ep)]
 it++;
 yp=y;y=f(x);
endwhile
endfunction
