program Test; Uses uGenFit, {uSqrXDef} uFuncDef, uDataPre, TestData; var pX,pY:tPtrData; DSize:word; pP:tPtrParameters; pFP:tPtrFuncParams; ND:tNormalizeParameters; ErrC:uGenFit.tErrorCode; REps, Eps, dF:Double; begin writeln; writeln('Тестирование обобщенного поиска минимума'); DSize:=SizeOf(TestData.X); If DSize<>SizeOf(TestData.Y) then RunError(201); AllocateD(pX, TestData.cSize); AllocateD(pY, TestData.cSize); Move(TestData.X, pX^.Data, DSize); Move(TestData.Y, pY^.Data, DSize); NormalizeData(ND, pX^, pY^); AllocateP(pP,cParSize); pFP:=tPtrFuncParams(pP); SelectInitials(pP^, pX^, pY^); Eps:=0.2e-5; GeneralFitX(F, GradF, pP^, pX^, pY^, Eps, REps, ErrC); writeln('Значения параметров:'); writeln(' A=' ,pFP^.A, '; B=' ,pFP^.B, '; x0=',pFP^.x0, '; H=' ,pFP^.H, '; S=' ,pFP^.s); writeln; writeln('Значение функции нормализованное: f(x0)=',F(pP^,pFP^.x0)); write('Денормализованные:'); write(' X0=' ,Round(uDataPre.GetUnnormalized(ND.X,pFP^.x0))); writeln(', F(X0)=' ,Round(uDataPre.GetUnnormalized(ND.Y,F(pP^,pFP^.x0)))); dF:=uGenFit.SumOfSqrDF(F, pP^,pX^, pY^); writeln; writeln(' сумма квадратов отклонений Ф=' ,dF); writeln(' средний квадрат отклонения Ф/Size=' ,dF/pX^.Size); writeln(' достигнутая относит. погрешность REps=' ,REps); if (ErrC=ecMaxIterationNumberExeeded) then writeln('!!! Лимит числа итераций превышен!'); if (ErrC=ecNotCovering) then writeln('!!! НЕ СХОДИТСЯ!'); END.