示例#1
0
        public void Minimize()
        {
            int n_p   = Coefficients.Length;
            int m_dat = n_p;

            // data and pameter arrays:

            double[] p = new double[Coefficients.Length];
            Coefficients.CopyTo(p, 0);

            // auxiliary settings:

            lmmin.lm_control_type control = new lmmin.lm_control_type();
            lmmin.lm_initialize_control(control);
            control.epsilon = 0.001;

            lm_data_type data = new lm_data_type();

            data.f = my_fit_function;

            // perform the fit:

            lmmin.lm_minimize(m_dat, n_p, p, lm_evaluate, lm_print,
                              data, control);

            // print results:

            Console.Write("status: {0} after {1} evaluations\n",
                          lmmin.lm_shortmsg[control.info], control.nfev);

            Console.Write("Coefficients = new double[] {");
            for (int i = 0; i < Coefficients.Length; i++)
            {
                if (i == 0 || i == 5)
                {
                    Console.WriteLine();
                    Console.Write("    /* {0} */", i);
                }
                Console.Write(" {0:G10},", Coefficients[i]);
            }
            Console.WriteLine();
            Console.WriteLine("};");
        }
示例#2
0
        public void Minimize()
        {
            int n_p = Coefficients.Length;
            int m_dat = n_p;

            // data and pameter arrays:

            double[] p = new double[Coefficients.Length];
            Coefficients.CopyTo(p, 0);

            // auxiliary settings:

            lmmin.lm_control_type control = new lmmin.lm_control_type();
            lmmin.lm_initialize_control(control);
            control.epsilon = 0.001;

            lm_data_type data = new lm_data_type();
            data.f = my_fit_function;

            // perform the fit:

            lmmin.lm_minimize(m_dat, n_p, p, lm_evaluate, lm_print,
                data, control);

            // print results:

            Console.Write("status: {0} after {1} evaluations\n",
                lmmin.lm_shortmsg[control.info], control.nfev);

            Console.Write("Coefficients = new double[] {");
            for (int i = 0; i < Coefficients.Length; i++)
            {
                if (i == 0 || i == 5)
                {
                    Console.WriteLine();
                    Console.Write("    /* {0} */", i);
                }
                Console.Write(" {0:G10},", Coefficients[i]);
            }
            Console.WriteLine();
            Console.WriteLine("};");
        }