当前位置:编程学习 > Matlab >>

Matlab 编程绘制二元相图

毕业设计需要用Matlab 编程来绘制相图,不太会用Matlab ,请会用的人帮忙编写一个程序。 我的计算式如下: k=R*T; t=T-273.15; dGb=dHb*(1-T/Tb); dGc=dHc*(1-T/Tc); xbl=(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k)); xbs=exp(dGb/k)*(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k)); 其中R为气体常数,R=8.314472J/(K·mol),dHb,dHc,Tb,Tc这四个是二元系的参数,只要二元系确定,这四个便是定值。 T为热力学温度,t为摄氏温度,xbl和xbs分别是液相和固相中B物质的浓度,对于每一个温度T,浓度xbl和xbs都是确定的。 要求编写一个程序求出各温度T下的浓度xbl和xbs,并且绘制出图形,以温度t为纵轴,浓度xbl和xbs为横轴,绘制出图象,即使用 plot(xbl,t,xbl,t) 绘图。 我自己编写的程序,运行有问题,源代码如下: function[]=Thermo() T=500:50:1000 R=8.314472 dHb=11000 dHc=20080 Tb=546 Tc=903 k=R*T; t=T-273.15; dGb=dHb*(1-T/Tb); dGc=dHc*(1-T/Tc); %%plot(dGb,t,dGc,t,k,T) xbl=(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k)); xbs=exp(dGb/k)*(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k)); %%plot(dGb,t,dGc,t) plot(xbl,t,xbl,t) 谁能帮我解决,我再加200分,我百度的积分多的是。
追问:你的程序编写得很好,看来还是.的问题,我意识到这个问题之后,在程序里面加了点,计算成功了,你还在程序里面添加了横轴和纵轴的标签,这点很好。我想要做成一个可以移植到其他计算机上运行的程序,要不安装Matlab 就可以运行的,需要怎么做?还有,我要做很多不同二元系的相图,也就是说dHb、dHc、Tb和Tc都是不同的,而且温度T的范围也不同,想要从一个文本文件读入dHb、dHc、Tb和Tc这四个值,这要怎么做?温度范围怎么设定?赋值出现错误。比如说我的输入文件为H-t.txt,文件内容如下:
"11000 20080 546 903"
这是某二元系热力学数据,分别是dHb、dHc、Tb和Tc的值。赋值语句能不能完整地写出来?我用过textscan,结果提示说什么必须是double 类型,赋值不成功。
另外,转换成C/C++,会不会很麻烦?能运行不?我之前已经用VC编写好了这个程序的,苦于不会用VC画图。还有,我要的是在Windows 下运行的Windows 窗口应用程序,我只会编写命令行程序。你的程序运行还是有问题,这个是另存的图片:算了吧,我自己已经编写出来了,图形已经绘制出来了,就是还有一些需要完善的,你就别出来骗人了!!!请自动走开!!!
答案:T=500:50:1000;
R=8.314472;
dHb=11000;
dHc=20080;
Tb=546;
Tc=903;
k=R*T;
t=T-273.15;
dGb=dHb*(1-T/Tb);
dGc=dHc*(1-T/Tc);
%%plot(dGb,t,dGc,t,k,T)
xbl=(1-exp(dGc./k))./(exp(dGb./k)-exp(dGc./k));
xbs=exp(dGb./k).*(1-exp(dGc./k))./(exp(dGb./k)-exp(dGc./k));
%%plot(dGb,t,dGc,t)
plot(xbl,T,'b-');
hold on;
plot(xbs,T,'r-');
xlabel('B物质浓度'),ylabel('T');
legend('液相浓度xbl','固相浓度xbs');
其他:不是特别清楚你的意图,你运行一下下面的试试吧
function[]=run2()
T=500:50:1000
R=8.314472
dHb=11000
dHc=20080
Tb=546
Tc=903
k=R*T;
t=T-273.15;
dGb=dHb*(1-T/Tb);
dGc=dHc*(1-T/Tc);
%%plot(dGb,t,dGc,t,k,T)
xbl=(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k));
xbs=exp(dGb/k)*(1-exp(dGc/k))/(exp(dGb/k)-exp(dGc/k));
%%plot(dGb,t,dGc,t)
figure,hold on
plot(xbl,t,'r*')
plot(xbs,t,'b*')
hold off 我是 
收费
专业
代做 

上一个:帮忙看一下这个matlab程序哪里出问题了
下一个:matlab设计一个小程序,大家有什么好的建议?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,