如何用matlab进行函数组的拟合

水中有污染物并生长有植物,水中的植物可以逐渐去除水中的污染物,水中污染物的浓度和植物中污染物的浓度构成了相互关联的、随时间变化的两组数据 时间t=0、1、3、5、7、10 水中污染物的浓度cw=0.13、0.097、0.083、0.066、0.047、0.042 植物中污染物的浓度cp=0.433、0.506、0.623、0.225、0.208、0.157 现在想要用微分方程组V*dcw/dt=-(k1+k3)*V*cw+k2*M*cp;M*dcp/dt=k1*V*cw-(k2+k4)*M*cp同时去拟合cp、cw的数据,获得参数k1、k2、k3和k4的值,其中V为水中体积V=0.2,M为植物质量,M=0.002 这个问题困扰我两个星期,跪求高人帮我解决,不胜感激,涕泗交流!

第1个回答  2020-06-25
我觉得,首先你应该对微分方程求积分。使其变成一个一个随时间变化的函数。
cw=G(t),或者cp=F(t)等等。这样就是一个比较简单的函数关系式。最后调用拟合函数就可以了。
比如由微分方程变化cw=G(t),使用微分非齐次公式。成为cw=C1*exp(C2*t)+C3。当然C1,C2,C3包括了你的未知变量K1~K4。你使用完指数拟合后能知道C1~C3的值。
再把C1~C3求导,放回微分方程中。往变量t中带值,这样就会形成一个方程组求取K1~K4。由于可能是奇异矩阵,所以你用最小二乘法就能求出最后的K1~K4值。
相似回答