/// <summary> /// Solve using a user supplied NonLinearParameterTransforms. /// <para> /// This returns <seealso cref="LeastSquareResults"/>. /// /// </para> /// </summary> /// <param name="start"> the first guess at the parameter values </param> /// <param name="transform"> transform from model parameters to fitting parameters, and vice versa </param> /// <returns> the calibration results </returns> public virtual LeastSquareResultsWithTransform solve(DoubleArray start, NonLinearParameterTransforms transform) { NonLinearTransformFunction transFunc = new NonLinearTransformFunction(volFunc, volAdjointFunc, transform); LeastSquareResults solRes = SOLVER.solve(marketValues, errors, transFunc.FittingFunction, transFunc.FittingJacobian, transform.transform(start), getConstraintFunction(transform), MaximumStep); return(new LeastSquareResultsWithTransform(solRes, transform)); }
public NonLinearTransformFunction(System.Func <DoubleArray, DoubleArray> func, System.Func <DoubleArray, DoubleMatrix> jac, NonLinearParameterTransforms transform) { _transform = transform; _func = new FuncAnonymousInnerClass(this, func); _jac = new FuncAnonymousInnerClass2(this, jac); }
public virtual void testExactFitWithTransform() { double[] start = new double[] { 0.01, 0.99, 0.9, 0.4 }; NonLinearParameterTransforms transf = _fitter.getTransform(DoubleArray.copyOf(start)); LeastSquareResultsWithTransform results = _fitter.solve(DoubleArray.copyOf(start), transf); double[] res = results.ModelParameters.toArray(); double eps = 1e-6; assertEquals(ALPHA, res[0], eps); assertEquals(BETA, res[1], eps); assertEquals(RHO, res[2], eps); assertEquals(NU, res[3], eps); assertEquals(0.0, results.ChiSq, eps); }
/// <summary> /// Obtains the constraint function. /// <para> /// This is defaulted to be "unconstrained". /// /// </para> /// </summary> /// <param name="t"> the nonlinear transformation </param> /// <returns> the constraint function </returns> //JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: protected java.util.function.Function<com.opengamma.strata.collect.array.DoubleArray, bool> getConstraintFunction(@SuppressWarnings("unused") final com.opengamma.strata.math.impl.minimization.NonLinearParameterTransforms t) //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: protected internal virtual System.Func <DoubleArray, bool> getConstraintFunction(NonLinearParameterTransforms t) { return(UNCONSTRAINED); }
/// <summary> /// Solve using the default NonLinearParameterTransforms for the concrete implementation with some parameters fixed /// to their initial values (indicated by fixed). /// <para> /// This returns <seealso cref="LeastSquareResults"/>. /// /// </para> /// </summary> /// <param name="start"> the first guess at the parameter values </param> /// <param name="fixed"> the parameters are fixed </param> /// <returns> the calibration results </returns> public virtual LeastSquareResultsWithTransform solve(DoubleArray start, BitArray @fixed) { NonLinearParameterTransforms transform = getTransform(start, @fixed); return(solve(start, transform)); }