24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1723  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

mushixilin

铜虫 (初入文坛)

[求助] 如何使用1stOpt进行三自变量三因变量的非线性拟合 已有2人参与

正在学习使用1stOpt,见到的示例都是只有单个因变量的非线性拟合。想要使用1stopt对三元液液相平衡的NRTL热力学数据进行拟合,由于出现三个因变量,不太确定如何编程。编写的程序如下,如不使用sharedmodel,可以得到结果,但不理想;如使用sharedmodel,软件无法计算。还望前辈可以给予一定指导。

Title "NRTL simulation";
//sharedmodel;
Parameters alpha[0,1],tau12,tau13,tau21,tau23,tau31,tau32;
Variables x1,x2,x3,y1,y2,y3;

ConstStr F12=exp(-alpha*tau12);
ConstStr F13=exp(-alpha*tau13);
ConstStr F21=exp(-alpha*tau21);
ConstStr F23=exp(-alpha*tau23);
ConstStr F31=exp(-alpha*tau31);
ConstStr F32=exp(-alpha*tau32);

ConstStr lngammax1=(x1*0*1+x2*tau21*F21+x3*tau31*F31)/(x1*1+x2*F21+x3*F31)+
         (x1*1/(x1*1+x2*F21+x3*F31)*(0-(x1*0*1+x2*tau21*F21+x3*tau31*F31)/(x1*1+x2*F21+x3*F31)))+
         (x2*F12/(x1*F12+x2*1+x3*F32)*(tau12-(x1*tau12*F12+x2*0*1+x3*tau32*F32)/(x1*F12+x2*0+x3*F32)))+
         (x3*F13/(x1*F12+x2*F23+x3*1)*(tau13-(x1*tau13*F13+x2*tau23*F23+x3*0*1)/(x1*F13+x2*F23+x3*1)));
ConstStr lngammax2=(x1*tau12*F12+x2*0*1+x3*tau32*F32)/(x1*F12+x2*0+x3*F32)+
         (x1*F21/(x1*1+x2*F21+x3*F31)*(tau21-(x1*0*1+x2*tau21*F21+x3*tau31*F31)/(x1*1+x2*F21+x3*F31)))+
         (x2*1/(x1*F12+x2*1+x3*F32)*(0-(x1*tau12*F12+x2*0*1+x3*tau32*F32)/(x1*F12+x2*0+x3*F32)))+
         (x3*F23/(x1*F12+x2*F23+x3*1)*(tau23-(x1*tau13*F13+x2*tau23*F23+x3*0*1)/(x1*F13+x2*F23+x3*1)));
ConstStr lngammax3=(x1*tau13*F13+x2*tau23*F23+x3*0*1)/(x1*F13+x2*F23+x3*1)+
         (x1*F31/(x1*1+x2*F21+x3*F31)*(tau31-(x1*0*1+x2*tau21*F21+x3*tau31*F31)/(x1*1+x2*F21+x3*F31)))+
         (x2*F32/(x1*F12+x2*1+x3*F32)*(tau32-(x1*tau12*F12+x2*0*1+x3*tau32*F32)/(x1*F12+x2*0+x3*F32)))+
         (x3*1/(x1*F12+x2*F23+x3*1)*(0-(x1*tau13*F13+x2*tau23*F23+x3*0*1)/(x1*F13+x2*F23+x3*1)));
         
ConstStr gammax1=exp(lngammax1);
ConstStr gammax2=exp(lngammax2);
ConstStr gammax3=exp(lngammax3);

ConstStr lngammay1=(y1*0*1+y2*tau21*F21+y3*tau31*F31)/(y1*1+y2*F21+y3*F31)+
         (y1*1/(y1*1+y2*F21+y3*F31)*(0-(y1*0*1+y2*tau21*F21+y3*tau31*F31)/(y1*1+y2*F21+y3*F31)))+
         (y2*F12/(y1*F12+y2*1+y3*F32)*(tau12-(y1*tau12*F12+y2*0*1+y3*tau32*F32)/(y1*F12+y2*0+y3*F32)))+
         (y3*F13/(y1*F12+y2*F23+y3*1)*(tau13-(y1*tau13*F13+y2*tau23*F23+y3*0*1)/(y1*F13+y2*F23+y3*1)));
ConstStr lngammay2=(y1*tau12*F12+y2*0*1+y3*tau32*F32)/(y1*F12+y2*0+y3*F32)+
         (y1*F21/(y1*1+y2*F21+y3*F31)*(tau21-(y1*0*1+y2*tau21*F21+y3*tau31*F31)/(y1*1+y2*F21+y3*F31)))+
         (y2*1/(y1*F12+y2*1+y3*F32)*(0-(y1*tau12*F12+y2*0*1+y3*tau32*F32)/(y1*F12+y2*0+y3*F32)))+
         (y3*F23/(y1*F12+y2*F23+y3*1)*(tau23-(y1*tau13*F13+y2*tau23*F23+y3*0*1)/(y1*F13+y2*F23+y3*1)));
ConstStr lngammay3=(y1*tau13*F13+y2*tau23*F23+y3*0*1)/(y1*F13+y2*F23+y3*1)+
         (y1*F31/(y1*1+y2*F21+y3*F31)*(tau31-(y1*0*1+y2*tau21*F21+y3*tau31*F31)/(y1*1+y2*F21+y3*F31)))+
         (y2*F32/(y1*F12+y2*1+y3*F32)*(tau32-(y1*tau12*F12+y2*0*1+y3*tau32*F32)/(y1*F12+y2*0+y3*F32)))+
         (y3*1/(y1*F12+y2*F23+y3*1)*(0-(y1*tau13*F13+y2*tau23*F23+y3*0*1)/(y1*F13+y2*F23+y3*1)));
         
ConstStr gammay1=exp(lngammay1);
ConstStr gammay2=exp(lngammay2);
ConstStr gammay3=exp(lngammay3);

Function y1=x1*gammax1/gammay1;
                y2=x2*gammax2/gammay2;
                y3=x3*gammax3/gammay3;

Data;
0.9561 0.0289 0.0150 0.0010 0.0011 0.9979
0.9101 0.0739 0.0160 0.0013 0.0028 0.9959
0.7982 0.1675 0.0343 0.0010 0.0071 0.9919
0.6980 0.2558 0.0462 0.0026 0.0164 0.9810
0.6461 0.2941 0.0598 0.0018 0.0253 0.9729
0.5686 0.3488 0.0826 0.0011 0.0404 0.9585
0.5194 0.3921 0.0885 0.0037 0.0525 0.9438
0.4919 0.4101 0.0980 0.0045 0.0583 0.9372
0.4664 0.4319 0.1017 0.0079 0.0688 0.9233
0.4497 0.4410 0.1093 0.0111 0.0736 0.9153
0.4374 0.4498 0.1128 0.0125 0.0884 0.8991
0.4189 0.4515 0.1296 0.0186 0.0942 0.8872
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mushixilin

铜虫 (初入文坛)

将代码进行了一定处理,仍然提示Fatal: Line too long (more than 1023 characters),Compile failed, check your program codes please!。是因为最后的公式过于复杂吗?

Title "NRTL simulation";
sharedmodel;
Parameters alpha[0,1],t12,t13,t21,t23,t31,t32;
Variables x1,x2,x3,y1,y2,y3;
ConstStr G12=exp(-alpha*t12),
         G13=exp(-alpha*t13),
         G21=exp(-alpha*t21),
         G23=exp(-alpha*t23),
         G31=exp(-alpha*t31),
         G32=exp(-alpha*t32),
         a=(x2*t21*G21+x3*t31*G31)/(x1+x2*G21+x3*G31),
         b=(x1*t12*G12+x3*t32*G32)/(x1*G12+x2+x3*G32),
         c=(x1*t13*G13+x2*t23*G23)/(x1*G13+x2*G23+x3),
         d=x1/(x1+x2*G21+x3*G31),
         e=x2/(x1*G12+x2+x3*G32),
         f=x3/(x1*G13+x2*G23+x3),
         j=(y2*t21*G21+y3*t31*G31)/(y1+y2*G21+y3*G31),
         k=(y1*t12*G12+y3*t32*G32)/(y1*G12+y2+y3*G32),
         l=(y1*t13*G13+y2*t23*G23)/(y1*G13+y2*G23+y3),
         m=y1/(y1+y2*G21+y3*G31),
         n=y2/(y1*G12+y2+y3*G32),
         o=y3/(y1*G13+y2*G23+y3);
Conststr lngammax1=a-d*a+e*G12*(t12-b)+f*G13*(t13-c),
         lngammax2=b+d*G12*(t21-a)-e*b+f*G23*(t23-c),
         lngammax3=c+d*G31*(t31-a)+e*G32*(t32-b)-f*c,
         lngammay1=j-m*j+n*G12*(t12-k)+o*G13*(t13-l),
         lngammay2=k+m*G12*(t21-j)-n*k+o*G23*(t23-l),
         lngammay3=l+m*G31*(t31-j)+n*G32*(t32-k)-o*l;
Conststr gammax1=exp(lngammax1),
         gammax2=exp(lngammax2),
         gammax3=exp(lngammax3),
         gammay1=exp(lngammay1),
         gammay2=exp(lngammay2),
         gammay3=exp(lngammay3);
Function y1=x1*gammax1/gammay1;
         y2=x2*gammax2/gammay2;
         y3=x3*gammax3/gammay3;
Data;
0.9561 0.0289 0.0150 0.0010 0.0011 0.9979
0.9101 0.0739 0.0160 0.0013 0.0028 0.9959
0.7982 0.1675 0.0343 0.0010 0.0071 0.9919
0.6980 0.2558 0.0462 0.0026 0.0164 0.9810
0.6461 0.2941 0.0598 0.0018 0.0253 0.9729
0.5686 0.3488 0.0826 0.0011 0.0404 0.9585
0.5194 0.3921 0.0885 0.0037 0.0525 0.9438
0.4919 0.4101 0.0980 0.0045 0.0583 0.9372
0.4664 0.4319 0.1017 0.0079 0.0688 0.9233
0.4497 0.4410 0.1093 0.0111 0.0736 0.9153
0.4374 0.4498 0.1128 0.0125 0.0884 0.8991
0.4189 0.4515 0.1296 0.0186 0.0942 0.8872
4楼2017-02-18 16:20:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
mushixilin: 金币+15, ★★★很有帮助 2017-02-18 09:50:46
sharedmodel;可以实现多因子参数共享拟合,1.5的估计不行。

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

2楼2017-02-17 17:15:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mushixilin

铜虫 (初入文坛)

送红花一朵
引用回帖:
2楼: Originally posted by dingd at 2017-02-17 17:15:32
sharedmodel;可以实现多因子参数共享拟合,1.5的估计不行。

谢谢,得到大神的解答。在小木虫上看了很多类似的帖子,有提到1.5不可以使用sharedmodel,也有虫友说lib文件夹可以用,下载后使用了一下,发现1.5可以使用sharedmodel功能,可以计算较为简单的sharedmodel问题。但是对于我这个问题,可能由于代码太长,无法计算,提示如下:Fatal: Line too long (more than 1023 characters),Compile failed, check your program codes please!。
3楼2017-02-17 22:53:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lipenggg

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
mushixilin: 金币+5, ★★★很有帮助 2017-02-18 22:05:54
1.5版本太低了,即使能计算共享参数拟合,你的代码有点复杂,软件功能不够。
需要正版高版本软件来计算。

[ 发自手机版 http://muchong.com/3g ]

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

一团和气
5楼2017-02-18 18:09:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 268分085602化学工程调剂 +31 月照花林。 2026-04-09 31/1550 2026-04-12 23:37 by 学zh
[考研] 322求调剂 +6 123安康 2026-04-12 13/650 2026-04-12 15:51 by 123安康
[考研] 求调剂,262机械专硕 +8 嗯yyl 2026-04-08 8/400 2026-04-12 02:31 by 秋豆菜芽
[考研] 计算机22408 281分,求调剂 +7 17715607211 2026-04-06 7/350 2026-04-12 00:43 by xuxiang
[考研] 299求调剂 +8 ZVVZ13 2026-04-08 8/400 2026-04-12 00:40 by 蓝云思雨
[考研] 085410 273分调剂 +4 X1999 2026-04-09 4/200 2026-04-11 13:05 by pies112
[考研] 085410-273求调剂 +6 X1999 2026-04-10 6/300 2026-04-11 10:32 by Delta2012
[考研] 机械专硕270求调剂,接受跨专业 +12 老师看看我吧aba 2026-04-09 14/700 2026-04-11 10:21 by laoshidan
[考研] 281求调剂 +11 觉得好的吧 2026-04-10 11/550 2026-04-11 09:35 by 逆水乘风
[考研] 263能源动力专硕求调剂 +4 加大号饭盒袋 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[考研] 0858求调剂 5+5 Gky09300550, 2026-04-10 8/400 2026-04-10 19:13 by chemisry
[基金申请] 有爆料,一个青年教师卖房得400万,然后换了一个四青帽子 +9 babu2015 2026-04-08 9/450 2026-04-10 11:43 by 苏东坡二世
[论文投稿] 求助文献原文 10+3 18500821399 2026-04-08 3/150 2026-04-09 16:56 by 北京莱茵润色
[考研] 085400电子信息类(川大控制工程)求调剂可跨专业 求老师联系 +3 626776879 2026-04-08 3/150 2026-04-09 16:05 by 猪会飞
[考研] 材料工程322 +18 哈哈哈吼吼吼哈 2026-04-07 19/950 2026-04-09 10:44 by cymywx
[考研] 307求调剂 +3 Youth@@ 2026-04-07 3/150 2026-04-07 22:00 by hemengdong
[考研] 22408 调剂材料 +7 我叫ez 2026-04-06 8/400 2026-04-07 17:12 by 蓝云思雨
[考研] 22408 318分求调剂 +4 勤奋的小笼包 2026-04-06 6/300 2026-04-07 15:05 by 纸鹤555
[考研] 085100建筑学 寻求跨专业调剂 一志愿南大294分 校级省级国家级奖项若干 踏实肯干 +3 1021075758 2026-04-06 4/200 2026-04-07 09:23 by 蓝云思雨
[考研] 287分求调剂 有专利国奖一志愿哈工大085406 +6 白易辰 2026-04-06 7/350 2026-04-06 22:46 by 875465
信息提示
请填处理意见