MATLAB程序设计大作业题目:matlab在化工研究中的应用学院:化学工程学院专业:化学工艺学号:2012200440学生姓名:任少阳开设课程:matlab程序设计与应用Matlab在化工研究中的应用1概述在化工设计与分析、过程研究与开发、系统工程、模拟预测、优化和控制领域,通常要化工过程模拟化,用于尚未建立的或已建立的过程,既可用于过程的研究、开发和设计,也可用于评估及其运转情况、控制和改进。化工模拟关必须要建立数学模型,就是以质量平衡、热量平衡和动量平衡为基础并结合反应动力学而建立的模型方程式。MATLAB是美国MathWorks公司于80年代中期推出的一套高性能的数值计算和可视化软件。经过MathWorks公司的不断完善,MATLAB已经成为自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域的最常用的和最受欢迎的软件。MATLAB具有强大的扩展功能,使其在很多领域都能充分发挥其强大的作用。因此人们将MATLAB称之为继FORTRAN和C等高级语言之后的第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB是一种解释性语言,采用了工程技术的计算语言,几乎与数学表达方式相同,语言中的基本元素为矩阵,它提供了各种矩阵的运算和操作,并且具有符号计算、数字和文字统一处理、离线和在线计算功能;具有较强的绘图功能,计算结果和编程可视化;具有很强的开放性,针对不同的应用学科,都带有相应的可开发工具箱。自20世纪70年代晚期,cleveMoler基于uNPACK和EISPACK软件包的部分函数,用Fortran开发设计MATLAB初始版本以来,经过近30年的不断完善,由原来含有80个函数的矩阵计算工具⋯,发展到包含89个不同应用工具箱和功能模块,国内对MATLAB的应用研究,最早为张文乐等,而在化学化工领域的应用研究起步较晚,任佩林等首先用MAlAB编程计算换热管固有频率的传递矩阵。随着化学工业以及计算机技术的发展,通过建立过程机理模型并通过计算机数值模拟,以便对化工过程进行设计和分析、模型预测、优化和控制等。现阶段,可以用于数值计算的编程语言有VisualBasic6.0、CompacVisualFortan6.5、VisualC++和C++builder、MATLAB。尽管Fortran和C/C++程序执行效率很高,可以充分利用现有的代码资源,如NumericalRecipes和IMSL库,又可提高运行速度,并且可以生成具有标准用户界面的应用软件,但是在数值方面使用MATLAB语言编程更具有优势,因为Fortran和C/C++语言的内部函数、NumericalRecipes和IMSL库的算法函数都比较有限,且对编程能力要求较高,编程效率较低,而MATLAB得算法齐全,计算功能、图形可视化功能和符号运算都十分强大,也支持其他面向对象的高级语言的混合编程;所以,MATLAB作为一种方便、快捷的科学和工程计算语言,具有Fortran和C/C++等程序无法比拟的优越性。国内对MATLAB的应用研究,最早为张文乐等,而在化学化工领域的应用研究起步较晚,任佩林等首先用MATLAB编程计算换热管固有频率的传递矩阵。本文首先讨论MATLAB发展简史及其特点,而后综述近十年来,国内化学化工领域的应用情况,从它与其它语言的混合编程、与其它软件的集成、工具箱的开发与应用等方面等,并就以后如何应用提出建议。2MATLAB在化工研究中的应用2.1与Delphi的混合编程由于MATLAB是一种解释性的语言,运行效率低,并且在其环境下开发,应用程序大都不能脱离其运行环境。利用其它强大语言的功能,则可以弥补其处理问题时的缺陷,充分发挥各自的优势。杨敏等以MATLAB为自动化服务器,以Delphi语言编写的程序为自动化控制器,并通过Delphi的0LEvariant类型引用MATLAB的神经网络工具箱类型库,达到MATLAB和Delphi混合编程的目的,实现了炼钢过程氧化期终态的准确预报,并提供详细源代码及说明。2.2与VisualBasic的混合编程付孝锦等引充分利用VisualBasic的界面设计功能和MATLAB的强大计算功能,通过在VB中调用MAILAB的Activex的方法,开发了化学反应方程式配平软件。张云鹏等针对VB数值计算和图形处理能力不足,结合MATLAB的MatrixVB数学函数库,设计出大学化学实验数据处理系统。在数值计算和图形处理方面效果良好。2.3与c/C++的混合编程赵立杰等为了检测和诊断聚氯乙烯的生产过程,在原有软、硬件基础S上,采用C,VB和MATLAB语言混合编程,基于最小窗口MPCA非线性多模型建模和监视方法,设计出用于挖掘数据中的潜在信息,解决批次过程在线监视和诊断问题的软件。实际应用于某化工过程,能早期预报和诊断异常情况,为监视和评价过程性能提供可靠的依据,提高过程操作的安全性。3.1MATLAB在化工计算上的应用化学工程中的计算问题一般比较复杂,其操作的数据对象通常是数组,具体计算涉及插值、求积分、参数拟合、解常微分和偏微分方程、解线性和非线性方程等。解这些问题的一般做法是:首先编写或查找相应的FORTRAN、C和BASIC等传统的计算语言具有一定的编程能力,调试过程中花费很多时间和精力。3.1.1非线性最小二乘拟合用非线性最小二乘法从实验的二元物系气液平衡实验数据拟合Wilson方程参数。温度:t=60℃,物系:甲醇(1)、水(2)。实验数据见下表1。表1甲醇——水等温实验数据液相组成x1mol气相组成y1mol总压mmHg0.03430.2106183.640.04460.2690196.920.05940.3312211.650.07930.3920228.700.10930.4714254.750.16340.5698291.740.19610.5989309.600.27050.6699353.180.36700.7462395.790.46190.7889431.10056650.8223466.950.75820.9010538.25查得Antonie常数见表2。表2甲醇——水Antonie常数常数甲醇水C17.878638.10765C21473.111750.268C3230.0235.0解:由吉布斯自由能和活度系数知识推得,在对恒温下二元物系实验数据的拟合中,可用式(1)-式(4)中的式(4)作为目标函数。(GE/(RT))实验=x1*lnγ1实验+x2*lnγ2实验(1)(GE/(RT))计算=x1*lnγ1计算+x2*lnγ2计算(2)(GE/(RT))实验-GE/(RT))计算=x1*[lnγ1实验+ln(x1+Λ12*x2)]+x2*[lnγ2实验+ln(x2+Λ21*x1)](3)F1=1mj{x1*[lnγ1实验+ln(x1+Λ12*x2)]+x2*[lnγ2实验+ln(x2+Λ21*x1)]}2(4)在求解lnγ1实验和lnγ2实验时可将实验数据x1,y1,p的数组当作变量看待,即将x1=[0.03430.04460.05940.07930.10930.16340.19610.27050.36700.46190.56650.7582]整体当作变量看待。由平衡常数公式Ki=γiPis/P得,γi=KiP/Pis,所以,可以计算得到γ1实验=[1.79141.89331.97491.79611.74561.61631.50221.38961.2785116981.07691.0162]γ2实验=[1.00431.00681.00691.01041.01151.00371.03351.06921.06171.13151.28071.4744]在进行拟合Λ12和Λ21时,只要将目标函数式(4)编写成函数文件,再调用LEASTSQ这个最小拟合函数,即得到结果Λ12=0.6734,Λ21=1.0845。3.1.2解非线性方程(组)例:简单蒸馏时,某时刻釜残液量与低沸点组分x之间有如下的关系式:lnF0/F=1/(α-1)[ln(x0/x)+αln(1-x)/(1-x0)],对于苯—甲苯物系,相对挥发度α=2.5,开始时物系中含苯60%,含甲苯40%。若蒸馏至原加料量的一半时,试求残液中苯的含量。解:按题意将数值代入方程,得:2.5ln(1-x)-ln(x)+0.7402=0运用MATLAB的函数运算功能将方程写为f=’2.5*log(1-x)-log(x)+’0.7402并调用SOLVE函数求得此方程的精确解为x=0.45650773.2MATLAB在化工实验数据处理中的应用化学工程与工艺专业实验是初步了解、学习和掌握化学工程与工艺科学实验研究方法的一个重要的实践性环节。专业实验不同于基础实验,其目的不仅仅是为了验证一个原理、观察一种现象或是寻求一个普遍适用的规律,而应当是为了有针对性地解决一个具有明确工业背景的化学工程与工艺问题。化工实验的特点流程较长,规模较大,数据处理也较为复杂。因此依靠计算机处理数据会使繁琐的数据处理过程变得简单快捷,大大提高工作效率。数据处理是每一个化学工程实验必不可少的步骤,也是至关重要的一个步骤。通过实验可以建立过程模型、分析工艺技术的可行条件。但是化工实验数据的处理往往并不是那么简单,它需要通过复杂的数学计算,若仅仅依靠手工计算则需要花费大量的时间,而且化工实验数据的处理量很大、重现性很高,因此应用计算机来处理实验数据可以大大提高工作效率。化学工程与工艺专业是一个以实验为基础的专业学科。实验的目的是通过有限的实验点去寻找某一对象或某一过程中各参数之间的定量关系,从而揭示某化工过程所遵循的客观规律。由于人力、物力、时间等条件的限制,任何实验所能完成的实验点都是有限的,如何根据这些有限的实验点归纳出各参数之间的关系,便是实验数据的处理问题。由于化工过程的复杂性,实验过程中各参数之间的关系往往是非线性的,数据处理或数据拟合的工作量往往比较大,且计算过程也比较繁琐。若能利用计算机进行数据处理,不仅处理结果的准确度很高,而且还会省下很多不必浪费的人力和时间,大大提高了工作效率。3.2.1处理实验数据的程序由于化工实验有很多,而且每一个实验数据的处理的步骤、公式都不一样,所以很难用一个程序来描述。但是,每一个实验都有类似之处,因此每一个程序都可以用下图描述:3.2.1.1数据的输入数据的输入是利用提示输入函数input来实现的,具体的方式是(以输入温度为例):t—input(‘请输入工作温度(摄氏度):‘);而程序中所用到的数组则都是以矩阵的形式输入。3.2.1.2数据处理与作图在科学研究与工程实践中,常常测量得到许多离散的实验数据和工业数据,这些数据通常需要经过各种拟合方法以得到连续光滑的曲线。其中,最常用的就是最小二乘法曲线拟合。4化工计算的应用4.1数值积分(1)数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。这样求定积分问题就分解为求和问题。10变步长辛普生法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace)其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。数据输入基本数据库数据处理输出数据20牛顿-柯特斯法基于牛顿-柯特斯法,MATLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace)其中参数的含义和qua