Нашёл в сети следующую формулу для вычисления коэффицинтов сплайна:
Код:
double b[4] = { f[1] * 2,
f[2] - f[0],
f[0] * 2 - f[1] * 5 + f[2] * 4 - f[3],
f[1] * 3 - f[0] - f[2] * 3 + f[3] };
return 0.5*(b[0] + b[1] * x + b[2] * x*x + b[3] * x*x*x);
Метод не предполагает прогонки, и на сколько я понял, просто сохраняет непрерывность первой и второй производных функции в точке x = 1 ( f[2]).
На первый взгляд работает нормально, особенно на больших массивах и с малым шагом интерполяции, но вопрос не в этом.
Мне надо найти локльный минимум в окрестности некоторой точки другой дискртной функции. Обычно это делают с помощью квадратного сплайна и двух соседних точек. Мне это не подходит, так как в силу особенности алгоритма центр неравномерно (и не совсем предсказуемо) смещён вправо от точки. То есть как раз случай кубического сплайна относительно нуля.
Вопрос, что лучше:
1. Вычислить коэффициенты сплайна по вышепрведённой формуле, или вычислить их по классической формуле, приравняв нулю кубический сплайн в четырёх точках?
! |
Toucan: |
MGM, замечание за неиспользование тега [cоde] (или [syntаx]) при вставке с сообщение программного кода. Поправил. |