24小时热门版块排行榜    

查看: 982  |  回复: 5

zyugiec

金虫 (正式写手)

[求助] matlab如何编写共享参数拟合程序 已有1人参与

各位好,由于盗版的1stopt无法调用sharemodel功能,请问如何用matlab编写此程序
因变量y1和y2和是共享参数k1,k2和k3的。
请赐教!

1stopt编写的语言如下:
Parameters a[0,],k1[0,],k3[0,];
Variable t,y1,y2;
SharedModel;
Function y1=(50/(a-k1))*(a*(1-exp(-k1*t))-k1*(1-exp(-a*t))); y2=50*k1*(k3-a)*50/(k3*(a-k1))*(exp(-k1*t)-exp(-a*t));
Data;
0                0                0
3                5.177        3.205
7                8.335        2.953
12                10.575        2.764
24                11.441        2.212
30                14.645        2.445
36                15.705        2.415
48                15.677        2.167
60                17.529        2.144
72                17.725        1.876
回复此楼

» 猜你喜欢

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

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

gooxin

新虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zyugiec: 金币+20, ★★★很有帮助 2016-08-22 09:38:57
1stopt7.0跑出来的结果,有问题站内我。请采纳。
==================
模型公式: y1 = (50/(a-k1))*(a*(1-exp(0-k1*t))-k1*(1-exp(0-a*t)))
          y1 = (50/(0.0084033309045955-322363191667758))*(0.0084033309045955*(1-exp(0-322363191667758*t))-322363191667758*(1-exp(0-0.0084033309045955*t)))
模型公式: y2 = 50*k1*(k3-a)*50/(k3*(a-k1))*(exp(0-k1*t)-exp(0-a*t))
          y2 = 50*322363191667758*1.064782396E-5*50/(0.00841397872855583*(0.0084033309045955-322363191667758))*(exp(0-322363191667758*t)-exp(0-0.0084033309045955*t))

迭代数: 60
计算用时(时:分:秒:微秒): 00:00:06:411
优化算法: 通用全局优化算法(UGO1)
计算结束原因: 达到收敛判断标准
均方差(RMSE): 2.59320635116301
残差平方和(SSE): 134.494383594244
相关系数(R): 0.949540727213403
相关系数之平方(R^2): 0.901627592636958
修正R平方(Adj. R^2): 0.85408615799387
确定系数(DC): 0.76042613935766
F统计(F-Statistic): 15.4019567906444

参数                  最佳估算
--------------------        -------------
a        0.0084033309045955
k1        322363191667758
k3        0.00841397872855583

====== 结果输出 ======

文件: 数据文件-1
No        目标 y1        计算 y1        目标 y2        计算 y2
1        0        0        0        0
2        5.177        1.24474372221455        3.205        3.0849696839899
3        8.335        2.85633276190374        2.953        2.9829970207315
4        10.575        4.7961149954351        2.764        2.86025806208689
5        11.441        9.13217560988145        2.212        2.58589553043911
6        14.645        11.1416462946358        2.445        2.45874706242545
7        15.705        13.0523113176466        2.415        2.33785048383576
8        15.677        16.5964185923686        2.167        2.11359848858356
9        17.529        19.8005669461762        2.144        1.91085726047507
10        17.725        22.6973660206378        1.876        1.72756343725306
2楼2016-08-18 23:18:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyugiec

金虫 (正式写手)

引用回帖:
2楼: Originally posted by gooxin at 2016-08-18 23:18:23
1stopt7.0跑出来的结果,有问题站内我。请采纳。
==================
模型公式: y1 = (50/(a-k1))*(a*(1-exp(0-k1*t))-k1*(1-exp(0-a*t)))
          y1 = (50/(0.0084033309045955-322363191667758))*(0.008403 ...

k1值存在一定问题,每次拟合的结果都不一样,其他两个参数倒比较稳定。请问有什么办法吗?
3楼2016-08-22 09:39:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gooxin

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by zyugiec at 2016-08-22 09:39:43
k1值存在一定问题,每次拟合的结果都不一样,其他两个参数倒比较稳定。请问有什么办法吗?...

你的方程不是最简,存在过拟合现象。
但,化为最简后,理论上r2不会变,实际会降低

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

4楼2016-08-23 17:15:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyugiec

金虫 (正式写手)

送红花一朵
引用回帖:
4楼: Originally posted by gooxin at 2016-08-23 17:15:13
你的方程不是最简,存在过拟合现象。
但,化为最简后,理论上r2不会变,实际会降低...

如何化为最简?请告知,谢谢!
5楼2016-08-24 11:14:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gooxin

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by zyugiec at 2016-08-24 11:14:06
如何化为最简?请告知,谢谢!...

就是说把公式最简化,打开括号合并后减少参数

过拟合就是两个参数有运算关系,这样得不到唯一最优解。
6楼2016-08-24 13:34:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyugiec 的主题更新
信息提示
请填处理意见