24小时热门版块排行榜    

查看: 2696  |  回复: 6

1135725495

铁杆木虫 (著名写手)

[求助] 求解微分方程组的参数 已有2人参与

求解K1,K2,a, m
方程组为:
CB'=-K1*CB^a*(k1/k2*CB^a)^m
CH'=K2*(K1/K2*CB^a)^m
t         CB         CH
60        10.9237        0
90        10.7462        0
120        10.4357        0.03778
135        10.1695        0.0432
150        9.7481        0.1203
165        9.2346        0.21242
180        8.6613        0.34579
195        8.0058        0.56225
210        7.2423        0.83487
225        6.4188        1.12793
240        5.5353        1.38079
255        4.5768        1.869
270        4.0146        2.5
285        3.5703        3.01
300        3.1158        3.54452
330        2.4438        4.312
360        1.9878        4.70402
390        1.6668        4.8548
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
1135725495: 金币+5, 有帮助 2016-09-11 17:37:52
1stOpt试了下,或许还有更好的结果:

均方差(RMSE): 0.681320279985844
残差平方和(SSE): 15.7827090132796
相关系数(R): 0.971338834557611
相关系数之平方(R^2): 0.943499131519738
修正R平方(Adj. R^2): 0.930539243440337
确定系数(DC): 0.890053744503595
F统计(F-Statistic): 87.6923836038994

参数                  最佳估算
--------------------        -------------
k1        0.00556462413275392
a        -0.471720992027294
k2        0.000955248259076988
m        3.39014801069688
2楼2016-09-06 23:02:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lu_yu_lan

新虫 (初入文坛)

【答案】应助回帖

参考:http://www.forcal.net/yyhz/luwffcnh.htm
代码:
!!!using["IMSL","luopt","math"]; //使用命名空间
f(t,CB,CH,dCB,dCH::K1,K2,a,m)=
{
  dCB=-K1*CB^a*(K1/K2*CB^a)^m,
  dCH=K2*(K1/K2*CB^a)^m
};
目标函数(_K1,_K2,_a,_m : i,s,tyz : tyArray,tA,max,K1,K2,a,m)=
{
     K1=_K1, K2=_K2, a=_a, m=_m,   //传递优化变量,函数f中要用到K1,K2,a,m
     tyz=ode[@f,tA,ra1(10.9237,0)],
     i=0, s=0, while{++i<max, s=s+[tyz(i,1)-tyArray(i,1)]^2+[tyz(i,2)-tyArray(i,2)]^2},
     s
};
main(::tyArray,tA,max)=
{
     tyArray=matrix{          //存放实验数据ti,yi
         "60        10.9237        0
90        10.7462        0
120        10.4357        0.03778
135        10.1695        0.0432
150        9.7481        0.1203
165        9.2346        0.21242
180        8.6613        0.34579
195        8.0058        0.56225
210        7.2423        0.83487
225        6.4188        1.12793
240        5.5353        1.38079
255        4.5768        1.869
270        4.0146        2.5
285        3.5703        3.01
300        3.1158        3.54452
330        2.4438        4.312
360        1.9878        4.70402
390        1.6668        4.8548"
     },
    len[tyArray,0,&max], tA=tyArray(all:0), //用len函数取矩阵的行数,tA取矩阵的列
    ClearImslErr(),             //清空IMSL错误输出
    ERSET(0,0,0),               //关闭IMSL所有警告
    Opt[@目标函数,optwaysimdeep, optwayconfra],              //Opt函数全局优化
    ERSET(0,2,2), ERSET(0,1,0)   //恢复IMSL警告
};

结果(K1,K2,a,m,目标函数值):

2.007221403771439e-002    3.477931047132456e-002    0.7598653691173753        -1.205432420176749        18.90800296978626
3楼2016-09-16 17:31:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lu_yu_lan

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by dingd at 2016-09-06 23:02:57
1stOpt试了下,或许还有更好的结果:

均方差(RMSE): 0.681320279985844
残差平方和(SSE): 15.7827090132796
相关系数(R): 0.971338834557611
相关系数之平方(R^2): 0.943499131519738
修正R平方(Adj. R^2):  ...

带入参数后为什么是如下结果,不知哪里有什么问题?

            60.        10.9237             0.
            90.        10.4374       0.255129
           120.        9.89908       0.531102
           135.        9.60554       0.678648
           150.        9.29215       0.833842
           165.        8.95519       0.997972
           180.         8.5897        1.17273
           195.        8.18881        1.36041
           210.        7.74256        1.56429
           225.        7.23555        1.78928
           240.        6.64186        2.04341
           255.        5.91159        2.34155
           270.        4.92268        2.71809
           285.          3.116        3.31463
           300.        -1.#IND        -1.#IND
           330.        -1.#IND        -1.#IND
           360.        -1.#IND        -1.#IND
           390.        -1.#IND        -1.#IND
4楼2016-09-17 08:11:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lu_yu_lan

新虫 (初入文坛)

【答案】应助回帖

如果怀疑t=60时初值的准确性,可将t=60时的初值也作为拟合参数。
代码:

!!!using["IMSL","luopt","math"]; //使用命名空间
f(t,CB,CH,dCB,dCH::K1,K2,a,m)=
{
   dCB=-K1*CB^a*(K1/K2*CB^a)^m,
   dCH=K2*(K1/K2*CB^a)^m
};
目标函数(_K1,_K2,_a,_m,CB60,CH60 : tyz : tyArray,tA,K1,K2,a,m)=
{
      K1=_K1, K2=_K2, a=_a, m=_m,      //传递优化变量,函数f中要用到K1,K2,a,m
      tyz=ode[@f,tA,ra1(CB60 ,CH60)],  //补充CB60,CH60为优化参数
      sum[(tyArray-tyz).^2.0,0]
};
main(::tyArray,tA)=
{
      tyArray=matrix{          //存放实验数据ti,yi
          "60        10.9237        0
90        10.7462        0
120        10.4357        0.03778
135        10.1695        0.0432
150        9.7481        0.1203
165        9.2346        0.21242
180        8.6613        0.34579
195        8.0058        0.56225
210        7.2423        0.83487
225        6.4188        1.12793
240        5.5353        1.38079
255        4.5768        1.869
270        4.0146        2.5
285        3.5703        3.01
300        3.1158        3.54452
330        2.4438        4.312
360        1.9878        4.70402
390        1.6668        4.8548"
      },
    tA=tyArray(all:0), //用tA取矩阵的列
    ClearImslErr(),    //清空IMSL错误输出
    ERSET(0,0,0),      //关闭IMSL所有警告
    Opt[@目标函数,optwaysimdeep, optwayconfra,optrange, -1e5,1e5, -1e5,1e5, -1e5,1e5, -1e5,1e5, 10.0,15.0, 0.0,0.03778],  //Opt函数全局优化
    ERSET(0,2,2), ERSET(0,1,0)   //恢复IMSL警告
};

结果(K1,K2,a,m,CB60,CH60,目标函数值):

1.323582077985482e-002    3.022295480133575e-002    0.9970827404206801        -0.8620485362713961       12.34254172021993         2.767575346307145e-008    13.27488182003417
5楼2016-09-17 10:07:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lu_yu_lan

新虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
1135725495: 金币+10, 有帮助 2016-09-25 09:16:27
用matlab验证了一下1stopt的结果:

function  dy=cbch(t,x)
K1  =   0.00556462413275392;
K2  =   0.000955248259076988;
a   =   -0.471720992027294;
m   =   3.39014801069688;
dy=zeros(2,1);
dy(1)=-K1*x(1)^a*(K1/K2*x(1)^a)^m;
dy(2)=K2*(K1/K2*x(1)^a)^m;

>> [T,X]=ode45('cbch',[60, 90, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 330, 360 , 390],[10.9237, 0]);
[T,X]
警告: 在 t=2.898865e+02 处失败。在时间 t 处,若不将步长降至允许的最小值(9.094947e-13)以下,积分公差要求无法满足。
> In ode45 (line 308)

ans =

   60.0000   10.9237         0
   90.0000   10.4374    0.2551
  120.0000    9.8991    0.5311
  135.0000    9.6055    0.6786
  150.0000    9.2921    0.8338
  165.0000    8.9552    0.9980
  180.0000    8.5897    1.1727
  195.0000    8.1888    1.3604
  210.0000    7.7426    1.5643
  225.0000    7.2355    1.7893
  240.0000    6.6419    2.0434
  255.0000    5.9068    2.3427
  270.0000    4.9277    2.7169
  285.0000    3.1174    3.3143

300, 330, 360 , 390 这几个值没有给出
6楼2016-09-21 05:48:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lu_yu_lan

新虫 (初入文坛)

【答案】应助回帖

引用回帖:
3楼: Originally posted by lu_yu_lan at 2016-09-16 17:31:34
参考:http://www.forcal.net/yyhz/luwffcnh.htm
代码:
!!!using; //使用命名空间
f(t,CB,CH,dCB,dCH::K1,K2,a,m)=
{
  dCB=-K1*CB^a*(K1/K2*CB^a)^m,
  dCH=K2*(K1/K2*CB^a)^m
};
目标函数(_K1,_K2,_a, ...

绘图:
CODE:
!!!using("IMSL","win","math");
f(t,CB,CH,dCB,dCH::K1,K2,a,m)=
{
   dCB=-K1*CB^a*(K1/K2*CB^a)^m,
   dCH=K2*(K1/K2*CB^a)^m
};
init(x,tx::K1,K2,a,m)=
  x=matrix[
"
60        10.9237        0
90        10.7462        0
120        10.4357        0.03778
135        10.1695        0.0432
150        9.7481        0.1203
165        9.2346        0.21242
180        8.6613        0.34579
195        8.0058        0.56225
210        7.2423        0.83487
225        6.4188        1.12793
240        5.5353        1.38079
255        4.5768        1.869
270        4.0146        2.5
285        3.5703        3.01
300        3.1158        3.54452
330        2.4438        4.312
360        1.9878        4.70402
390        1.6668        4.8548
"
  ],
  tx=x(all:0),
  K1=2.007221403771439e-002,  K2=3.477931047132456e-002,  a=0.7598653691173753,  m=-1.205432420176749,
  luShareX2(x, ode[@f,tx,ra1(10.9237,0)]);
ChartWnd[@init];

3#应是最优解,但图形显示数据与曲线不一致,故怀疑数据与模型不匹配。
数据与模型匹配时参考:微分方程组参数拟合问题求助:http://muchong.com/bbs/viewthread.php?tid=10232397&fpage=1
求解微分方程组的参数
图像.png

7楼2016-09-24 05:02:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 1135725495 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 基金系统什么内容也没有 30+3 winsaint 2026-08-27 6/300 2026-08-28 01:46 by alongwaytogo
[基金申请] 国自然面上复盘~欢迎讨论 (金币+5) +11 晴天加油 2026-08-26 12/600 2026-08-28 01:22 by li09465290@
[基金申请] 为什么资助数各大高校都创新高,自己申请怎么就这么难 +9 Kittylucky 2026-08-27 9/450 2026-08-28 01:08 by jurkat.1640
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 XLGfUIdOmEAO 2026-08-27 3/150 2026-08-28 00:49 by 3RAFyYXYSwGS
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 XLGfUIdOmEAO 2026-08-27 4/200 2026-08-27 22:26 by 3RAFyYXYSwGS
[教师之家] 导师吐槽:我怎么摊上了这么个极品研究生! +7 苏东坡二世 2026-08-23 7/350 2026-08-27 18:14 by 瞬息宇宙
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 LIbGuocjEEYw 2026-08-26 4/200 2026-08-27 02:01 by Ie9AyIAvGbvs
[基金申请] 范进中举一文的中心思想 +9 炎黄贵胄 2026-08-22 10/500 2026-08-26 15:40 by semaglutide
[基金申请] 2026国自然函评费到账 +22 羊腰板 2026-08-21 25/1250 2026-08-26 15:00 by zuocuiping
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 今天务委会开完了,明天出结果吗 +19 angus9576 2026-08-25 23/1150 2026-08-26 10:03 by zp519
[基金申请] 国合现在查不到了吗? +10 chengyan1220 2026-08-24 20/1000 2026-08-26 08:57 by peasantsprig
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[基金申请] 在坚冰还盖着北海的时候,我看到了怒放的梅花。 (金币+10) +6 ziyangfang 2026-08-25 9/450 2026-08-25 20:26 by huagongfeihu
[基金申请] 没有任何消息-是不是就凉了 +9 图啦图啦 2026-08-24 10/500 2026-08-25 11:59 by 南海小哥
[基金申请] 人气不行了 +11 fansofjerry 2026-08-21 11/550 2026-08-25 11:04 by 孤独的英雄6
信息提示
请填处理意见