24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1015  |  回复: 1

cpwpeng

金虫 (小有名气)

[求助] 高等反应工程教程例题与习题 例1-2matlab程序 已有1人参与

function ChemEqui2
%最小自由能法计算甲烷水蒸气转化反应的化学平衡组成
% format long
%x(1):CH4物质的量;x(2):H2O物质的量;x(3):CO物质的量;x(4):CO2物质的量;
%x(5):H2物质的量;x(6):拉格朗日乘子1;x(7):拉格朗日乘子2;x(8):拉格朗日乘子3
x0=[0.10,0.7,1.2,0.3,6,5000,1500,180000];
% op=optimset('MaxFunEvals',100000);
x=fsolve(@equi2,x0);

function f=equi2(x)
f1=19.3*1000+8314*log(x(1)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+4*x(7);
f2= -192.6*1000+8314*log(x(2)/(x(1)+x(2)+x(3)+x(4)+x(5)))+2*x(7)+x(8);
f3=-200.6*1000+8314*log(x(3)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+x(8);
f4=-395.9*1000+8314*log(x(4)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+2*x(8);
f5=8314*log(x(5)/(x(1)+x(2)+x(3)+x(4)+x(5)))+2*x(7);
f6=x(1)+x(3)+x(4)-2;
f7=4*x(1)+2*x(2)+2*x(5)-14;
f8=x(3)+2*x(4)+x(2)-3;
f=[f1,f2,f3,f4,f5,f6,f7,f8];

按照教程上的算法,运行得到如下
fsolve stopped because the relative size of the current step is less than the
default value of the step size tolerance squared and the vector of function values
is near zero as measured by the default value of the function tolerance.
这个是初始值设置的问题还是求不出解?
回复此楼

» 猜你喜欢

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

tju1994820

铜虫 (初入文坛)


【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2017-09-21 22:07:46
我在matlab 2017里运行了上述的程序,没有问题,完全有解,而且求解出来的结果也合理。有一个警告是因为最后一步的步骤很小,程序怀疑可能函数在零点处有突变。不过从最后一步函数的值来看,最后结果为[-4.54747350886464e-12        0        0        5.82076609134674e-11        -1.36424205265939e-12        0        0        4.44089209850063e-16],很接近于零。另外求出来的解也有物理意义。

     你的matlab是哪个版本?在大概2007版之后,函数function就可以直接在matlab脚本script文件中定义。而高等反应工程中matlab代码是老版本,所以编写的代码都是以大的函数function写成的。此时函数文件既不能调用workspace里的变量,生成的变量也在函数返回时自动清除。要查看运行解的结果可以把代码改成如下(那个书上所有的源码都可以那么改):
%最小自由能法计算甲烷水蒸气转化反应的化学平衡组成
% format long
%x(1):CH4物质的量;x(2):H2O物质的量;x(3):CO物质的量;x(4):CO2物质的量;
%x(5):H2物质的量;x(6):拉格朗日乘子1;x(7):拉格朗日乘子2;x(8):拉格朗日乘子3
x0=[0.10,0.7,1.2,0.3,6,5000,1500,180000];
% op=optimset('MaxFunEvals',100000);
x=fsolve(@equi2,x0);

function f=equi2(x)
f1=19.3*1000+8314*log(x(1)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+4*x(7);
f2= -192.6*1000+8314*log(x(2)/(x(1)+x(2)+x(3)+x(4)+x(5)))+2*x(7)+x(8);
f3=-200.6*1000+8314*log(x(3)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+x(8);
f4=-395.9*1000+8314*log(x(4)/(x(1)+x(2)+x(3)+x(4)+x(5)))+x(6)+2*x(8);
f5=8314*log(x(5)/(x(1)+x(2)+x(3)+x(4)+x(5)))+2*x(7);
f6=x(1)+x(3)+x(4)-2;
f7=4*x(1)+2*x(2)+2*x(5)-14;
f8=x(3)+2*x(4)+x(2)-3;
f=[f1,f2,f3,f4,f5,f6,f7,f8];
end
2楼2017-09-21 16:53:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cpwpeng 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 271求调剂 +32 2261744733 2026-04-11 33/1650 2026-04-15 22:03 by noqvsozv
[考研] 291分调剂 +11 上岸小莹加油 2026-04-09 12/600 2026-04-15 21:55 by noqvsozv
[考研] 291求调剂 +7 关忆北. 2026-04-14 7/350 2026-04-15 14:39 by 黑科技花岗岩
[考研] 279学硕食品专业求调剂院校 20+6 孤独的狼爱吃羊 2026-04-12 28/1400 2026-04-14 15:44 by zs92450
[考研] 一志愿沪9,326求生物学调剂 +10 刘墨墨 2026-04-13 10/500 2026-04-14 15:16 by zs92450
[考研] 305求调剂 +8 玛卡巴卡boom 2026-04-11 8/400 2026-04-14 09:04 by pengliang8036
[考研] 考研求调剂 +12 子木呐 2026-04-12 13/650 2026-04-14 01:19 by 王珺璞
[考研] B区0809 ,数一英一,290 求调剂 +3 泠潍1111 2026-04-12 4/200 2026-04-13 20:35 by 学员JpLReM
[考研] 302求调剂 +10 易!? 2026-04-13 10/500 2026-04-13 19:04 by lbsjt
[考研] 290求调剂 +18 柯淮然 2026-04-12 20/1000 2026-04-13 12:56 by cyh—315
[考研] 0854调剂 +10 长弓傲 2026-04-11 11/550 2026-04-13 10:38 by wp06
[考研] 295分求调剂 +13 ?要上岸? 2026-04-10 13/650 2026-04-12 15:37 by laoshidan
[考研] 283求调剂 086004考英二数二 +17 那个噜子 2026-04-10 18/900 2026-04-11 16:27 by 明月此时有
[考研] 0854调剂 +8 950824he@ 2026-04-09 8/400 2026-04-11 10:11 by zhq0425
[考研] 22408 352分求调剂0854类 +4 努力的夏末 2026-04-09 4/200 2026-04-11 09:57 by zhq0425
[考研] 一志愿北理工298英一数二已上岸,感谢各位老师 +14 Reframe 2026-04-10 16/800 2026-04-10 23:07 by caotw2020
[考研] 0858求调剂 5+5 Gky09300550, 2026-04-10 8/400 2026-04-10 19:13 by chemisry
[考研] 298求调剂 +13 钉叮咚冬瓜 2026-04-09 13/650 2026-04-10 15:49 by jiajinhpu
[考研] 机械专368 有去处吗 +4 种大树 2026-04-10 4/200 2026-04-10 15:31 by jiajinhpu
[考研] 292求调剂 +9 笑笑袁 2026-04-09 9/450 2026-04-10 10:05 by LHGeng
信息提示
请填处理意见