Exemple #1
0
        /// <summary>
        /// Objective model with a user supplied jacobian for non-linear least squares regression.
        /// </summary>
        public static IObjectiveModel NonlinearModel(Func <Vector <double>, double, double> function,
                                                     Func <Vector <double>, double, Vector <double> > derivatives,
                                                     Vector <double> observedX, Vector <double> observedY, Vector <double> weight = null)
        {
            Vector <double> func(Vector <double> point, Vector <double> x)
            {
                var functionValues = CreateVector.Dense <double>(x.Count);

                for (int i = 0; i < x.Count; i++)
                {
                    functionValues[i] = function(point, x[i]);
                }

                return(functionValues);
            }

            Matrix <double> prime(Vector <double> point, Vector <double> x)
            {
                var derivativeValues = CreateMatrix.Dense <double>(x.Count, point.Count);

                for (int i = 0; i < x.Count; i++)
                {
                    derivativeValues.SetRow(i, derivatives(point, x[i]));
                }

                return(derivativeValues);
            }

            var objective = new NonlinearObjectiveFunction(func, prime);

            objective.SetObserved(observedX, observedY, weight);
            return(objective);
        }
Exemple #2
0
        /// <summary>
        /// Objective function for nonlinear least squares regression.
        /// The numerical jacobian with accuracy order is used.
        /// </summary>
        public static IObjectiveFunction NonlinearFunction(Func <Vector <double>, Vector <double>, Vector <double> > function,
                                                           Vector <double> observedX, Vector <double> observedY, Vector <double> weight = null,
                                                           int accuracyOrder = 2)
        {
            var objective = new NonlinearObjectiveFunction(function, null, accuracyOrder: accuracyOrder);

            objective.SetObserved(observedX, observedY, weight);
            return(objective.ToObjectiveFunction());
        }
Exemple #3
0
        /// <summary>
        /// Objective function with a user supplied jacobian for nonlinear least squares regression.
        /// </summary>
        public static IObjectiveFunction NonlinearFunction(Func <Vector <double>, Vector <double>, Vector <double> > function,
                                                           Func <Vector <double>, Vector <double>, Matrix <double> > derivatives,
                                                           Vector <double> observedX, Vector <double> observedY, Vector <double> weight = null)
        {
            var objective = new NonlinearObjectiveFunction(function, derivatives);

            objective.SetObserved(observedX, observedY, weight);
            return(objective.ToObjectiveFunction());
        }
Exemple #4
0
        /// <summary>
        /// Objective model for non-linear least squares regression.
        /// </summary>
        public static IObjectiveModel NonlinearModel(Func <Vector <double>, double, double> function,
                                                     Vector <double> observedX, Vector <double> observedY, Vector <double> weight = null,
                                                     int accuracyOrder = 2)
        {
            Func <Vector <double>, Vector <double>, Vector <double> > func = (point, x) =>
            {
                var functionValues = CreateVector.Dense <double>(x.Count);
                for (int i = 0; i < x.Count; i++)
                {
                    functionValues[i] = function(point, x[i]);
                }

                return(functionValues);
            };

            var objective = new NonlinearObjectiveFunction(func, accuracyOrder: accuracyOrder);

            objective.SetObserved(observedX, observedY, weight);
            return(objective);
        }