/// <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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }