您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > C++课程设计报告-精馏塔理论塔板数的计算
1C++课程设计报告精馏塔理论塔板数的计算化学化工学院高级工程人才实验班(化学)赵静冰学号15071101142目录(1)设计报告**************************3(2)摘要*****************************4(3)程序设计思路**********************5(4)流程框图**************************6(5)C语言原始程序********************15(6)程序运行结果**********************17(7)后记******************************18(8)参考文献**************************193二、设计报告1、撰写要求(1)C语言课程设计任务书;(2)目录;(3)摘要;(4)程序设计思路和流程框图;(5)C语言原始程序;(6)程序运行结果;(7)后记(程序调试过程出现问题的讨论)。2、印装和上交要求(1)设计报告要求采用A4纸双面打印,订书针装订。(2)将源程序按统一文件名100a-bc形式发给辅导老师4课程设计报告摘要:此次C++程序课程设计,是在给定的设计条件下,利用梯级图解法计算苯—甲苯精馏塔理论塔板数。第一个程序使用了直接计算法解方程组,计算出塔顶D和塔底W,使用最小二乘拟合法和高斯消元法求得相平衡方程,同时使用牛顿迭代的法求得q线方程与相平衡方程的交点以及q线方程与精馏段操作线方程等的交点,循环使用牛顿迭代法最后求得精馏塔理论塔板的数目和进料板的位置;在设计的过程中所需要的C++语言方法有:循环、选择、数组、绘图等的综合使用,最后完成整个设计过程。5程序设计思路:由于没有学习过化工原理方面的知识,所以初开始,对于陌生的专有名词感觉这次的设计很不好做,不知从何下手。后来老师给出了公式等推导原理,并在老师讲解后我才大概懂得题目的要求,参考了之前学过的课本和一些范例,再询问其他合作同学,我终于有了设计思路。我将整个程序设计过程分为两步,计算部分和作图部分,而计算又分为两个部分,程序一过程使用了直接计算法解方程组,计算出塔顶D和塔底W,程序二过程先利用高斯消元法求得相平衡方程,再利用牛顿迭代法求得精馏塔理论塔板数的过程。1、高斯函数:利用高斯主元素消去法可以求解平衡线方程中的系数及常数a0,a1,a2,a3。2、矩阵板块:我们在求解平衡线方程中的系数及常数a0,a1,a2,a3时,有一个问题,那就是矩阵的行数和列数不相同,不能完全照搬书上所说的高斯主元素,而是需要利用数据的拟合。我们可以用矩阵的转置与矩阵的乘法(参考实际程序),达到此目的。3、牛顿迭代法:通过翻阅资料,运用牛顿迭代法是求方程根,在所,先定义一下牛顿迭代法,然后再在所需要的地方调用一下,4、循环板块:数组可以解决数据庞大的问题,循环的过程中,输出其角标即可。采用的是do….while语句。C++设计流程图:6C++原始程序:程序一://求解方程组7#includeiostream.h#defineF46.61//F为处理量#defineXF0.45//XF为苯-甲苯混合液中苯的含量#defineXD0.996//XD为塔顶产品摩尔分率#defineXW0.0118//XW为塔底产品摩尔分率intmain(){doubleD=0,W=0;//D为塔顶,W为塔底D=(F*XF-F*XW)/(XD-XW);W=(F*XD-F*XF)/(XD-XW);coutD=DW=Wendl;return0;}程序二://求精馏段与提镏段方程,并求塔板数#includeiostream.h#includestdio.h#includeiomanip.h#includemath.h#includewindows.h#includedos.hdoubleDiedai(doublea,doubleb,doublec,doubled)//********迭代定义8{doublexn,xn1=0.45,f,f1;do{xn=xn1;f=xn*a+b*pow(xn,2)+c*pow(xn,3);//平衡方程f1=a+2*b*xn+3*c*pow(xn,2);//平衡方程求导xn1=xn-f/f1;}while(fabs(xn1-xn)=1e-6);returnxn1;}voidmain(){loop:system(cls);cout\t****苯-甲苯精馏塔理论塔板数的计算****endl;coutendl;coutendl;inti,j,k,n;doubleH[4][5],b[25][5],a[4],s,m,r;//********数据输入double9x[]={0,1,3,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,97,99,100},y[]={0,2.5,7.11,11.2,20.8,29.4,37.2,44.2,50.7,56.6,61.9,66.7,71.3,75.5,79.1,82.5,85.7,88.5,91.2,93.6,95.9,98,98.9,99.61,100},A,B,C,D;//A,B,C,D为函数的系数for(i=0;i25;i++){b[i][0]=1;b[i][1]=x[i]/100;b[i][2]=b[i][1]*b[i][1];b[i][3]=b[i][2]*b[i][1];b[i][4]=y[i]/100;}//**************求矩阵for(i=0;i4;i++){for(j=0;j5;j++){if(j4){10for(n=0,s=0;n25;n++)s+=b[n][i]*b[n][j];H[i][j]=s;}if(j==4){for(n=0,s=0;n25;n++)s+=b[n][i]*b[n][4];H[i][j]=s;}}}for(i=0;i3;i++)//********************求解{for(k=1;k4-i;k++){if(fabs(H[i][i])fabs(H[i+k][i])){for(j=0;j5;j++)11{r=H[i][j];H[i][j]=H[i+k][j];H[i+k][j]=r;}}}for(k=1;k4-i;k++){m=H[i+k][i]/H[i][i];for(j=i;j5;j++)H[i+k][j]=H[i+k][j]-m*H[i][j];`1}}for(i=3;i=0;i--)//************求三次函数的系数A,B,C,D12{s=0;for(j=3;ji;j--)s+=H[i][j]*a[j];a[i]=(H[i][4]-s)/H[i][i];}cout三次函数的系数分别为:endl;coutA=a[0]endl;coutB=a[1]endl;coutC=a[2]endl;coutD=a[3]endl;coutendl;i=0;j=0;intQ;doubleM=21.4048,G=46.61,K=25.2052,xf,xw,xd,ye,xe,Rmin,t,a0=a[0],a1=a[1],a2=a[2],a3=a[3],R,xn,xn1,f,f1,g,g1,xq,yq,xm,xm1,X[50],p,y1,y2,x0,x1,x2,e;doubleq=1;//进料热状态q的值为1coutendl;coutendl;cout请输入xf:;13cinxf;coutendl;cout请输入xd:;cinxd;coutendl;cout请输入xw:;cinxw;coutendl;xe=xf;ye=a0+a1*xe+a2*pow(xe,2)+a3*pow(xe,3);//平衡方程Rmin=(xd-ye)/(ye-xe);cout输入最小回流比前的系数t(t=1.1~2.0):;cint;coutendl;R=t*Rmin;xq=xf;yq=R*xq/(R+1)+xd/(R+1);coutxe=xesetw(5)ye=yeendl;coutendl;cout最小回流比为:setw(5)Rminendl;coutendl;cout回流比为:setw(5)Rendl;14coutendl;cout精馏操作线方程为:setw(5)y=R/(R+1)*x+xd/(R+1)endl;cout提馏操作线方程为:setw(5)y=(M*R+q*G)/(M*R+q*G-K)*x-K*xw/(M*R+q*G-K)endl;coutendl;coutxq=xqsetw(5)yq=yqendl;coutendl;coutendl;coutendl;X[1]=Diedai(a0-xd,a1,a2,a3);//牛顿迭代法求解i=1;do{i++;X[i]=Diedai(a0-R*X[i-1]/(R+1)-xd/(R+1),a1,a2,a3);}while(X[i]xq);Q=i;j=Q;cout进料板位置是:setw(5)Qendl;coutendl;coutendl;15coutendl;coutendl;do{j++;p=(X[j-1]-xq)*xw/(xw-xq)+(X[j-1]-xw)*yq/(xq-xw);X[j]=Diedai(a0-p,a1,a2,a3);}while(X[j]xw);cout理论塔板的数目是:jendl;coutendl;coutendl;}16(E)、程序的运行结果为:1718(F)、后记此次课程设计,我的收获颇多。这个学期的C++课程,我学习的不够扎实,而在这两个星期内,弥补了很多学习上的缺漏,不足。九月份我即将参加计算机二级考试,这次学习给了我很大的信心。我相信在我的继续努力下,一定能在C++学习上收获更多。但是,在这次学习设计的过程中我也遇到了不少问题,比如:1.了解了牛顿迭代法的意义,却不足道何时该用牛顿迭代法2.对指针定义模糊3.对循环结构掌握了不够扎实收获:1.自己主要负责的是牛顿迭代法的定义及运用其循环解方程,通过其他的同学大概了解了最小二乘法及高斯消元法2.通过老师讲解,了解了精馏原理和精馏的操作流程,对于进行物料衡算,操作线方程的计算以及理论塔板数的求法有了大致的概念。3.此次课程设计,我们的四人小组积极配合,一起设计了过程再各自着重负责自己的那部分设计。团队的力量是无穷的,我们在短期内完成了学习任务,而且每个人都收获了很多。体会:作为高级工程人才实验班的学生,我们在心底对自己的要求就很高。社会在迅速地进步着,我们必须积极追逐上其步伐,掌握先进的科技为自己的课程做准备。C++对我们的化工设计举足轻重,所以掌握这门技术是必要的。19参考资料化工原理课程设计.柴诚敬.天津:天津科学技术出版社化工原理(下册)姚玉英..天津:天津大学出版社陈鸣德.葛婉华,化工计算.北京:化学工业出版社汪绪安.胡乾定,化工应用数学.上海:上海交通大学出版社化工数学.周爱月.北京:化学工业出版社常用算法程序集.徐士良.北京:清华大学出版社
本文标题:C++课程设计报告-精馏塔理论塔板数的计算
链接地址:https://www.777doc.com/doc-5146155 .html