化工计算机数据与图形处理PPT优秀课件.ppt
第1页,本讲稿共56页本章主要内容本章主要内容2.1 EXCEL的迭代用法2.2 逐步逼近法解方程2.3 Newton-Raphson法解方程2.4 单变量求解解方程2.5 求微分方程数值解注:每一种方法讲完,会找同学上台操作。第2页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法1.EXCEL迭代:A2=F(A1)或 B1=F(A1)F(A1)为含引用单元格A1的公式,地址为相对引用。向下或向右拖曳填充柄时,EXCEL将自动更新每一步。即:A3=F(A2),A4=F(A3),C1=F(B1),D1=F(C1),一般是向下拖曳。第3页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法2.循环引用 公式引用自己所在的单元格:A1=F(A1)无论是直接引用还是间接引用。只要打开的工作簿中有一个包含循环引用,Excel 都将无法自动计算所有打开的工作簿。第4页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法2.循环引用 但有些化工计算需要用到循环引用,计算此类公式时,EXCEL必须使用前一次迭代的结果计算循环引用中的每个单元格。使用循环引用的过程如下:a)打开“工具”菜单,选择其中的“选项”指令。第5页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法2.循环引用b)在“选项”对话框中,选择“重新计算”标签。c)选“迭代计算”,在此设置循环引用时最多引用次数。EXCEL默认的最多迭代次数是100次,最大误差0.001。第6页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法3.循环引用举例:计算弱酸氢离子浓度 弱酸解离平衡:由此得:Ka是酸解离常数,C是总酸浓度。第7页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法3.计算弱酸氢离子浓度 上式为一元二次方程,有现成求解公式,用“循环引用”也可以方便获解。例:已知有一0.2000mol/L的二氯乙酸(HAD)溶液,其中HAD的解离常数为0.050。用循环引用求其氢离子浓度。第8页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法3.计算弱酸氢离子浓度 具体求解:1)打开“工具”“选项”“重新计算”,选中“迭代计算”,在“最大误差”栏内填入1E-12。2)A1、B1、C1单元格分别写入:HAD、Ka、5.0E-2第9页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法3.计算弱酸氢离子浓度 具体求解:3)A2、B2、C2单元格分别写入:HAD(始值)、HAD(终值)、H+.4)A3输入数值:0.2000,B3输入公式:A3-C3,C3输入公式:SQRT($C$1*(A3-C3)。第10页,本讲稿共56页2.1 EXCEL2.1 EXCEL的迭代用法的迭代用法3.计算弱酸氢离子浓度第11页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程1.1.原理原理 对于一元方程F(x)=0,可以在工作表上用减小x取值间隔的办法逐步逼近准确解。其原理是缩小使函数yF(x)变号的x区间,从而找到一个x值,使得yF(x)0达到一个精度。第12页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:举例:碳酸钙在纯水中的溶解度 CaCO3是难溶盐,在纯水中有如下平衡:同时由物料平衡和电荷平衡关系得:第13页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:举例:碳酸钙在纯水中的溶解度 钙离子的浓度即为CaCO3的溶解度,用x表示并将两个K值代入,得:将x按递增序列逐渐变化,求得相应的y值。当y值变号时,表明它通过0。然后在y变号的x区间内,减少x的增值量,重复上述过程,直至达到要求精度的x值。第14页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:举例:碳酸钙在纯水中的溶解度 x的起始值可以是任意的,最终都能得到方程的解。但应该将方程作一初步分析,对x值的范围有一个大致的了解,可以较快的确定方程的解。比如对此例:因此x必然大于 。所以可用其作为x的起始值,x的增量定为 。第15页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:举例:ExcelExcel操作步骤操作步骤1)A1单元格键入x,B1单元格键入y。在A2和A3单元格分别填入5E-5和6E-5。2)在B2单元格输入公式:随后用自动填充功能得到B3的值。再选中A2:B3这四个单元格,拖填充柄直至y变号。第16页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:举例:ExcelExcel操作步骤操作步骤3)重复上述过程,x起始值设为1.01E-4,增值量减为1E-6。在A10 和A11分别输入 1.01E-4和1.02E-4。拖B8单元格至B11。选中A10:B11,拖动至y变号。以此重复进行,可得到任意精度的解。第17页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:迭代法快速求解举例:迭代法快速求解 将F(x)0可以改写成:xf(x)设定初始值x0,将其代入上式,得到改进值x1:x1f(x0)如此重复,可逐渐逼近真实解x。第18页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:迭代法快速求解举例:迭代法快速求解Excel具体步骤:1)将D1和E1单元格分别标为x和x,代表迭代求得的解及连续两次迭代获得方程根之差值。2)D2单元格输入SQRT(2.9E-9),在D3输入SQRT(7.8E-7*SQRT(D2)+2.9E-9),在E3单元格输入=D3-D2。第19页,本讲稿共56页2.2 2.2 逐步逼近法解方程逐步逼近法解方程2.2.举例:迭代法快速求解举例:迭代法快速求解3)选中D3:E3,用自动填充功能下拉填充柄,得不同迭代次数下x值及其精度。第20页,本讲稿共56页2.3 Newton-Raphson2.3 Newton-Raphson法法1.1.原理:原理:逐步逼近法有时速度较慢,Newton-Raphson法快得多。N-R法是一种迭代过程,迭代形式为:Si是第i步迭代函数yi的斜率(一阶导数)第21页,本讲稿共56页2.3 Newton-Raphson2.3 Newton-Raphson法法1.1.原理:原理:基本思想:先在函数可能为0的x值范围内确定一初始值x1,函数曲线在x1的斜率S1=y1/(x1-x2),因此由函数y在x1的斜率得到改进了的根x2:x2x1-y1/S1 如此重复,直至xi+1-xi等于0,或小于某一值。第22页,本讲稿共56页2.3 Newton-Raphson2.3 Newton-Raphson法法1.1.原理:原理:如图:第23页,本讲稿共56页2.3 Newton-Raphson2.3 Newton-Raphson法法2.Excel 2.Excel 步骤:以步骤:以y y=x x3 3-3-3x x2 2-6-6x x+8+8为例为例1)在A1,B1,C1分别输入:x,y,S。2)在A2输入x的初始值5,在B2输入公式:A23-3*A22-6*A2+8,在C2输入导数公式:=3*A22-6*A2-6。3)在A3输入公式:=A2-B2/C2,得到改进了的解。第24页,本讲稿共56页2.3 Newton-Raphson2.3 Newton-Raphson法法2.Excel 2.Excel 步骤:以步骤:以y y=x x3 3-3-3x x2 2-6-6x x+8+8为例为例4)选中B2:C2,下拉填充柄到B3:C3。5)选中A3:C3,下拉填充柄直至x值几乎不变,即得x的真实解4。注:若方程有多个解,则N-R法的解有赖于初始值选择。因此需要先对函数图象有一大致了解,才能获得需要的解。(现场演示10,1E5,-10,-1E5,1E12)第25页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法1.1.原理原理 Excel“工具”菜单中的“单变量求解”是用 Newton-Raphson迭代法求近似解的程序。“单变量求解”通过改变一选定单元格(可变单元格,x)的值,使得另一单元格(目标单元格,y)的值达到预定值。对于解方程,目标单元格为方程所在,目标值为0,可变单元格为使方程等于0的自变量值(即x)。第26页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法1.1.原理原理 第27页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法2.2.举例:求举例:求CaCOCaCO3 3溶解度溶解度1)A1,B1内分别输入x,y。2)A2输入单元格1作为初始值,B2输入公式:=A22-7.8E-7*SQRT(A2)-2.9E-9。3)打开“工具”“单变量求解”对话框,光标停在“目标单元格”内,再单击B2单元格。“目标值”输入0,光标停在“可变单元格”内,单击A2单元格。点击“确定”。第28页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法 第29页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法3 3)最大误差设置)最大误差设置 从上例可以看出,所得解x0.0222并不精确,需要重新设定最大误差:打开“工具”“选项”“重新计算”。在该对话框的“最大误差”里填入想要的设置,如1.00E-12。第30页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法3 3)最大误差设置)最大误差设置 第31页,本讲稿共56页2.4 2.4 单变量求解法单变量求解法3 3)最大误差设置)最大误差设置 分别将最大误差设置为1.00E-5,1.00E-9,1.00E-12,1.00E-15,1.00E-99,用上述单变量求解方法求得相应的x和y值。第32页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 化学反应动力学方程一般用一阶微分方程表示,其通式为:a,b是自变量的定义域,f(x,y)为已知函数。第33页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 若一函数y=F(x)代入微分方程,使得式(1)成立,即:则该函数就是微分方程的解。第34页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 解微分方程用到积分,得到的解析式是含一个任意常数C的通解。若有初始条件(初值):y0F(x0)则通解的常数C可以确定,得到特解。第35页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 例如对于一级反应:A B,其速率方程为:At是反应物A在时间t时的浓度,其通解为:第36页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 若已知t0时A的浓度为A0,则在初始条件下的特解为:第37页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 并非所有微分方程都有解析解。事实上除了一些简单的基元反应,大多数反应动力学难以得到解析解或解析式很复杂,甚至不存在解析解。此时必须求助于数值解。另一方面反应动力学关心的问题是在t时刻反应体系内各物质的浓度At,Bt,,有足够精度的近似解即可。第38页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解1.1.原理原理 数值解在化工“三传一反”的模型化中都广泛应用。数值解有普适性,可用于复杂的微分方程体系及任何初始条件。第39页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解2.2.EulerEuler法法 常微分方程数值解采用离散方法,即找出一种有效的数值计算方法,计算自变量的离散点:x0,x1,x2,xn以及对应的y近似值y0,y1,y2,yn。最简单的是Euler法,通常取等间距的x值:x1-x0=x2-x1=xn-xn-1=h h称为步长。第40页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解2.2.EulerEuler法法 以初始条件(x0,y0)代入微分方程式(1),得到初始点P0(x0,y0)的斜率:以差商近似微商:第41页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解2.2.EulerEuler法法 因此有:即x向前移动h,在x1处得到y1。同样可以由x1,y1代入式(1)得到y2。依此类推,可得到所有x0,x1,x2,xn对应的y近似值y0,y1,y2,yn。这些数值点连成一个折线函数,用以代替原来的曲线函数。第42页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解2.2.EulerEuler法法第43页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解2.2.EulerEuler法法 Euler法简单易懂,几何意义明确,但误差太大。由图可知,由于误差的累加,随着x向前推进,折线越来越偏离原来的曲线。第44页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解3.3.EulerEuler法示例法示例例:例:对一级反应动力学方程 设定:初始浓度A0=0.2000mol/L,反应速率常数k=0.01s-1。由上式可推得其求浓度近似值的递推公式为:第45页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解3.3.EulerEuler法示例法示例具体解法如下:1)A列输入时间,间隔为20s,直到140s。2)B列用Euler法计算在时间t时的浓度At。在B5单元格输入初始浓度0.2000mol/L。B6输入递推公式:=B5-B5*$D$1*$D$2。3)选定B6单元格,向下拖拽到B12。由于B5单元格为相对引用,每下一格,浓度值更新一次,得到各个时刻由Euler法计算的浓度。第46页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解3.3.EulerEuler法示例法示例4)C列是根据 计算的解析浓度值。在C5单元格输入公式:=$B$5*EXP(-$D$1*A5)。然后自动填充得其余值。5)D列为Euler法计算值与解析值的相对误差:=100(解析值-Euler值)/解析值。第47页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解3.3.EulerEuler法示例法示例6)减小步长h,可改进精度。如步长分别为5和1时,在140s的误差分别降为3.56和0.70。第48页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解4.4.Runge-KuttaRunge-Kutta法法 Euler法产生较大误差的原因是f(x,y)为曲线,用Teller公式展开:Euler公式只取了线性项(斜率),忽略了高次项。第49页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解4.4.Runge-KuttaRunge-Kutta法法 R-K法则包括了Teller展开式的高次项,其中最常用的是四阶R-K公式。在递推公式里x取值为:xi,xi+h/2,xi+h。则微分方程通式的四阶R-K公式为:第50页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解4.4.Runge-KuttaRunge-Kutta法法微分方程通式的四阶R-K公式为:第51页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解5.5.Runge-KuttaRunge-Kutta法示例法示例 例子同Euler法一样。由于微分方程仅涉及因变量y,R-K法四项表达式简化为:第52页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解5.5.Runge-KuttaRunge-Kutta法示例法示例具体步骤:1)在F5单元格输入初始浓度0.2000mol/L。2)根据T1-T4的计算公式,在B6输入:=-$D$1*$D$2*F5 在C6输入:=-$D$1*$D$2*(F5+B6/2)在D6输入:=-$D$1*$D$2*(F5+C6/2)在E6输入:=-$D$1*$D$2*(F5+D6)第53页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解5.5.Runge-KuttaRunge-Kutta法示例法示例具体步骤:3)根据递推公式,在F6输入:=F5+(B6+2*C6+2*D6+E6)/64)选定区域B6:F6,拖拽填充柄到第12行。5)通过与解析解的相对误差可以发现,R-K法相当精确,完全可以满足一般反应动力学研究的需要。第54页,本讲稿共56页2.5 2.5 求微分方程数值解求微分方程数值解5.5.Runge-KuttaRunge-Kutta法示例法示例第55页,本讲稿共56页下周日上机练习下周日上机练习 拷贝本次课的课件,根据课件示例,上机练习这些解方程的方法。第56页,本讲稿共56页