24小时热门版块排行榜    

查看: 1231  |  回复: 13

caisinong

新虫 (初入文坛)

[求助] 微分方程组拟合用1stopt,不是不响应就是不开始。。大神们看下是哪里出错了? 已有1人参与

Title "Type your title here";
//Parameters ;
//Variable ;
//Function ;
Variable s,i,d;
Parameters a,b,c;
Function s'=-a*s*i;
d'=c*i;
i'=a*s*i-b*i-c*i;
RawData;
11744951,29,20;
11744897,66,37;
11744873,83,44;
11744843,101,56;
11744803,122,75;
11744792,136,72;
11744779,146,75;
11744769,155,76;
11744767,157,76;
11744742,174,84;
11744719,186,95;
11744656,215,129;
11744628,236,136;
11744602,264,134;
11744610,270,120;
11744587,303,110;
11744591,309,100;
11744585,314,101;
11744540,339,121;
11744515,358,127;
11744494,373,133;
11744457,394,149;
11744393,406,201;
11744229,494,277;
11744139,557,304;
11744058,601,341;
11743978,635,387;
11743843,710,447;
11743702,768,530;
11743528,843,629;
11743460,904,636;
11743402,981,617;
11743269,1041,690;
11743122,1142,736;
11743029,1192,779;
11742866,1260,874;
11742836,1327,837;
11742708,1428,864;
11742584,1525,891;
11742403,1607,990;
11742293,1708,999;
11742225,1781,994;
11742194,1814,992;
11742129,1876,995;
11742083,1910,1007;
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
caisinong: 金币+5, ★★★★★最佳答案, 谢谢大神无私帮助! 2015-02-09 12:39:41
原代码中关键词 RawData 也是错误的,正确的为 RowData。此外,方便起见,我做了变量命名转换,因为原定义中因变量 i 可能与虚数产生歧义。
代码如下:
CODE:
Parameters a,b,c;
Variable t,y1,y2,y3;
ODEFunction y1'=-a*y1*y2;
y3'=c*y2;
y2'=a*y1*y2-b*y2-c*y2;
Data;
1    11744951          29          20
           2    11744897          66          37
           3    11744873          83          44
           4    11744843         101          56
           5    11744803         122          75
           6    11744792         136          72
           7    11744779         146          75
           8    11744769         155          76
           9    11744767         157          76
          10    11744742         174          84
          11    11744719         186          95
          12    11744656         215         129
          13    11744628         236         136
          14    11744602         264         134
          15    11744610         270         120
          16    11744587         303         110
          17    11744591         309         100
          18    11744585         314         101
          19    11744540         339         121
          20    11744515         358         127
          21    11744494         373         133
          22    11744457         394         149
          23    11744393         406         201
          24    11744229         494         277
          25    11744139         557         304
          26    11744058         601         341
          27    11743978         635         387
          28    11743843         710         447
          29    11743702         768         530
          30    11743528         843         629
          31    11743460         904         636
          32    11743402         981         617
          33    11743269        1041         690
          34    11743122        1142         736
          35    11743029        1192         779
          36    11742866        1260         874
          37    11742836        1327         837
          38    11742708        1428         864
          39    11742584        1525         891
          40    11742403        1607         990
          41    11742293        1708         999
          42    11742225        1781         994
          43    11742194        1814         992
          44    11742129        1876         995
          45    11742083        1910        1007

计算结果:
CODE:
Parameters       Best Estimate
-------------------- -------------
a       1.48929558416951E-8
b       0.0120499576251067
c       0.0641192905655217
====== Output Results =====
File: Data file - 1
No Obs. y1 Cal. y1 Obs. y2 Cal. y2 Obs. y3 Cal. y3
1 11744897 11744945.668502 66 32.0098471641041 37 21.954366
2249076
2 11744873 11744939.7836624 83 35.3320768680856 44 2
4.1115717780767
3 11744843 11744933.2880524 101 38.9991096933077 56 2
6.4926687112677
4 11744803 11744926.1182829 122 43.0467308193201 75 2
9.1208939388352
5 11744792 11744918.2043863 136 47.5144391972183 72 3
2.021895998748
6 11744779 11744909.4691336 146 52.4458329259643 75 3
5.223985328777
7 11744769 11744899.8272811 155 57.8890346108615 76 3
8.7584105134752
8 11744767 11744889.1847386 157 63.8971608504808 76 4
2.6596631963224
9 11744742 11744877.4376513 174 70.5288404279365 84 4
6.9658146308117
10 11744719 11744864.4713866 186 77.8487862564284 95 5
1.7188871526054
11 11744656 11744850.1594159 215 85.9284266519954 129 5
6.9652641951778
12 11744628 11744834.3620802 236 94.8466020834877 136 6
2.7561428468951
13 11744602 11744816.9252277 264 104.690334186439 134 6
9.1480333618917
14 11744610 11744797.6787099 270 115.555674529899 120 7
6.2033104944093
15 11744587 11744776.4347221 303 127.548641400163 110 8
3.9908220308955
16 11744591 11744752.9859716 309 140.78625372005 100 92.586560
45099
17 11744585 11744727.103656 314 155.397672165231 101 102.07440
426294
18 11744540 11744698.5352315 339 171.52545857897 121 112.54693
6236917
19 11744515 11744667.0019504 358 189.326965933505 127 1
24.10634650769
20 11744494 11744632.1961429 373 208.975872351017 133 1
36.86542934334
21 11744457 11744593.7782171 394 230.663874091683 149 1
50.948683287116
22 11744393 11744551.3733482 406 254.602553953918 201 1
66.493525383908
23 11744229 11744504.567825 494 281.025443226915 277 183.65163
1310685
24 11744139 11744452.9050167 557 310.190297204049 304 2
02.590414452341
25 11744058 11744395.8809228 601 342.381606324876 341 2
23.494658312249
26 11743978 11744332.9392622 635 377.913367282602 387 2
46.568318133379
27 11743843 11744263.4660526 710 417.132140933892 447 2
72.036509245148
28 11743702 11744186.7836299 768 460.420426601673 530 3
00.147701458794
29 11743528 11744102.1440477 843 508.200385394373 629 3
31.176140827076
30 11743460 11744008.7217945 904 560.937948504155 636 3
65.424522281206
31 11743402 11743905.6057565 981 619.147350122214 617 4
03.226939079813
32 11743269 11743791.7903502 1041 683.396128653765 690 4
44.952137673838
33 11743122 11743666.1657379 1142 754.310644364555 736 4
91.007109532617
34 11743029 11743527.5070319 1192 832.582166483306 779 5
41.841054716886
35 11742866 11743374.4623843 1260 918.973588162441 874 5
97.949755554095
36 11742836 11743205.5398465 1327 1014.32683360825 837 6
59.880402702559
37 11742708 11743019.0928735 1428 1119.57102818053 864 7
28.236920219392
38 11742584 11742813.304333 1525 1235.7315093835 891 803.685841011576
39 11742403 11742586.1688676 1607 1363.93976448183 990 8
86.962789292442
40 11742293 11742335.4734398 1708 1505.44438903799 999 9
78.879632433323
41 11742225 11742058.7758766 1781 1661.62317004587 994 1
080.33237094253
42 11742194 11741753.3812077 1814 1833.99640759864 992 1
192.30984227545
43 11742129 11741416.3155756 1876 2024.24160024928 995 1
315.90332183955
44 11742083 11741044.2974683 1910 2234.20963147612 1007 1
452.3171129704

因为计算较慢,所以只迭代计算了几次,看来效果是不错的,见附图。
至于计算出来的结果,比如参数取值范围之类的,楼主可自行调节。

因为楼主的参数只有3个,所以可以用 1stOpt 高版本的试用版:
http://muchong.com/bbs/viewthread.php?tid=8050245
微分方程组拟合用1stopt,不是不响应就是不开始。。大神们看下是哪里出错了?
附图1.png


微分方程组拟合用1stopt,不是不响应就是不开始。。大神们看下是哪里出错了?-1
附图2.png


微分方程组拟合用1stopt,不是不响应就是不开始。。大神们看下是哪里出错了?-2
附图3.png

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2015-02-09 11:33:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

caisinong

新虫 (初入文坛)

查了好多东西,发现应该是因为自己的版本太低。。不知道高版本怎么获取?网上都查不到。
或者如果有前辈可以帮忙跑下也好,不胜感激!
2楼2015-02-09 04:38:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
1. 低版本不支持常微分方程拟合。
2. 代码也存在错误。楼主定义的变量有s,i,d 三个,那么自变量是哪个呢?楼主定义的常微分方程有三个 s'=-a*s*i; d'=c*i; i'=a*s*i-b*i-c*i; 这样看来,s i d都是因变量,那么缺少自变量的定义。在data中,只给出了三个变量的数据,缺少一组数据(应该是自变量的数据)。
3. 常微分方程拟合,关键词不再是 Function,而是ODEFunction。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-02-09 09:03:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caisinong

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 月只蓝 at 2015-02-09 09:03:46
1. 低版本不支持常微分方程拟合。
2. 代码也存在错误。楼主定义的变量有s,i,d 三个,那么自变量是哪个呢?楼主定义的常微分方程有三个 s'=-a*s*i; d'=c*i; i'=a*s*i-b*i-c*i; 这样看来,s i d都是因变量,那么缺少 ...

谢谢回答。。我也是新手,本来用matlab做神经网络和模拟退火,效果都很差,您可以看下我另一篇求助贴里有你和效果图。自变量就是t,昨天赶得太急没有细看,我再看看
4楼2015-02-09 10:12:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by caisinong at 2015-02-09 10:12:46
谢谢回答。。我也是新手,本来用matlab做神经网络和模拟退火,效果都很差,您可以看下我另一篇求助贴里有你和效果图。自变量就是t,昨天赶得太急没有细看,我再看看...

自变量是t,也需要给出t的数据。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2015-02-09 10:21:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caisinong

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 月只蓝 at 2015-02-09 10:21:56
自变量是t,也需要给出t的数据。...

t就是时间序列,添加了这一列的数据为:
1,11744951,29,20;
2,11744897,66,37;
3,11744873,83,44;
4,11744843,101,56;
5,11744803,122,75;
6,11744792,136,72;
7,11744779,146,75;
8,11744769,155,76;
9,11744767,157,76;
10,11744742,174,84;
11,11744719,186,95;
12,11744656,215,129;
13,11744628,236,136;
14,11744602,264,134;
15,11744610,270,120;
16,11744587,303,110;
17,11744591,309,100;
18,11744585,314,101;
19,11744540,339,121;
20,11744515,358,127;
21,11744494,373,133;
22,11744457,394,149;
23,11744393,406,201;
24,11744229,494,277;
25,11744139,557,304;
26,11744058,601,341;
27,11743978,635,387;
28,11743843,710,447;
29,11743702,768,530;
30,11743528,843,629;
31,11743460,904,636;
32,11743402,981,617;
33,11743269,1041,690;
34,11743122,1142,736;
35,11743029,1192,779;
36,11742866,1260,874;
37,11742836,1327,837;
38,11742708,1428,864;
39,11742584,1525,891;
40,11742403,1607,990;
41,11742293,1708,999;
42,11742225,1781,994;
43,11742194,1814,992;
44,11742129,1876,995;
45,11742083,1910,1007;

我这里低版本看来是不行了,能麻烦您跑下吗?如果验证这个可行,我再找办法跑别的数据。。
6楼2015-02-09 10:35:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caisinong

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 月只蓝 at 2015-02-09 10:21:56
自变量是t,也需要给出t的数据。...

s',i',d'分别为ds/dt,di/dt,dd/dt
7楼2015-02-09 10:36:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caisinong

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 月只蓝 at 2015-02-09 11:33:18
原代码中关键词 RawData 也是错误的,正确的为 RowData。此外,方便起见,我做了变量命名转换,因为原定义中因变量 i 可能与虚数产生歧义。
代码如下:

Parameters a,b,c;
Variable t,y1,y2,y3;
ODEFunction  ...

先感谢您了,拟合效果很好,就是还没太懂参数为什么跟预期差那么大。我自己再试试!
9楼2015-02-09 12:41:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caisinong

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 月只蓝 at 2015-02-09 11:33:18
原代码中关键词 RawData 也是错误的,正确的为 RowData。此外,方便起见,我做了变量命名转换,因为原定义中因变量 i 可能与虚数产生歧义。
代码如下:

Parameters a,b,c;
Variable t,y1,y2,y3;
ODEFunction  ...

有点郁闷。。用那个试用版,直接复制您给的代码也不跑,不知道为什么
10楼2015-02-09 13:04:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 caisinong 的主题更新
信息提示
请填处理意见