我正在尝试将函数拟合到我拥有的一些采样数据中。我了解并见过 GSL 中线性拟合的许多示例,但是我需要拟合的函数具有以下形式
x_i = c_0 + c_1*t_i
对于 i < 某个任意数字 (T)
x_i = c_0 + c_1*t_i + c_2*(T-t_i)
对于 i >= T。
为了形象化这一点,它是一条线(长度有限),在 T 指示的某个点上有一个中断。我一直在试图弄清楚如何在 GSL 中实现它,但我不知道拟合两个方程以及在不同的值范围内拟合两个方程的语法。我的数学能力不够强,而且 GSL 文档有点密集。
或者,如果 GSL 无法做到这一点,是否还有其他 C/C++ 库能够做到这一点?
编辑:我认为这实际上可能相当于以正常线性方式拟合断棍的前半部分,然后拟合后半部分(已知 c_0 和 c_1,并拟合 c_2)。我仍然不知道该怎么做,但我认为如果这是一个可能的解决方案,我正在做的事情可能是可以接受的。然而,我仍然想要一些方法来找到最好的T来打破棍子,但这并不是绝对必要的。
最佳答案
我解决了!
结果就像创建一个二维(即 3 节)的平滑 B 样条一样简单,我相信 GSL 仍然可以在线性时间内做到这一点。
关于c++ - 使用 GSL 拟合分段 "broken stick"模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169978/