/************************************************************************* NLEQ solver results INPUT PARAMETERS: State - algorithm state. OUTPUT PARAMETERS: X - array[0..N-1], solution Rep - optimization report: * Rep.TerminationType completetion code: * -4 ERROR: algorithm has converged to the stationary point Xf which is local minimum of f=F[0]^2+...+F[m-1]^2, but is not solution of nonlinear system. * 1 sqrt(f)<=EpsF. * 5 MaxIts steps was taken * 7 stopping conditions are too stringent, further improvement is impossible * Rep.IterationsCount contains iterations count * NFEV countains number of function calculations * ActiveConstraints contains number of active constraints -- ALGLIB -- Copyright 20.08.2009 by Bochkanov Sergey *************************************************************************/ public static void nleqresults(nleqstate state, ref double[] x, nleqreport rep) { x = new double[0]; nleqresultsbuf(state, ref x, rep); }
/************************************************************************* NLEQ solver results Buffered implementation of NLEQResults(), which uses pre-allocated buffer to store X[]. If buffer size is too small, it resizes buffer. It is intended to be used in the inner cycles of performance critical algorithms where array reallocation penalty is too large to be ignored. -- ALGLIB -- Copyright 20.08.2009 by Bochkanov Sergey *************************************************************************/ public static void nleqresultsbuf(nleqstate state, ref double[] x, nleqreport rep) { int i_ = 0; if( alglib.ap.len(x)<state.n ) { x = new double[state.n]; } for(i_=0; i_<=state.n-1;i_++) { x[i_] = state.xbase[i_]; } rep.iterationscount = state.repiterationscount; rep.nfunc = state.repnfunc; rep.njac = state.repnjac; rep.terminationtype = state.repterminationtype; }
public override alglib.apobject make_copy() { nleqreport _result = new nleqreport(); _result.iterationscount = iterationscount; _result.nfunc = nfunc; _result.njac = njac; _result.terminationtype = terminationtype; return _result; }