2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Кубический сплайн
Сообщение07.07.2017, 18:15 
Аватара пользователя
Нашёл в сети следующую формулу для вычисления коэффицинтов сплайна:
Код:
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]) при вставке с сообщение программного кода. Поправил.

 
 
 
 Re: Кубический сплайн
Сообщение09.07.2017, 20:48 
Аватара пользователя
Если кому интересно, оба варианта оказались примерно одинаково плохи.
Заменил на полуквадрат. То есть вектор смещения от дискрета только положительный.
Кроме того, расчёт коэффициеннтов сплайна по приведённой формуле действительно качественный и без разрывов производной.
Легко программируем, так как не требуется прогонка. А лишь четыре значения в окресностности интервала интерполяции.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group