Пример #1
0
        public static void TestWood()
        {
            problemIndex = 0;
            int m = 4; int n = 6;

            double[] p = new[] { -3.0, -1.0, -3.0, -1.0 };
            double[] x = new double[n];

            opts[0] = Levmar.LmInitMu; opts[1] = 1E-15; opts[2] = 1E-15; opts[3] = 1E-20; opts[4] = Levmar.LmDiffDelta;

            Levmar levmar = new Levmar();
            int    ret    = levmar.LevmarDif(wood, ref p, x, m, n, 1000, opts, ref info);

            PrintOutput(ret, m, p, info);
        }
Пример #2
0
        public static void TestOsborne()
        {
            problemIndex = 1;
            double[] x33 =
            {
                8.44E-1, 9.08E-1, 9.32E-1, 9.36E-1, 9.25E-1, 9.08E-1, 8.81E-1,
                8.5E-1,  8.18E-1, 7.84E-1, 7.51E-1, 7.18E-1, 6.85E-1, 6.58E-1,
                6.28E-1, 6.03E-1,  5.8E-1, 5.58E-1, 5.38E-1, 5.22E-1, 5.06E-1,
                4.9E-1,  4.78E-1, 4.67E-1, 4.57E-1, 4.48E-1, 4.38E-1, 4.31E-1,
                4.24E-1,  4.2E-1, 4.14E-1, 4.11E-1, 4.06E-1
            };

            int m = 5; int n = 33;

            double[] p = new[] { 0.5, 1.5, -1.0, 1.0E-2, 2.0E-2 };
            opts[0] = Levmar.LmInitMu; opts[1] = 1E-15; opts[2] = 1E-15; opts[3] = 1E-20; opts[4] = Levmar.LmDiffDelta;
            Levmar levmar = new Levmar();

            int ret = levmar.LevmarDer(osborne, jacosborne, ref p, x33, m, n, 1000, opts, ref info);           // with analytic Jacobian

            //ret=levmar.LevmarDif(osborne, p, x33, m, n, 1000, opts, info, IntPtr.Zero);  // no Jacobian
            PrintOutput(ret, m, p, info);
        }