home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / SCIENCE / DELPX02.ZIP / NVSEARCH.INC < prev    next >
Text File  |  1991-05-16  |  2KB  |  71 lines

  1. function min_function(plot : Boolean; var point : TSearchArray) : mysingle;
  2.  
  3. var    F : mysingle;
  4.        data : integer;
  5.        A1,A2,A3,A4,A5,x1,x2,x3,x4,x5 : mysingle;
  6.        i : integer;
  7.        s2 : Myreal;
  8.        x,y : integer;
  9.        scale : Mysingle;
  10.        inc : mysingle;  { decay rate of weighting exponential }
  11.  
  12. {$I equ.inc}{function Fn(i)}
  13.  
  14. begin
  15.   A1 := point[1];
  16.   A2 := point[3];
  17.   A3 := point[5];
  18.   A4 := point[7];
  19.   A5 := point[9];
  20.   x1 := point[2];
  21.   x2 := point[4];
  22.   x3 := point[6];
  23.   x4 := point[8];
  24.   x5 := point[10];
  25.  
  26.   s2 := 0;
  27.   scale := 32768/(FullScale - ZeroScale);
  28.   inc := searchweight/(endFit1-startFit1);
  29.   IF CHECK THEN BEGIN
  30.     FOR I := 1 TO NUMVAR DO WRITE('PNT[',I,']:',POINT[I]:8,' ');
  31.   END
  32.   ELSE
  33.  
  34.   i := startFit1;
  35.  
  36.   if searchweight<>0 then begin
  37.     repeat
  38.       F := (Fn(i-StartFit1) - ZeroScale)*Yscale;
  39.       s2 := s2 + sqr(F-buffer1^[i])*exp((i-StartFit1)*inc);
  40.       i := i + round(SkipPoints*exp(-(i-StartFit1)*inc));
  41.     until i>EndFit1;
  42.   end;
  43.  
  44.   if searchweight=0  then begin
  45.     s2 := 0;
  46.     repeat
  47.       F := (Fn(i - StartFit1) - ZeroScale)*scale;
  48.       s2 := s2 + sqr(F-buffer1^[i]);
  49.       i := i + SkipPoints;
  50.     until i>EndFit1;
  51.   end;
  52.  
  53.   plot := false;
  54.   if (iter mod 11 = 0) then
  55.     if ((s2<=minstore) or plot) then begin
  56.       for i := StartFit1 to EndFit1 do begin
  57.         F := (Fn(i - StartFit1) - ZeroScale)*scale;
  58.         if F > 32767 then F := 32767;
  59.         if F < -32766 then F := -32766;
  60.         buffer2^[i] := round(F);
  61.       end;
  62.     IF NOT CHECK THEN
  63.        plotdata(buffer2,2);
  64.   end;
  65.   min_function := s2;
  66.   IF CHECK THEN WRITE('S2:',S2:6,#13,#10);
  67.  
  68. end;{ of function min_function----------------------------------------------}
  69. {---------------------------------------------------------------------------}
  70. {---------------------------------------------------------------------------}
  71.