与实验数据拟合两个微分方程的问题

4视图(30天)
我想配合实验数据微分方程组。到目前为止,我这里做了什么,因为它接近我想完成: //www.tatmou.com/matlabcentral/answers/254566-how-do-i-fit-coupled-differential-equations-to-experimental-data
方程是:
dP (t) / dt = kn *(十米级(t)) ^数控+公里* M (t) - ka * P (t) ^ 2
dM (t) / dt = kp * (10 - M (t)) * P (t)
P M (0) (0) = = 0
我的数据包括时间、t和纤维质量,M (t),所以我想解出M (t)以适应数据。如果有帮助,M (t)通常可以符合s型函数,但我用这些方程,因为我想获得常数kn,数控,公里,ka, kp。我知道有很多参数使得拟合难度……这是代码:
函数f (x) = knfit (t)
% t =时间
% f =原始数据
函数S = prefun (B、t)
%变量:x (1) = P = P (t) x (2) = M = M (t)
%参数:
(1)= kn % B
% B(2) =数控
% B(3) =公里
(4)= ka % B
% B (5) = kp;
0 x0 = [0];
(~,Sv) =数值(@DiffEq t x0);
函数dS = DiffEq (t, x)
:dS (1) = B(1) *(10倍(2))^ (2)+ B (3) B * x (2) - (4) * x (1) ^ 2;
B: dS(2) =(5) *(10倍(2))* x (1);
结束
S = Sv (: 1);
结束
objfcn = @ (B、t) prefun (B、t);
B0 = [0.001、2、0.0001、1.1、0.00002);%初始值
x = lsqcurvefit (objfcn B0 t、f);
结束
我现在得到的错误:
矩阵尺寸必须同意。
错误lsqcurvefit /目标(第279行)
F = F - YDATA;
我非常困惑,因为x和y数据肯定都是一样的尺寸。B0需要不同的东西吗?
我很新的在这样对我!:)谢谢!

答案(2)


明星黾
明星黾 2020年4月6日
运行您的代码与随机数据运行没有错误( R2020a ):
t = (0:20) ';
f =兰德(大小(t));
函数f (x) = knfit (t)
% t =时间
% f =原始数据
函数S = prefun (B、t)
%变量:x (1) = P = P (t) x (2) = M = M (t)
%参数:
(1)= kn % B
% B(2) =数控
% B(3) =公里
(4)= ka % B
% B (5) = kp;
0 x0 = [0];
(~,Sv) =数值(@DiffEq t x0);
函数dS = DiffEq (t, x)
:dS (1) = B(1) *(10倍(2))^ (2)+ B (3) B * x (2) - (4) * x (1) ^ 2;
B: dS(2) =(5) *(10倍(2))* x (1);
结束
S = Sv (: 1);
结束
objfcn = @ (B、t) prefun (B、t);
B0 = [0.001、2、0.0001、1.1、0.00002);%初始值
x = lsqcurvefit (objfcn B0 t、f);
结束
x = knfit (t、f)
我不是肯定出了什么问题,有可能 数值 遇到一个奇点(无限价值)和停止积分。向量会不会同样的长度,然而,可能会抛出一个不同的错误。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的