Accord.Tests.Statistics.NonLinearLeastSquaresTest.gradient C# (CSharp) Method

gradient() private method

private gradient ( double parameters, double input, double result ) : void
parameters double
input double
result double
return void
        void gradient(double[] parameters, double[] input, double[] result)
        {
            double m = parameters[0];
            double s = parameters[1];
            double a = parameters[2];
            // double b = parameters[3]; // not needed
            double x = input[0];

            Func<double, double> exp = System.Math.Exp;
            Func<double, double, double> pow = System.Math.Pow;

            // diff a*exp(-0.5((m-x)/s)²) + b wrt m
            result[0] = -(a * (m - x) * exp(-(0.5 * pow(m - x, 2)) / (s * s))) / (s * s);

            //diff a*exp(-0.5((m-x)/s)²) + b wrt s
            result[1] = (a * pow(m - x, 2) * exp(-(0.5 * pow(m - x, 2)) / (s * s))) / (s * s * s);

            // diff a*exp(-0.5((m-x)/s)²) + b wrt a
            result[2] = exp(-(0.5 * pow(x - m, 2)) / (s * s));

            // diff a*exp(-0.5((m-x)/s)²) + b wrt b
            result[3] = 1;
        }