1、晋 中 学 院本科毕业论文(设计)题 目 计算机在化学中的应用-利 用 MATLAB 求解化学计算题 院 系 化学化工学院 专 业 化 学 姓 名 学 号 0909111113 学习年限 2009 年 9 月至 2013 年 7 月指导教师 助教 申请学位 学士学位 2013 年 5 月 15 日 计算机在化学中的应用利用 MATLAB 求解化学计算题学生姓名: 指导教师: 摘 要:MATLAB 是由美国 Math works 公司发布的主要面对科学计算、可视化以及交互式程序设计计算环境。它能有效地解决数值线性代数、数值逼近、最优化等科学和工程问题。编制程序方便,求解化学计算题高效快速。本文分
2、别以结构、分析、化工三方面的典型例题,来说明 MATLAB 在化学中的应用。关键词:MATLAB;化学计算题;计算应用;结构;分析;化工Applications of MATLAB in ChemistryUse MATLAB Solving Chemical Calculation ProblemsAuthors Name:Lijiajia Tutor: DongtaoABSTRACT: MATLAB, released by the America Mathwoks Company, is the computing environment mainly in the face of sc
3、ientific computing, visualization and interactive programming. It can efficiently solve problems in science and engineering such as numerical linear algebra, digital approximation, and optimization. It also has characters of convenient programming and efficiently and quickly solving chemical calcula
4、tion problems. This paper will explain MATLAB in the application of chemistry by referencing typical examples about structural chemistry, analytical chemistry and chemical industry.KEYWORDS:MATLAB ;Chemical calculation problems;Computing applications;Structural chemistry;Analytical chemistry ;Chemic
5、al industry目 录1 MATLAB 简介 .11.1 MATLAB 的简要发展 .11.2 MATLAB 的功能介绍 .12 MATLAB 在化学中的应用 .22.1 MATLAB 在结构化学计算中的应用 休克尔分子轨道的计算 .22.2 MATLAB 在分析化学中的应用 计算溶液的 pH.32.2.1 一元强酸(碱)中 H+的计算 .32.2.2 一元弱酸(碱)溶液 pH 的计算 .42.3 MATLAB 在化工计算中的应用 解非线性方程(组) .62.3.1 解非线性方程 .62.3.2 解非线性方程组 .73 结语 .8注释 .9参考文献 .10致 谢 .1101 MALAB
6、简介1.1 MATLAB 的发展历史MATLAB 是 Math works 公司推出的适用于科学和工程计算的数学软件系统,MATLAB 即 Matrix(矩阵)和 Laboratory(实验室)的简称,雏形是 Cleve Moler 教授为学生编写的用于 Linspack 和 Eispack 的接口程序。1984 年由Little、Moler、Steve Bangert 合作成立了的 Math Works 公司正式把 MATLAB 推向市场。自此,MATLAB 各种版本相继问世。由于其功能十分简单,而且应用很简便,吸引了大批的使用者,经过几年的校际流传,在后来几位合作者的推动之下,MATLAB
7、 逐渐趋于成熟。近几年,已成为国内外数值软件的主流。 (注:本文中采用的版本为 MATLAB 7.0。 )1.2 MATLAB 的功能介绍MATLAB 是一款商业数学软件,是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。它的基本数据单位是矩阵,并且,它的指令表达式与数学中常用的形式十分相似,所以用它解决问题比其他计算机语言简捷的多。它有着高效的数值计算及符号计算功能;具有完备的图形处理功能,实现计算结果和编程的可视化;友好的用户界面剂接近数学表达式的自然化语言更易于学习和掌握;丰富的应用工具箱,为使用者提供了大量方便使用的处理工具。MATLAB 系统由 MATL
8、AB 开发环境、MATLAB 数学数据库、MATLAB 语言、MATLAB 图形处理系统和 MATLAB 应用程序接口五大部分构成。它集合了大量计算算法,拥有 600 多个数学运算函数,可实现各种计算功能。有简单的矩阵、特征向量函数,还有复杂的傅里叶变换函数。可以利用 MATLAB 解决矩阵运算、线性方程的求解、工程中的优化等问题,并且它将诸多功能集成在一个易于使用的视窗环境中,为科学计算、工程研究以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,代表了当今国际科学计算软件的先进水平。12 MATLAB 在化学中的应用2.1
9、 MATLAB 在结构化学计算中的应用-休克尔分子轨道的计算休克尔分子轨道法即 HMO 法,1931 年由 E.Hckel 提出。HMO 法是个经验性的处理共轭分子的结构和性质的近似方法。下面以一个例子来说明 MATLAB 在求解线性方程时的步骤。例 1:用 HMO 法求丙二烯双自由基的 型分子轨道及相应的能量 2。解:(1)使用一般方法的解题过程。先写出简化的久期方程, 12300cE用 除式中各项并另 ,得x1230xc其中久期行列式为零,则得到 10x解之,得 0,2x将 值代入 ,得xE123,2.E=那么 、 、 就是相应的分子轨道的能量。1E23(2)如果利用 MATLAB 程序来
10、求解这道题,首先用 syms 函数定义一个变量 ,x然后把要求的矩阵命令输进去,最后用 solve 函数求出。其具体的求解编程如下所示:2 syms x D=x 1 0; 1 x 1; 0 1 xD = x, 1, 01, x, 10, 1, x d=det (D)d =x3-2*x solve (x3-2*x=0)ans =02 (1/2)-2 (1/2) 即得到 0,2x由于 ,于是,便得到了各个分子轨道的能量Ex123,2.E=结论:比较比较两种方法可以看出,手动计算很费时,而且计算量大;但是如果利用MATLAB 计算此行列式,只要输入相应的命令,便可很快求解出来,可见,MATLAB 在
11、求解化学中涉及到行列式的计算题中有其优势:计算量小,计算结果准而快。2.2 MATLAB 在分析化学中的应用计算溶液的 pH2.2.1 一元强酸(碱)中 的计算H以浓度为 ( )的 溶液为例进行讨论。当酸的解离反应和水的质子c/molLCl自递反应处于平衡时,溶液中的 来源于酸和水的解离,其溶度等于 和 的 ClOH3浓度之和。因此有 4 /WHClOcKH即 20WcK解这个方程就可以得到 的浓度。用 MATLAB 中的 solve 函数可以解这个二元一次方程。以一个具体例子来说明。例 2:求 0.05 和 溶液的 4。/molL-71.0/molLHClp解:通过以上讨论可以用 MATLA
12、B 设计程序来解决这道题。(1) 、计算浓度为 0.05 的 溶液的 ,具体程序如下 5:/llkw=1e-14;c=0.05;syms xf=solve(x2-c*x-kw);ph=eval(real(f);f=find(ph0);ph=ph(f);pH=-log10(ph);运行结果为 pH =1.3010而如果采用最简式计算,计算结果是 =1.30。pH(2) 、计算浓度为 的 溶液的 ,只要把程序中“ ”-71.0/molLCl 0.5c改写为“ ”,就可以得到答案,运行结果为cepH =6.7910比计算出的 =6.80 更准确,精确度更高。pH2.2.2 一元弱酸(碱)溶液 pH
13、的计算浓度为 (mol/L)的一元弱酸 HA 溶液的 PBE 为:cawHAKHAO化简后,为 2aw4其中, ,代入上式,整理后得到()aHAcK32a wawcHK这是一个关于 的一元三次方程,可以用 MATLAB 中的 solve 函数解决,下面以例子来说明例 3:计算 溶液的 pH,已知 。 40.1/molLF47.210a解:建立一个 M 文件,在此文件中编辑程序,程序如下kw=1.0e-14;c=0.10;ka=7.2e-4;syms xf=solve(x3+ka*x2-(ka*c+kw)*x-ka*kw);ph=eval(real(f);f=find(ph0);ph=ph(f)
14、;pH=-log10(ph)然后保存并运行程序,得到结果pH =2.0898如果是手动计算,用最简式计算得结果是 pH=2.09。例 4:计算 溶液的 pH,已知 的 。4141.0molLNHCl 3NH51.80bK解:因为已知的是 的 ,所以先得求出 的 。程序中得有求 的一步。3bK4aa建立一个 M 文件,在打开的 M 文件中编辑如下程序:kw=1.0e-14;kb=1.8e-5;c=1.0e-4;ka=kw/kb;syms xf=solve(x3+ka*x2-(ka*c+kw)*x-ka*kw);ph=eval(real(f);f=find(ph0);ph=ph(f);pH=-lo
15、g10(ph)保存并运行程序,得到结果pH =56.5921这样算下来,结果可以保留四位有效数字,准确度高,而且计算速度快。结论:使用 MATLAB 计算化学中的计算题有其独有的优点。从计算速度来说,它比我们平常机械的计算快了许多,仅仅一个一元三次方程就能花费大量的时间和精力,而用 MATLAB 中的 solve 函数就可以轻松解决一元高次方程,省去了大量时间;从计算精度来说,其优点也是显而易见的,如果用手动计算,一般结果保留两位数就可以了,准确度不高,如果采用 MATLAB 来计算,程序简单,有效数字位数多,精确度和准确度都很高。另外,利用 MATLAB 不仅可以计算一元强酸(碱)溶液和一元
16、弱酸(碱)溶液的 pH,而且可以计算多元酸碱溶液的 pH 值以及缓冲溶液的 pH 值,在这些应用中,其优点是很明显的,详见参考文献5和6 。2.3 MATLAB 在化工计算中的应用- 解非线性方程(组)2.3.1 解非线性方程例 57:简单蒸馏时,某时刻釜残液量与低沸点组分 之间有如下关系式:x00011lnlnlF对于苯-甲苯物系,相对挥发度 =2.5,开始时物系中含苯 60%,含甲苯 40%。若蒸馏至原加料量的一半时,试求残液中苯的含量。解:按题意将数值代入方程,其中 , 。得:0.5F.6x011lnln2l.52. .整理后为 .l1l0.74x这个非线性方程可以用 MATLAB 中的 solve 函数来解决,在 command window中输入如下命令: syms x %定义一个未知数 f=solve(2.5*log(1-x)-log(x)+0.7402)键入回车,得到结果f =