24小时热门版块排行榜    

查看: 1886  |  回复: 8

bin0415

银虫 (小有名气)

[求助] 关于mathematica曲线拟合问题,求指点 已有1人参与

为了验证mathematica的曲线拟合准确性,我随意写了个略复杂的指数函数做例子。见程序或截图。
从该函数中取若干组数据点(x,y),用Findfit命令来对这些离散点做曲线拟合求各参数。
但是得出的参数结果却不能和最初的函数对应。不解中。。。是用的函数太复杂的原因吗?请大神指教~@月只蓝@月只蓝@月只蓝@beefly
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 程序截图.JPG
  • 2017-05-26 16:13:38, 125.78 K
  • 附件 2 : 验证mathematica曲线拟合可行.nb
  • 2017-05-26 16:13:38, 12.83 K

» 猜你喜欢

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

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
尽量别传.nb格式文件,不是每个人每台PC都装有Mathematical。
把公式,数据及标准答案以文本形式给出。
2楼2017-05-26 22:58:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bin0415

银虫 (小有名气)

引用回帖:
2楼: Originally posted by dingd at 2017-05-26 22:58:07
尽量别传.nb格式文件,不是每个人每台PC都装有Mathematical。
把公式,数据及标准答案以文本形式给出。

In[1]:= y=5E^(4+2/x)/(2+x)+3x;
In[2]:= data1=Table[y,{x,1,10,0.1}];
In[3]:= data2=Table[x,{x,1,10,0.1}];
In[4]:= data=Transpose[{data2,data1}];
In[5]:= FindFit[data,c1 E^(c2+c3/x)/(c4+x)+c5 x,{c1,c2,c3,c4,c5},x]
Out[5]= {c1->5.7197,c2->3.72552,c3->0.275544,c4->-0.53592,c5->3.27662}
3楼2017-05-27 08:19:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bin0415

银虫 (小有名气)

引用回帖:
2楼: Originally posted by dingd at 2017-05-26 22:58:07
尽量别传.nb格式文件,不是每个人每台PC都装有Mathematical。
把公式,数据及标准答案以文本形式给出。

多谢指正!文本已贴出~
4楼2017-05-27 08:20:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

引用回帖:
3楼: Originally posted by bin0415 at 2017-05-27 08:19:33
In:= y=5E^(4+2/x)/(2+x)+3x;
In:= data1=Table;
In:= data2=Table;
In:= data=Transpose;
In:= FindFit
Out= {c1->5.7197,c2->3.72552,c3->0.275544,c4->-0.53592,c5->3.27662}...

参数有5个,数据才3个,结果不唯一很正常的,把点取多点(至少大于等于5),可以获得原系数的,下面取了6个点:
x      y
1        40.9452804946533
5        17.3746509672698
10        20.0953377429663
20        29.0243015587478
0.5        126.162650985547
0.1        459556.000789522

拟合计算可以得到:
c1        4.99999999999388
c2        4.00000000000426
c3        2.00000000000107
c4        2.00000000000108
c5        3.00000000000639
5楼2017-05-27 14:07:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bin0415

银虫 (小有名气)

引用回帖:
5楼: Originally posted by dingd at 2017-05-27 14:07:16
参数有5个,数据才3个,结果不唯一很正常的,把点取多点(至少大于等于5),可以获得原系数的,下面取了6个点:
x      y
1        40.9452804946533
5        17.3746509672698
10        20.0953377429663
20        29.0243015587478
...

我的参考点是一百个啊,1到10,间隔0.1取点。

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

6楼2017-05-27 15:45:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bin0415

银虫 (小有名气)

送红花一朵
引用回帖:
6楼: Originally posted by bin0415 at 2017-05-27 15:45:23
我的参考点是一百个啊,1到10,间隔0.1取点。
...

大神,能不能把你运行程序给我看看,拍个照也行

发自小木虫Android客户端
7楼2017-05-27 15:55:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

那是FindFit函数功能不强,自己用1stOpt拟合试试,简单的多,效果也好。
8楼2017-05-27 16:05:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
bin0415: 金币+20, ★★★很有帮助, 好的,我用这个试试看 2017-05-28 07:27:36
1stOpt代码:
CODE:
Function y=c1*Exp((c2+c3/x)/(c4+x))+c5*x;
Data;
1        39.9452804946533
1.1        35.9639086386456
1.2        32.9787388912043
1.3        30.6827919737257
1.4        28.8820576292125
1.5        27.4483820759985
1.6        26.2939445315476
1.7        25.3566678797049
1.8        24.5914938495867
1.9        23.9649600159735
2        23.4517147873092
2.1        23.0322116965742
2.2        22.6911443656924
2.3        22.4163598226432
2.4        22.1980885190534
2.5        22.02838873441
2.6        21.900739038562
2.7        21.8097348726975
2.8        21.7508595638259
2.9        21.7203093565284
3        21.7148581890398
3.1        21.7317520846188
3.2        21.7686258698769
3.3        21.8234369083298
3.4        21.8944119318549
3.5        21.9800040491289
3.6        22.0788577306184
3.7        22.1897800965273
3.8        22.3117172233326
3.9        22.4437344749328
4        22.5850000830634
4.1        22.734771367667
4.2        22.8923831150129
4.3        23.0572377294197
4.4        23.2287968506295
4.5        23.4065741884971
4.6        23.5901293735996
4.7        23.7790626595691
4.8        23.973010342593
4.9        24.1716407872846
5        24.3746509672698
5.1        24.5817634443318
5.2        24.7927237225728
5.3        25.007297924359
5.4        25.2252707432828
5.5        25.4464436363553
5.6        25.6706332234227
5.7        25.8976698666037
5.8        26.1273964065503
5.9        26.3596670356929
6        26.5943462914466
6.1        26.8313081547328
6.2        27.0704352411783
6.3        27.3116180740612
6.4        27.5547544295188
6.5        27.7997487457738
6.6        28.0465115891899
6.7        28.2949591708784
6.8        28.5450129083577
6.9        28.7965990274396
7        29.0496482000999
7.1        29.3040952145934
7.2        29.5598786745126
7.3        29.8169407238692
7.4        30.0752267956093
7.5        30.3346853812651
7.6        30.595267819698
7.7        30.8569281031123
7.8        31.1196226987144
7.9        31.3833103845638
8        31.6479520983169
8.1        31.9135107976957
8.2        32.1799513316356
8.3        32.4472403211702
8.4        32.7153460492056
8.5        32.9842383584192
8.6        33.2538885565934
8.7        33.5242693287597
8.8        33.7953546555883
8.9        34.067119737512
9        34.339540924119
9.1        34.6125956483925
9.2        34.8862623654145
9.3        35.1605204951832
9.4        35.4353503692252
9.5        35.7107331807138
9.6        35.9866509378249
9.7        36.2630864200906
9.8        36.5400231375269
9.9        36.8174452923314
10        37.0953377429663

均方差(RMSE): 1.93921617373858E-12
残差平方和(SSE): 3.42210902532525E-22
相关系数(R): 1
相关系数之平方(R^2): 0.999999999999999
修正R平方(Adj. R^2): 0.999999999999999
确定系数(DC): 1
卡方系数(Chi-Square): 5.88798659387671E-24
F统计(F-Statistic): 1.3945497451214E26

参数        最佳估算
----------        -------------
c1        5.00000000001554
c2        3.99999999998526
c3        2.000000000009
c4        2.00000000000151
c5        2.99999999999827
9楼2017-05-27 20:40:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 bin0415 的主题更新
信息提示
请填处理意见