public double FastCalculateSpline(double x) { double S = 0d; if (x < grid.Left || x > grid.Right) { return(0); //если не лежит в отрезке то 0 } int J = grid.Find(x); int p = degree - 1; int index = J - grid.BeginIndex; if (Math.Abs(x - grid.Left) < EPS) { return(C[0]); } if (Math.Abs(x - grid.Right) < EPS) { return(C.Last); } Vector b = DeBoorMethods.bsplv(x, grid, degree, J); for (int i = 0; i < degree && index + i < C.Length; i++) { S += C[index + i] * b[i]; } return(S); }