Кубическая сплайн-функция MbCubicSplineFunction

Класс MbCubicSplineFunction объявлен в файле cur_cubic_spline_function.h.

Кубическая сплайн-функция 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 Value( double & t ) работает функция

\[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},\]

где

\[w = \frac{ t - \mathit{\text{tList}}[i] } { \mathit{\text{tList}}[i + 1] - \mathit{\text{tList}}[i] }\]

— локальный параметр рабочего участка tList[i] ≤ t ≤ tList[i + 1].

Кубическая сплайн-функция приведена на рис. 1:

../../../../_images/O.6.5.1.png

Рис. 1

Область определения параметра функции располагается в пределах tmin ≤ t ≤ tmax, где tmin = tList[0], tmax = tList[splinesCount]. Функция может быть периодической.

Форма функции зависит от расположения контрольных точек и от множества tList значений параметра в контрольных точках. При построении функции по контрольным точкам производные secondList[i] вычисляются из условия линейного изменения вторых производных между контрольными точками.