我在Octave中使用OdePkg來求解硬ODEs的系統,例如,通過ode5r:在使用倍頻程/ matlab ODE求解器時擬合ODE的參數
function yprime = myODEs(t,Y,param)
yprime = [
- param(1) * Y(1); # ODE for Y(1)
param(1) * Y(1) - param(2) Y(2) * Y(3); # ODE for Y(2)
param(2) Y(2) * Y(3) # ODE for Y(3)
# etc.
];
time_span = [1, 24] # time span of interest
Y0 = [1.0, 1.1, 1.3] # initial values for dependent variables Y
param = [7.2, 8.6, 9.5] # parameters, to be optimized
[t, Y] = ode5r(@myODEs, time_span, Y0, ..., param);
求解器存儲因變量的Y的矩陣相對於時間t(載體):
t Y(1) Y(2) Y(3)
0.0 1.0 1.1 1.3
0.1 ... ... ...
0.5 ... ... ...
0.9 ... ... ...
... ... ... ...
4.0 ... ... ...
... ... ... ...
24.0 ... ... ...
我想以適應PARAM的參數,使得所得到的變量Ÿ最適合我的參考值,例如:
t Y(1) Y(2) Y(3)
0.5 1.1 N/A N/A
1.0 1.9 N/A N/A
4.0 2.3 2.7 2.1
5.0 N/A 2.6 2.2
24.0 0.9 1.5 2.0
哪個八度/ Matlab的(其他語言的歡迎)程序可以進行多參數(最小二乘/花鍵)適合? 怎麼可能結合不同初值的參數集 y0在擬合? 如果你能給我提供一些提示和可能性,我會很高興。
最好的問候,西蒙
你的第一個建議聽起來像我想要的。我只是想確保,我得到了你的權利: 1. 我總結我的八度解算器裝配模塊中。 對於多參數擬合有效的最小二乘法和/或樣條例程可以推薦嗎? 2. 擬合給了我每個y(t)的模型結果和實際數據之間的誤差。 解算器是否將所有錯誤的總和作爲每個參數組合的適應度指標? 3. 今天我提取了新的數據集(針對不同的初始值) 如何在一個擬閤中組合這些數據? (我會發布數據,如果有幫助) – SimonSalman 2009-07-23 08:24:16
哦,是的,我的意思是通過「健身指標」這些係數。我想我不必爲此煩惱,因爲這是最小平方算法的一部分。 我一次只能用一組初始值運行模型。所以我不明白在基於不同的初始值時如何合併數據集。 – SimonSalman 2009-07-23 10:15:19