function [x]=RegulaFalsi(jmenof,a,b,nmax,epsx,epsf)
% Obecne reseni rovnice f(x)=0 metodou Regula Falsi
% [x]=RegulaFalsi(jmenof,a,b,nmax,epsx,epsf);
% x ... nalezene reseni rovnice
% jmenof ... nazev funkce f(x) jako retezec znaku
% a ... dolni mez definicniho oboru f(x)
% b ... horni mez definicniho oboru f(x)
% nmax ... maximalni pocet vycisleni funkce f(x)
% epsx ... postacujici sirka intervalu <a;b>
% epsy ... postacujici hodnota funkce f(x)
fa=feval(jmenof,a); 	% levy okraj
if abs(fa)<=epsf 	% proc se nezeptat?
   x=a; 	% hura!!!
   return;
end
fb=feval(jmenof,b); 	% pravy okraj
if abs(fb)<=epsf 	% proc se nezeptat?
   x=b; 	% hura!!!
   return;
end
if fa*fb>0
   x=inf; 	% chybny predpoklad
   return;
end
for k=3:nmax 	% bezpecny cykl
   x=(a*fb-b*fa)/(fb-fa); 	% kouzlo metody Regula Falsi
   f=feval(jmenof,x); 	% vycislit v novem bode
   if abs(f)<=epsf 	% proc se nezeptat?
      return;
   end
   if fa*f<=0 	% je neco v intervalu <a;x>?
      b=x; 	% zahozeni intervalu (x;b>
      fb=f; 	% aktualizace krajni hodnoty
   else
      a=x; 	% zahozeni intervalu >a;x)
      fa=f; 	% aktualizace krajni hodnoty
   end
if abs(b-a)<=epsx 	% uzky interval?
      x=(a+b)/2; 	% to nic nestoji
      return;
   end
end
x=(a+b)/2; 	% pro jistotu