matlab在化工研究中应用.docx
- 文档编号:10278374
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:10
- 大小:56.88KB
matlab在化工研究中应用.docx
《matlab在化工研究中应用.docx》由会员分享,可在线阅读,更多相关《matlab在化工研究中应用.docx(10页珍藏版)》请在冰豆网上搜索。
matlab在化工研究中应用
MATLAB程序设计大作业
题目:
matlab在化工研究中的应用
学院:
化学项目学院
专业:
化学工艺
学号:
2018200440
学生姓名:
任少阳
开设课程:
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
总压mmHg
0.0343
0.2106
183.64
0.0446
0.2690
196.92
0.0594
0.3312
211.65
0.0793
0.3920
228.70
0.1093
0.4714
254.75
0.1634
0.5698
291.74
0.1961
0.5989
309.60
0.2705
0.6699
353.18
0.3670
0.7462
395.79
0.4619
0.7889
431.10
05665
0.8223
466.95
0.7582
0.9010
538.25
查得Antonie常数见表2。
表2甲醇——水Antonie常数
常数
甲醇
水
C1
7.87863
8.10765
C2
1473.11
1750.268
C3
230.0
235.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=
{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.4565077
3.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>
其中参数的含义和quad函数相似,只是tol的缺省值取10-6。
该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。
30被积函数由一个表格定义
在MATLAB中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y>函数。
其中向量X,Y定义函数关系Y=f(X>。
(2>二重定积分的数值求解
使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。
该函数的调用格式为:
I=dblquad(f,a,b,c,d,tol,trace>
该函数求f(x,y>在[a,b]×[c,d]区域上的二重定积分。
参数tol,trace的用法函数quad完全相同。
4.2数值微分
在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为:
DX=diff(X>:
计算向量X的向前差分,DX(i>=X(i+1>-X(i>,i=1,2,…,n-1。
DX=diff(X,n>:
计算X的n阶向前差分。
例如,diff(X,2>=diff(diff(X>>。
DX=diff(A,n,dim>:
计算矩阵A的n阶差分,dim=1时(缺省状态>,按列计算差分;dim=2,按行计算差分。
4.3方程组求解
(1)线性方程组求解
10.利用左除运算符的直接解法
对于线性方程组Ax=b,可以利用左除运算符“\”求解:
x=A\b
20.利用矩阵的分解求解线性方程组
矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。
常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。
30.迭代解法
迭代解法非常适合求解大型系数矩阵的方程组。
在数值分析中,迭代解法主要包括Jacobi迭代法、Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。
(2>单变量非线性方程求解
在MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根。
该函数的调用格式为:
z=fzero('fname',x0,tol,trace>
其中fname是待求根的函数文件名,x0为搜索的起点。
一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。
tol控制结果的相对精度,缺省时取tol=eps,trace指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。
(3>非线性方程组的求解
对于非线性方程组F(X>=0,用fsolve函数求其数值解。
fsolve函数的调用格式为:
X=fsolve('fun',X0,option>
其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工具箱的选项设定。
最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来。
如果想改变其中某个选项,则可以调用optimset(>函数来完成。
例如,Display选项决定函数调用时中间结果的显示方式,其中‘off’为不显示,‘iter’表示每步都显示,‘final’只显示最终结果。
optimset(‘Display’,‘off’>将设定Display选项为‘off’。
5小结
在化学项目与工艺实验中用Matlab软件处理实验数据是很有必要的。
每一次实验都有大量的数据要处理,我们只要处理自己的原始数据,但教师在批改时就要把我们所有的实验数据都要计算,这个工作量是很大的。
有了数据处理程序,教师只需要输入原始数据,运行程序后,就可了解学生的实验是否做得好、实验数据处理结果是否准确,这就可以节省很多的时间。
在实际项目中,需要处理的数据更多,计算公式更加复杂,有时为了导出计算公式,还需要建立复杂的数学模型,手工计算基本是不可能完成的。
因此,把Matlab软件应用到化学项目与工艺实验中进行实验数据的处理是十分必要的。
MATIAB在国内化学化工领域的应用研究起步较晚,大多集中在计算、模拟以及化学信息学方面,且处于探索阶段,随着应用研究的深入,除继续在计算、模拟等方面的应用外,在以下方面的应用研究有待加强:
(1>在以前工作的基础上,在解决化工过程的设计、反应器的设计、化工生产的调度、产品设计、配方设计以及产品的配送等问题上能够发挥作用。
(2>综合利用各种丁具箱,如将数据库工具箱和统计工具箱结合使用,处理海量的化合物数据更有效,揭示蕴含的规律。
(3>结合MATIAB强大的计算与其它高级语言设计的灵活性,编制出能够脱离MATLAB环境的化学、化工计算、模拟以及教案的专用软件,克服MATIAB语言的解释性,速度慢,且离不开MATIAB环境,随着MATLAB的发展,对系统的要求越来越高,价格越来越昂贵,如何才有利于在同内推广。
(4>MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,应用于化工领域的“三传一反”的计算,包在化工管路设计型计算,工艺设计计算、化工热力学以及模拟和优化化工各种的实验及工艺流程。
在化工计算较其它高级编程语言,MATLAB有很多优点,其编程语言规则简单,所提供的操作和功能函数指令就是一些简单的英文单词,容易掌握使用。
MATLAB在国内化学化工领域的应用研究起步较晚,大多集中在计算、模拟以及化学信息学方而,且处于探索阶段,随着应用研究的深入,在以前工作的基础上,在解决化工过程的设计等问题开发新一代化工领域的工具箱,与其它高级语言设计结合,编制出功能强大,专业性更强的工业设计、实验模拟优化以及教案的专用软件,克服MATIAB语言的局限性,更好推广应用MATLAB基础上开发的化工软件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 化工 研究 应用