Matlab:ODE45 方程的参数拟合 - 只有 xdata 的初始值

Matlab: Parameter fit of ODE45 equation - only initial value for xdata

我有一个包含 3 个 ODE 的系统:

Cf' = kin * Cw * F - (kout + km) * Cf
Cw' = kout * Cf - kin * Cw(i) * F
Cm' = km * Cf

我测量了Cf所有时间点的数据,只测量了Cw和Cm的初始值。现在我想让我的模型适合这个数据,找到 kin、kout 和 km 的最佳参数值。

我可以用 lsqcurvefit 和 ode45 以某种方式做到这一点吗? 谢谢!

所以你得到了一个 ODE 函数

function Dy = derivs(t,y,p)
  Cf = y(1); Cw = y(2); Cm = y(3);
  kin = p(1); kout = p(2); km = p(3);
  DCf = kin * Cw * F - (kout + km) * Cf;
  DCw = kout * Cf - kin * Cw * F;
  DCm = km * Cf;
  Dy = [ DCf DCw DCm ]
end

以及获取指定点解的函数

function y_data = solution(x_data,y0,p)
  sol = ode45(@(t,y)derivs(t,y,p), [x0,xe], y0)
  y_data = deval(sol, x_data)
end

现在传递给拟合过程的函数是

@(p) solution(x_data,y0,p) 

你会得到一个更详细的值 table,优化参数 p_opt

绘图
x_plot = linspace(x0,xe,300)
y_plot = solution(x_plot,y0,p_opt)
plot(x_plot, y_plot)