
function [x,t]=exEuler(pw,x0,t0,h,n)
#otwarty Euler dla dx/dt=pw(x,t) x(t0)=x0 dla
#t(k+1)=t0+k*h k<n z t0+n*h=T
#x(k) przybliza rozwiazanie dla t(k) k<n
#input:
#pw - uchwyt do funkcji postaci function y=pw(x,t) zwracajacej 
#     dla x wektora pionowego wym m i skalara t - wektor wymiaru m
#x0 - wektor pionowy wymiaru m (warunek poczatkowy)
#t0 - czas poczatkowy
#h  - krok czasowy
#n -  ilosc obliczonych krokow
#Output:
#x - macierz m x n - w k-tym wierszu przyblizenie rozwiazania dla t(k)
#t- wektor dlugosci n - t(k)=t0+(k-1)h 
 m=length(x0); #wymiar w jakim jest rownanie
 t=zeros(n,1);
 x=zeros(n,m);
 x(1,:)=x0;
 t(1)=t0;
 for k=2:n,
  x(k,:)=x(k-1,:)+h*pw(x(k-1,:)',t(k-1))';
  t(k)=t(k-1)+h;
 endfor
endfunction
