function [x, iter] = newton( f_name, df_name, x0, maxit, eps)

# FUNKCJA: [x, iter] = newton( f, df, x0, maxit, eps )
#
# OPIS:    Rozwiazuje f(x) = 0 metoda Newtona
#
# WEJSCIE: x0 - przybl poczatk; maxit - max liczba iter; eps - tolerancja.
#          Wymaga zdefiniowanych M-funkcji f(x) oraz df(x). 
# WYJSCIE: x - rozwiazanie; iter - liczba wykonanych iteracji

# pierwszy blok komentarzy sluzy jako opis definiowanej funkcji.
# piszac w Octave:
#			help newton
# wyswietle w/w opis!

# przyblizenie poczatkowe
x = x0;

# iter = licznik iteracji
iter = 0;

# zwrocmy uwage, w jaki sposob wywolujemy funkcje o danej nazwie
# zakladamy, ze wartosci f(x) obliczane sa funkcja o nazwie f_name, zdefiniowana 
# przez uzytkownika w pliku o nazwie f_name.m (podobnie f'(x) oblicza funkcja df_name)
fx = feval(f_name,x); 
dfx = feval(df_name,x);

# petla Newtona: iterujemy dopoki residuum nie spadnie ponizej tolerancji "eps", badz 
# 		 poki nie przekroczymy limitu iteracji "maxit"
while ((abs(fx) > eps) & (iter < maxit))
  x = x - fx/dfx;
  fx = feval(f_name,x); 
  dfx = feval(df_name,x);
  iter = iter + 1;
endwhile
endfunction

