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 }
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, "Должно быть нулем вне носителя"); }
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! Не считает классический сплайн как надо"); }
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"); }
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"); }
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); }
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"); }
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, "Неверный расчет сетки для базисного сплайна"); }
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); }
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, "Неправильное расширение отрезка"); }
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]; }