tdl522 发表于 2013-4-6 09:00
求助改程序,也不把问题描述清楚!
啊啊,我错了,function N
%图解法确精馏塔理论版数
clear
clc
xD=0.97;xW=0.02;R=3;xF=0.44;q=1.31;alph=2.47;
x2=[0 0.5 1 1.5 5 6 7 8 9];
y2=feval(@vle,x2); 这边怎么改改啊
%绘制平衡曲线
plot(x2,y2,'*')
hold on
p=polyfit(x2,y2,3);
x1=[0:0.01:1];
y1=polyval(p,x1);
plot(x1,y1)
hold on
%绘制对角线
line([0;1],[0;1])
%绘制精馏段操作线
fplot(@recope,[0 xD],[],[],'r',R,xD),
hold on
%绘制进料线方程
fplot(@qline,[xF 1],[],[],'g',q,xD),
hold on
%求解精馏段操作线与进料线的交点
xc=fzero(@cross,0.5,optimset('fzero'),R,xD,q,xF);
yc=recope(xc,R,xD);
%绘制提馏段操作线
line([xc,xW],[yc,xW],'Color','k'),
%绘制阶梯
x0=xD;
y0=xD;
n=0;
while 1
n=n+1;
[x0,y0]=tri(x0,y0,R,xD,p,xc,yc,xW,n);
if x0<xW
break;
end
end
s=sprintf('理论板数为%d',n);
text(0.1,0.9,s);
xlim([0,1]),ylim([0,1]);
title('图解法确定精馏塔理论塔板数')
xlabel('x')
ylabel('y')
function y=vle(x)
y=2.47*x/(1+(2.47-1)*x);
function y=recope(x,R,xD)
y=R*x/(R+1)+xD/(R+1);
function y=qline(x,q,xF)
y=q*x/(q-1)-xF/(q-1);
function y=cross(x,R,xD,q,xF);
y=recope(x,R,xD)-qline(x,q,xF);
function y=vlei(x,p,yn)
y=polyval(p,x)-yn;
function [x,y]=tri(x0,y0,R,xD,p,xc,yc,xW,n)
x=fzero(@vlei,x0,optimset('fzero'),p,y0);
if x>xc
y=recope(x,R,xD);
else
y=yc+(yc-xW)*(x-xc)/(xc-xW);
end
line([x0,x,x],[y0,y0,y],'Color','m');
text(x,y0,int2str(n),'VerticalAlignment','bottom')