前面介绍过关于MATLAB微分方程参数拟合的例子,使用ode45函数+lsqnonlin函数来实现参数拟合。
这里使用ode45函数+lsqcurvefit函数来实现参数拟合,微分方程的转化形式见下面代码中KineticEqs部分。
代码如下:
完整代码请加文末企鹅号
function ODEfunction_lsqcurvefit
clear all;clc
format long
global tspan y0
tspan=[0 15 30 45 60 75 90 120]; % size=1*8
yexp=[4.826 4.206045728 3.081681077 2.582976758 2.368099268 2.296997119 2.259547446 2.221752483]'; %
size=8*1,将第一个数据取出作为下面的初始值
k0=[0.002 0.003];
%猜测初值,可随机赋值,根据结果调整
y0=4.826;
% 初始状态
lb=[0 0];
% 参数下限
ub=[1 1];
% 参数上限
%% ------------------
% 使用函数lsqcurvefit()进行参数估计
******************
fprintf('使用函数lsqcurvefit()估计得到的参数值为:')
fprintf('\tk1 = %.4f',k(1))
fprintf('\tk2 = %.4f',k(2))
fprintf('The sum of the squares
这里使用ode45函数+lsqcurvefit函数来实现参数拟合,微分方程的转化形式见下面代码中KineticEqs部分。
代码如下:
完整代码请加文末企鹅号
function ODEfunction_lsqcurvefit
clear all;clc
format long
global tspan y0
tspan=[0 15 30 45 60 75 90 120]; % size=1*8
yexp=[4.826 4.206045728 3.081681077 2.582976758 2.368099268 2.296997119 2.259547446 2.221752483]';
k0=[0.002 0.003];
y0=4.826;
lb=[0 0];
ub=[1 1];
%% ------------------
% 使用函数lsqcurvefit()进行参数估计
******************
fprintf('使用函数lsqcurvefit()估计得到的参数值为:')
fprintf('\tk1 = %.4f',k(1))
fprintf('\tk2 = %.4f',k(2))
fprintf('The sum of the squares
