【问题标题】:Gnuplot fit error : Singular matrix in Givens()Gnuplot 拟合错误:Givens() 中的奇异矩阵
【发布时间】:2013-07-08 11:12:55
【问题描述】:

我想使用 gnuplot 将函数与数据集拟合。

我使用了一个数据集示例,在文件“data”中:

1 2
5 4
6 5
7 8

如果我在 gnuplot 中这样做

>f(x) = a*x+b
>fit f(x) "data" via a,b

效果很好,(在这个例子中,我得到 a≃0.855 和 b≃0.687)

现在我真正想做的是拟合函数floor(a*x+b)。所以我尝试了完全相同的方式

>f(x) = floor(a*x+b)
>fit f(x) "data" via a,b

我得到了输出

 Iteration 0
 WSSR        : 8                 delta(WSSR)/WSSR   : 0
 delta(WSSR) : 0                 limit for stopping : 1e-005
 lambda   : 0

initial set of free parameter values

a               = 1
b               = 1
         Singular matrix in Givens()
         error during fit

谷歌搜索对我没有帮助,我还试图找出使用 fit with floor 是否有一些禁忌症,但我还是没有找到任何东西。

有人有想法吗?

注意:我使用 Gnuplot 4.6 补丁级别 0,为 Windows 32 位构建

【问题讨论】:

    标签: gnuplot curve-fitting


    【解决方案1】:

    有一个与 floor 拟合的基本问题,即您的最小二乘误差函数是分段常数,因此当您根据拟合参数寻找误差的梯度时,您总是会得到零。

    在此示例中,对于 0.85,1.5 附近的 a,b 范围,最小平方和误差恰好为 3

    Mathermatica(功能更强大)给出结果 1,1 以及警告,由于梯度为零,因此无法确定这是否真的是最小值。

    【讨论】:

      猜你喜欢
      • 2021-07-10
      • 2017-07-19
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多