2013-07-10 69 views
2

我想用gnuplot來擬合具有數據集的函數。Gnuplot擬合誤差:Givens中的奇異矩陣()

我使用的數據集例如,在文件中的「數據」:

1 2 
5 4 
6 5 
7 8 

如果我的gnuplot做

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

它工作得很好,(以及與此示例中,我得到一個≃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 

Google上搜尋它並不能幫助我,我也試圖找是否有使用配合地板,但又有些禁忌我沒有找到任何東西。

有人想法嗎?

注:我使用的Gnuplot 4.6 PATCHLEVEL 0,內置的Windows 32位

回答

4

有一個根本性的問題的地板裝修,這是你的最小二乘誤差函數是分段恆定的,所以當你找的梯度相對於您的適合參數的錯誤您總是得到零。

在這個例子中平方誤差的總和最小正是3爲一系列的a,b在.85,1.5

Mathermatica的附近,(這是更爲飛機的強大動力),給出的結果1, 1以及由於零梯度的警告,不能確定這是否真的是最小值。