home *** CD-ROM | disk | FTP | other *** search
- function [maximum,err]=cubic(pts,checkpt,location)
- %CUBIC Cubicly interpolates four points to find the maximum value.
- % The second argument is for estimation of the error in the
- % interpolated maximum.
- d=pts(1);
- abc=[0.5 -0.5 1/6 ; -2.5 2 -0.5; 3 -1.5 1/3]*[pts(2:4)-d*ones(3,1)];
- root=real(sqrt(4*(abc(2)^2)-12*abc(1)*abc(3)));
- x1=(-2*abc(2)+root)/(6*abc(1));
- if 6*abc(1)*x1+2*abc(2)<0
- stepmin=x1;
- else
- stepmin=(-2*abc(2)-root)/(6*abc(1));
- end
- maximum=abc(1)*stepmin^3+abc(2)*stepmin^2+abc(3)*stepmin+d;
- if nargin>1
- if location==0
- checkpt2=-abc(1)+abc(2)-abc(3)+d;
- else
- checkpt2=64*abc(1)+16*abc(2)+4*abc(3)+d;
- end
- err=abs(checkpt-checkpt2);
- end
-