/// <summary>非線形最小二乗法テスト</summary>
        public void Test()
        {
            Multifit mFit = new Multifit(Multifit.SolverType.LevenbergMarquardtWithScaling, 40, 3);

            //学習データ作成
            double[] ops = new double[40];
            Random rnd = new Random();

            //出力式
            GSLFunctions.DArrayToDArray fnc = delegate(double[] inputs, ref double[] outputs)
            {
                double a = inputs[0];
                double lambda = inputs[1];
                double b = inputs[2];
                for (int i = 0; i < outputs.Length; i++)
                {
                    double t = i;
                    double yi = a * Math.Exp(-lambda * t) + b;
                    outputs[i] = yi - (1.0 + 5 * Math.Exp(-0.1 * t));
                }
                return GSLNET.ErrorNumber.GSL_SUCCESS;

            };

            int iterNum;
            double[] param = new double[] { 1, 0, 0 };
            GSLNET.ErrorNumber eNum = mFit.Solve(fnc, ref param, 1e-5, 500, out iterNum);
            //メモリ解放
            mFit.Dispose();

            Console.WriteLine("終了");
            Console.Read();
        }
        /// <summary>非線形最小二乗法テスト</summary>
        public void Test()
        {
            Multifit mFit = new Multifit(Multifit.SolverType.LevenbergMarquardtWithScaling, 40, 3);

            //学習データ作成
            double[] ops = new double[40];
            Random   rnd = new Random();

            //出力式
            GSLFunctions.DArrayToDArray fnc = delegate(double[] inputs, ref double[] outputs)
            {
                double a      = inputs[0];
                double lambda = inputs[1];
                double b      = inputs[2];
                for (int i = 0; i < outputs.Length; i++)
                {
                    double t  = i;
                    double yi = a * Math.Exp(-lambda * t) + b;
                    outputs[i] = yi - (1.0 + 5 * Math.Exp(-0.1 * t));
                }
                return(GSLNET.ErrorNumber.GSL_SUCCESS);
            };

            int iterNum;

            double[]           param = new double[] { 1, 0, 0 };
            GSLNET.ErrorNumber eNum  = mFit.Solve(fnc, ref param, 1e-5, 500, out iterNum);
            //メモリ解放
            mFit.Dispose();

            Console.WriteLine("終了");
            Console.Read();
        }