当前位置: 首页 > 计算模拟 >常微分方程组参数拟合问题求助(1stOpt)

常微分方程组参数拟合问题求助(1stOpt)

作者 ankcean96
来源: 小木虫 200 4 举报帖子
+关注

已知k1-k6的范围,y1,y4,y5的初始值,并且知道y4与时间t的一系列取值,要得出k1-k6和y2,y3的初始值。 
这里面有一个问题,我不知道怎么用程序表达:
t=31,59,90,120,151,181,212,243,273,304,334,365;//一年当中每个月最后一天的序号
而对应的y4=37567,23862,77756,248609,354347,343100,261263,119096,101654, 87612,79591,60879;//每个月发病总人数。如37567表示1~31天合计发病人数,23862表示32-59天合计发病人数
微分方程估计出来的y4却是每天的发病人数,我不知道怎么处理???求指点!!!

Constant  u=3.9139*10^-5;
Parameter  k1= [0.0001,50];
Parameter  k2= [0.0001,1];
Parameter  k3= [0.0001,1];
Parameter  k4= [0.1,1];
Parameter  k5= [0.01,1];
Parameter  k6= [0.1,1];
Variable t,y1,y4,y5;
InitialODEValue t=1, y1=1.4*10^8,y4=1212,y5=0;
ODEFunction
y1'=u*(y1+y2+y3+y4+y5)-k1*(y3+y4)*y1/(y1+y2+y3+y4+y5)+k2*y5-u*y1;
y2'=k1*(y3+y4)*y1/(y1+y2+y3+y4+y5)-k3*y2-u*y2;
y3'= k3*(1-k5)*y2-k4*y3-u*y3;
y4'= k3*k5*y2-k6*y4-u*y4;
y5'= k4*y3+k6*y4-k2*y5-u*y5;

Data;
t=31,59,90,120,151,181,212,243,273,304,334,365;
y4=37567,23862,77756,248609,354347,343100,261263,119096,101654, 87612,79591,60879; 返回小木虫查看更多

今日热帖
  • 精华评论
  • 独孤神宇

    你的问题 貌似无法回答,只给出一个code,应助者只能从code本身出发来检查有无错误。

    而你需要解决的问题从代码中无法修改,因为数学模型以及相应的物理含义缺失。

    建议补充一些必要条件,最好让非同领域虫子也能够理解。

    另外,你不是化工冶金吗,怎么研究医学问题了

  • dingd

    参考下,有时间慢慢计算效果还会更好些:

    均方差(RMSE): 14229.3263558936
    残差平方和(SSR): 2429684742.51033
    相关系数(R): 0.992143206082019
    相关系数之平方(R^2): 0.984348141374707
    修正R平方(Adj. R^2): 0.980869950569086
    确定系数(DC): 0.984324866295433
    F统计(F-Statistic): 35.5904893216816

    参数                  最佳估算
    --------------------        -------------
    k1        0.56021181422506
    k2        0.00975011524584684
    k3        0.0821649927836369
    k4        0.4733184047188
    k5        0.0310452046490124
    k6        0.112756389482562
    y2 初值         202805382.034588
    y3 初值         -158590839.475778
    常微分方程组参数拟合问题求助(1stOpt)
    c96.jpg

  • ankcean96

    引用回帖:
    2楼: Originally posted by 独孤神宇 at 2018-05-21 16:30:32
    你的问题 貌似无法回答,只给出一个code,应助者只能从code本身出发来检查有无错误。

    而你需要解决的问题从代码中无法修改,因为数学模型以及相应的物理含义缺失。

    建议补充一些必要条件,最好让非同领域虫子 ...

    谢谢提点
    我这个是一个仓室模型,y1 y2 y3 y4 y5分别代表某地区处于××病的易感期,潜伏期,感染未住院,感染住院,恢复期五个阶段的人数,所以肯定都是不小于0,y1 y2 y3 y4 y5之间的关系从微分方程组可以看出。根据经验,能给出y2的物理范围[1.8 × 10^4,1.4 × 10^7],y3的物理范围[1.8 × 10^3,1.8 × 10^5]
    我给出的实际数据(37567,23862,77756,248609,354347,343100,261263,119096,101654, 87612,79591,60879)是疾病监测系统得到的一年中每个月感染住院总人数,如37567表示1~31天发病人数(y4)之和,23862表示32-59天发病人数(y4)之和,我不知道这种情况下data该怎么列举出来。

    我的这种写法好像是把37567当成第31天发病人数,23862当成第59天发病人数了

  • ankcean96

    引用回帖:
    3楼: Originally posted by dingd at 2018-05-21 18:28:47
    参考下,有时间慢慢计算效果还会更好些:

    均方差(RMSE): 14229.3263558936
    残差平方和(SSR): 2429684742.51033
    相关系数(R): 0.992143206082019
    相关系数之平方(R^2): 0.984348141374707
    修正R平方(Adj. R^2 ...

    多谢大神,你是不是帮我修改了程序啊,能不能把你运行用的代码发给我一下,另外,我想知道怎么能在程序中限制y2 y3的初值范围(y2的物理范围[1.8 × 10^4,1.4 × 10^7],y3的物理范围[1.8 × 10^3,1.8 × 10^5])

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓