reverse-shooting

Matlab scripts for reverse shooting
Log | Files | Refs | README

findinterval.m (743B)


      1 function [alo,ahi]=findinterval(fnname,alo,ahi);
      2 
      3 % function [alo ahi]=findinterval(fnname,alo,ahi);
      4 %
      5 % Returns an interval (alow,ahi) that contains a zero of the function fnname
      6 % Assumes a decreasing function.  If not, rewrite fnname to return negative.
      7 
      8 
      9 % First, a simple grid search
     10 stepsize=(ahi-alo)/100;
     11 atry=alo:stepsize:ahi;
     12 ytry=eval([fnname '(atry)']);
     13 indx=find(ytry<0);
     14 if isempty(indx) | indx(1)==1;
     15 %%   disp 'findinterval.m didnt work...Returning NaNs...';
     16    alo=NaN; ahi=NaN;
     17 else;
     18    alo=atry(indx(1)-1);
     19    ahi=atry(indx(1));
     20    ylo=eval([fnname '(alo)']);
     21    yhi=eval([fnname '(ahi)']);
     22 
     23    found=(ylo>0 & yhi<0) & isreal(ylo) & isreal(yhi);
     24    if ~found;
     25       [alo ahi]=findinterval(fnname,alo,ahi);
     26    end;
     27 end;
     28 
     29 
     30