.. role:: blue :class: blue Кубическая сплайн-функция MbCubicSplineFunction =============================================== .. _MbCubicSplineFunction_Cubic_Spline_Function: .. версия ядра: Класс :blue:`MbCubicSplineFunction` объявлен в файле *cur_cubic_spline_function.h*. Кубическая сплайн-функция :blue:`MbCubicSplineFunction` описывается множеством контрольных точек *valueList*, множеством вторых производных функции в контрольных точках *secondList*, множеством значений параметра функции в контрольных точках *tList* и признаком периодичности функции *closed*. У функции есть ещё некоторые данные, которые не обязательны и служат для ускорения работы методов функции. Кубическая сплайн-функция при значении параметра *tList*\[*i*\], *i* = 0, 1, ..., *splinesCount*, где *splinesCount* = *tList*.MaxIndex(), проходит через контрольную точку *valueList*\[*i*\] и имеет в ней вторую производную *secondList*\[*i*\]. При вычислении функции сначала по значению параметра *t* кривой определяется номер *i* рабочего участка из условия *tList*\[*i*\] ≤ *t* ≤ *tList*\[*i* + 1\]. Функция вычисляется для найденного рабочего участка по его локальному параметру *w*, который определяется по *tList*\[*i*\] и *tList*\[*i* + 1\]. В методе double :blue:`Value`\( double & *t* ) работает функция .. math:: r(t) = (1 - w) \, \mathit{\text{valueList}}[i] + w \, \mathit{\text{valueList}}[i + 1] + \left( (- 2 w + 3 w^{2} - w^{3}) \, \mathit{\text{valueList}}[i] + (- w + w^{3}) \, \mathit{\text{valueList}}[i + 1] \right) \frac{(\mathit{\text{tList}}[i + 1] - \mathit{\text{tList}}[i])^{2}}{6}, где .. math:: w = \frac{ t - \mathit{\text{tList}}[i] } { \mathit{\text{tList}}[i + 1] - \mathit{\text{tList}}[i] } — локальный параметр рабочего участка tList[i] ≤ t ≤ tList[i + 1]. Кубическая сплайн-функция приведена на рис. 1: .. figure:: /MODELER/SPECIAL_OBJECTS/pictures/O.6.5.1.png :width: 15cm :align: center Рис. 1 Область определения параметра функции располагается в пределах *tmin* ≤ *t* ≤ *tmax*, где *tmin* = *tList*\[0\], *tmax* = *tList*\[*splinesCount*\]. Функция может быть периодической. Форма функции зависит от расположения контрольных точек и от множества *tList* значений параметра в контрольных точках. При построении функции по контрольным точкам производные *secondList*\[*i*\] вычисляются из условия линейного изменения вторых производных между контрольными точками.