Подгонка кусочковой «сломанной палки» модель с GSL

Я пытаюсь приспособить функцию к некоторым выборочным данным, которые у меня есть. Я понимаю и видел множество примеров линейной подгонки в GSL, однако функция, которая мне нужна, имеет вид

x_i = c_0 + c_1*t_i

для меня < какое-то произвольное число (T)

x_i = c_0 + c_1*t_i + c_2*(T-t_i)

для я> = T.

Чтобы визуализировать это, это строка (конечной длины) с разрывом в какой-то момент, продиктованный Т. Я пытался выяснить, как реализовать это в GSL, но не могу понять синтаксис подгонка к двум уравнениям и подгонка обоих уравнений к различным диапазонам значений. Моя математика не так сильна, как должно быть, а документация GSL немного плотная.

В качестве альтернативы, если GSL не может это сделать, существуют ли другие библиотеки C / C ++, способные на это?

редактирование: я думаю, что на самом деле это может быть эквивалентно подгонке первой половины сломанной палки обычным линейным способом, а затем подгонке второй половины (с известными c_0 и c_1 и подгонкой для c_2). Я до сих пор не знаю, как это сделать, но я думаю, что это может быть приемлемым для того, что я делаю, если это возможное решение. Тем не менее, я все еще хотел бы, чтобы какой-то метод определения наилучшей буквы T сломался, но это не является абсолютно необходимым.

0

Решение

Я решил это!

Оказывается, это так же просто, как создать сглаживающий b-сплайн с двумя измерениями (т. Е. 3 узла), что, как я полагаю, GSL все еще делает в течение линейного времени.

0

Другие решения

Других решений пока нет …