你的功能
Y = A(0.01 - B * N -cx)
與4個未知數相當的具體形式。爲了估計從您的觀察名單您的參數,我建議你把它簡化
Y =β +β β X
這成爲我們的目標函數,我們可以使用普通最小二乘法來求解一組好的beta。
在默認Matlab的,你可以使用fminsearch
找到這些β參數(讓稱它爲我們的參數向量,β),然後你可以使用簡單的代數要回你的a
,b
,c
和n
(假設您預先知道b
或n
)。在八度我相信你可以找到一個等效的功能,我會先看看這裏:http://octave.sourceforge.net/optim/index.html。
我們打算稱呼fminsearch
,但是我們需要在你的觀察(即x
和y
)某種方式傳遞,我們將做到這一點使用匿名函數,所以像例如2從文檔:
beta = fminsearch(@(x,y) objfun(x,y,beta), beta0) %// beta0 are your initial guesses for beta, e.g. [0,0,0] or [1,1,1]. You need to pick these to be somewhat close to the correct values.
我們定義我們的目標函數是這樣的:
function sse = objfun(x, y, beta)
f = beta(1) + beta(2).^(beta(3).*x);
err = sum((y-f).^2); %// this is the sum of square errors, often called SSE and it is what we are trying to minimise!
end
所以把他們放在一起:
y= [0.001; 0.0042222222; 0.0074444444; 0.0106666667; 0.0138888889; 0.0171111111; 0.0203333333; 0.0235555556; 0.0267777778; 0.03];
x= [3.52E-06; 9.72E-05; 0.0002822918; 0.0004929136; 0.0006759156; 0.0008199029; 0.0009092797; 0.0009458332; 0.0009749509; 0.0009892005];
beta0 = [0,0,0];
beta = fminsearch(@(x,y) objfun(x,y,beta), beta0)
現在是你的工作在beta(1)
,beta(2)
和beta(3)
,你可以在紙上做方面解決a
,b
和c
。
來源
2015-05-14 14:32:27
Dan
(1)是否是常量?你可以做一個OLS曲線擬合。 – Dan
是的! n是一個常數。實際上,忽略b。我怎樣才能找到一個和C? – David
普通最小二乘。在你的情況下,你將不得不首先記錄日誌,使你的函數是線性的(係數是線性的)。然後你可以使用這個函數:http://octave.sourceforge.net/octave/function/ols.html – Dan