Esempio n. 1
0
        public void ClassicBasis_jmin1_exeption()
        {
            //setup
            int deg = 2; //квадратичный сплайн

            MyMathLib.Grid tau = new MyMathLib.Grid(2, 4, 0, 3);


            //run
            MyMathLib.BasisSpline.DeBoorMethods.ClassicBasisSpline(0.5d, tau, deg, -1);

            //compare
        }
Esempio n. 2
0
        public void ClassicBasis_x_outof_suppBj_return0()
        {
            //setup
            int deg = 2;  //квадратичный сплайн

            MyMathLib.Grid tau = new MyMathLib.Grid(2, 4, 0, 3);

            double expect = 0d;
            //run
            double actual = MyMathLib.BasisSpline.DeBoorMethods.ClassicBasisSpline(-0.5d, tau, deg, 0);

            //compare
            Assert.AreEqual(expect, actual, 0.00000001d, "Должно быть нулем вне носителя");
        }
Esempio n. 3
0
        public void ClassicBasis_1234grid_return_pol1()
        {
            //setup
            int deg = 2; //квадратичный сплайн

            MyMathLib.Grid tau    = new MyMathLib.Grid(4, 0, 3);
            double         x      = 0.55d;
            double         expect = x * x / 2d;
            double         EPS    = 0.00000001d;
            //run
            double actual = MyMathLib.BasisSpline.DeBoorMethods.ClassicBasisSpline(x, tau, deg, 0);

            //compare
            Assert.AreEqual(expect, actual, EPS, "ERROR! Не считает классический сплайн как надо");
        }
Esempio n. 4
0
        public void BeginEndIndex3_2()
        {
            //setup
            int deg = 4;

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, 10, 0, 1);



            //run
            double right  = grid[grid.EndIndex];
            double lright = grid[grid.EndIndex - 1];
            bool   flag   = right - lright > 0;

            //cc
            Assert.AreEqual(true, flag, "NE TRUE");
        }
Esempio n. 5
0
        public void BeginEndIndex2_2()
        {
            //setup
            int deg = 4;

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, 10, 0, 1);



            //run
            double left  = grid[grid.BeginIndex];
            double rleft = grid[grid.BeginIndex + 1];
            bool   flag  = rleft - left > 0;

            //cc
            Assert.AreEqual(true, flag, "NE TRUE");
        }
Esempio n. 6
0
        public void DeBoorB_behavior()
        {
            //setup
            double x = 0.1d;

            MyMathLib.Grid tau   = new MyMathLib.Grid(4, 6, 0, 5);
            int            index = 0;
            int            deg   = 4;

            Console.WriteLine("сетка = " + tau.ToString());

            //run
            double B      = MyMathLib.BasisSpline.DeBoorMethods.DeBoorB(x, tau, deg, index);
            bool   expect = B > 0;

            //compare
            Assert.AreEqual(expect, true);
        }
Esempio n. 7
0
        public void BeginEndIndex1()
        {
            //setup
            int deg = 4;

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, 10, 0, 1);

            double left_exp  = 0;
            double right_exp = 1d;

            //run
            double left_act  = grid[grid.BeginIndex];
            double right_act = grid[grid.EndIndex];

            //cc
            Assert.AreEqual(left_exp, left_act, 0.00000000001d, "left non nono non");

            Assert.AreEqual(right_exp, right_act, 0.00000000001d, "left non nono non");
        }
Esempio n. 8
0
        public void CreateNewBasisSplineGrid_CountMustbe11()
        {
            //enter data
            int    deg      = 4;
            int    GridSize = 7;
            double a        = 0;
            double b        = 1;

            MyMathLib.Vector knots = MyMathLib.Vector.CreateUniformGrid(GridSize, a, b);


            int expect = 11;

            //code
            MyMathLib.Grid tau    = new MyMathLib.Grid(deg, knots, a, b);
            int            actual = tau.Count;

            Console.WriteLine(tau.ToString());
            Console.WriteLine(tau.ToStringOrigin());
            //compare
            Assert.AreEqual(expect, actual, "Неверный расчет сетки для базисного сплайна");
        }
Esempio n. 9
0
        public void AbsolutUniformGridInterpolationMatrixExperimentTest()
        {
            //подготовка входных данных
            int    GridSize = 11;
            double a        = 0d;
            double b        = 1d;
            int    deg      = 4;

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, GridSize, a, b);
            grid.ToMiddleUniformSplineGrid();
            double expect = 0.167d;
            //выполнение кода
            Matrix A = BasisSpline.DeBoorMethods.SlowCreateInterpolationMatrix(grid, deg);

            Console.WriteLine("beginIndex = " + grid.BeginIndex);
            Console.WriteLine("endIndex = " + grid.EndIndex);
            Console.WriteLine(grid);
            Console.WriteLine(A);
            double actual = A[0, 0];

            //compare
            Assert.AreEqual(expect, actual, 0.01d);
        }
Esempio n. 10
0
        public void CreateAbsolutUniformGrid_4_11_0_1()
        {
            //подготовка входных данных
            int    GridSize = 11;
            double a        = 0d;
            double b        = 1d;
            double expect1  = -0.2d;
            double expect2  = 1.2d;
            double EPS      = 0.000000001d;
            int    deg      = 4;

            //выполнение кода

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, GridSize, a, b);
            grid.ToMiddleUniformSplineGrid();
            Console.WriteLine("new grid" + grid);
            double actual2 = grid.Last;
            double actual1 = grid.First;

            //проверка
            Assert.AreEqual(expect1, actual1, EPS, "Неправильное расширение отрезка");
            Assert.AreEqual(expect2, actual2, EPS, "Неправильное расширение отрезка");
        }
Esempio n. 11
0
        public void PeriodicInterpolationMatrixExperimentTest()
        {
            //подготовка входных данных
            int    GridSize = 15;
            double a        = 0d;
            double b        = 1d;
            int    deg      = 6;

            MyMathLib.Grid grid = new MyMathLib.Grid(deg, GridSize, a, b);
            grid.ToPeriodiclineGrid();

            //выполнение кода
            Matrix A      = BasisSpline.DeBoorMethods.SlowCreateInterpolationPeriodicMatrix(grid, deg);
            int    size   = deg - 1;
            Vector spline = new Vector(size);

            for (int i = 0; i < size; i++)
            {
                spline[i] = A[2, i];
            }
            Console.WriteLine(spline);
            Console.WriteLine(grid);

            A[0, GridSize - 2] = spline[0];
            A[0, GridSize - 1] = spline[1];

            A[1, GridSize - 1] = spline[0];

            A[GridSize - 2, 0] = spline[0];
            A[GridSize - 1, 0] = spline[1];

            A[GridSize - 1, 1] = spline[0];


            Console.WriteLine(A);
            double actual = A[0, 0];
        }