You are here: Symbol Reference > MtxVecTools Namespace > Classes > TMtxOptimization Class > published > TMtxOptimization.VariableParameters Property
MtxVec VCL
ContentsIndex
Example
Uses Math387, MtxVecTools, Optimization, MtxVecEdit; 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 TForm1.FormCreate(Sender: TObject); begin // function with two variables // initial values for variables => Pars[0] := 2, Pars[1] := -1; MtxOptim.VariableParameters.SetIt(false,[2,-1]); MtxOptim.RealFunction := Banana; MtxOptim.OptimizationMethod := optMarquardt; // numeric approximation MtxOptim.GradProcedure := nil; MtxOptim.GradHessProcedure := nil; MtxOptim.Recalculate; // now VariableParameters holds minimum position ViewValues(MtxOptim.VariableParameters,'Minimum position'); end;
#include "MtxExpr.hpp" #include "Math387.hpp" #include "Optimization.hpp" #include "MtxIntDiff.hpp" #include "MtxVecTools.hpp" // Objective function double __fastcall Banana(TVec* const Parameters, TVec* const Constants, System::TObject* const * ObjConst, const int ObjConst_Size) { double* Pars = Parameters->PValues1D(0); return 100.0*IntPower(Pars[1]-IntPower(Pars[0],2),2)+IntPower(1.0-Pars[0],2); } void __fastcall TForm1::FormCreate(TObject *Sender) { MtxOptim->VariableParameters->SetIt(false,OPENARRAY(double,(2,-1))); MtxOptim->RealFunction = Banana; MtxOptim->OptimizationMethod = optMarquardt; // numeric approximation MtxOptim->GradProcedure = NULL; MtxOptim->GradHessProcedure = NULL; MtxOptim->Recalculate(); }
Copyright (c) 1999-2025 by Dew Research. All rights reserved.