TMtxOptimization.GradProcedure Property

property GradProcedure: TGrad;

Defines the gradient vector calculation routine.

Returns: TGrad

Remarks:

Defines the gradient vector calculation routine. Set TMtxOptimization.GradProcedure to nil if you want to use internal numeric gradient vector calculation.

Examples
function Banana(const Pars: TVec; const Consts: TVec; const PConsts: Array of TObject): double;
begin
    Banana := 100*Sqr(Pars[1] - Sqr(Pars[0])) + Sqr(1 - Pars[0]);
end;

procedure GradBanana(Fun: TRealFunction; const Pars: TVec; const Consts: TVec; const ObjConsts: Array of TObject; const Grad: TVec);
begin
    Grad[0] := -400*(Pars[1] - Sqr(Pars[0]))*Pars[0] - 2*(1 - Pars[0]);
    Grad[1] :=  200*(Pars[1] - Sqr(Pars[0]));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    MtxOptim.VariableParameters.SetIt(false,[2,-1]);
    MtxOptim.RealFunction := Banana;
    MtxOptim.OptimizationMethod := optBFGS;
    // use exact gradient vector calculation
    // NOTE : set MtxOptim.GradProcedure to nil if yo
    //        want to use internal numeric gradient calculation
    MtxOptim.GradProcedure := GradBanana;
    MtxOptim.Recalculate;
end;
See Also: TMtxOptimization.GradHessProcedure, TMtxOptimization.GradTolerance