我想創建一個函數,給定兩個時間段的數據,找到Bass擴散模型的參數p和q。Matlab:如何求解帶附加參數的非線性方程組?
模型(方程)如下:
n(T) = p*m + (q-p)*n(T-1) + q/m*n(T-1)^2
其中
n(T) = number of addoptions occuring in period T
n(T-1) = number of cumulative adoptions that occured before T
p = coefficient of innovation
q = coefficient of imitation
m = number of eventual adopters
例如如果m = 3.000.000 和用於下面的年中的數據如下:
2000: n(T) = 820, n(T-1) = 0
2005: n(T) = 25000, n(T-1) = 18000
然後下面的方程系統必須解決(爲了確定p和q)的值:
p*m + (q-p)*0 + q/3.000.000 * 0^2 == 820
p*m + (q-p)*18000 + q/3.000.000 * 18000^2 == 25000
通過以下Matlab documentation我試圖創建一個功能低音:
function F = Bass(m, p, q, cummulativeAdoptersBefore)
F = [p*m + (q-p)*cummulativeAdoptersBefore(1) + q/m*cummulativeAdoptersBefore(1).^2;
p*m + (q-p)*cummulativeAdoptersBefore(2) + q/m*cummulativeAdoptersBefore(2).^2];
end
應在fsolve使用(@巴斯,X0,期權),但在這種情況下, m,p,q,cummulativeAdoptersBefore(1)和cummulativeAdoptersBefore(2)應該在x0中給出,並且所有變量將被視爲未知,而不僅僅是後兩者。
有誰知道如何解決如上面的方程組?
謝謝!
所以......你真的只有1個方程,並且'n(T)'和'n(T-1)'有幾個'T'的數據。糾正我,如果我錯了,但聽起來很像你不去做這個權利。你確定'lsqcurvefit'不適合你的問題嗎? 'fsolve'用於*不同*方程的系統... –
@RodyOldenhuis:你說得對。我會檢查lsqcurvefit。謝謝! –