用矩形拟合曲线

计算科学 优化 插值 曲线拟合
2021-12-08 10:50:36

我有一组一维的点,即(n,yn),1nN. 我想用线性组合来拟合它们k 最小二乘误差意义上的矩形函数。每个矩形由左边缘、右边缘和高度参数化。它类似于Lebesgue 和,但我正在查看具有灵活宽度和高度的水平条以实现最小误差。

这似乎是一个非常简单且非常线性的问题,但我在 MATLAB 曲线拟合工具箱中没有看到这个工具,而且互联网根本没有帮助。

我确信(我认为)我可以制定方程式并编写代码,这可能需要我几个小时。但我应该这样做吗?它没有被广泛使用有什么原因吗?它实际上是否定义不明确(在某种意义上没有最佳值)?

1个回答

假如说

  • 矩形在x轴,那
  • 矩形的总和在任何时候都不应超过原始函数的值,

以下简单的动态规划算法将计算最多的最优集k矩形 wrt 最小二乘误差O(n2k)时间和O(nk)最坏情况下的空间。尽管这对于大型企业来说似乎是令人望而却步的n,有一些改进意味着许多输入将花费更少的时间——如果有必要,一些捷径会以牺牲最优性为代价来改善运行时间。

定义f(i,j)是可以在子序列上实现的最小错误1,,i(in) 最多使用jk矩形。为避免混淆哪些数据点由哪些矩形支持,假设所有矩形都在小数部分为 0.5 的位置开始和结束。还定义g(i,j)成为子序列可以实现的最小错误i,...,j使用一个结束于的矩形x坐标j+0.5并从任何位置开始i+0.5j0.5并具有小数部分 0.5。最后,让adjErr(i,j,h)是范围内的残差平方和i,...,j假设一个高度的矩形h跨越这个区域。然后:

f(i,j)=min0m<j(f(m,j1)+g(m+1,i))

g(i,j)=minim<j(adjErr(i,m,0)+adjErr(m+1,j,minm<rjxr))

adjErr(i,j,h)=m=ij(xmh)2

总体最低可能误差由给出。通过追溯 DP 矩阵,寻找允许取其最小值f(n,k)mf(i,j)

如果这有用,请发表评论,我会回来充实细节。