我在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