• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 初中学习 > 正文

    用VB程序解决化学平衡的计算例析 化学平衡

    时间:2019-02-05 03:30:24 来源:雅意学习网 本文已影响 雅意学习网手机站

      文章编号:1005-6629(2010)07-0070-03 中图分类号:G633.67 文献标识码:B      当我们学习化学平衡的相关知识时,化学平衡常数的计算列出的方程,有时可能是一个难以求解的高次方程,只有通过近似估计,反复使用计算器试根,才能得出近似解。由此,我想到可以编写一个自动执行这一过程的电脑程序,以帮助我们完成计算。程序使用VB编写,操作界面友好易懂,算法采用二分法、穷举、循环等简单的语句完成。完成了在定容这一题目常见条件下对于一般平衡计算题型的求解,也增强了同学们使用VB语言解决问题的能力。
      
      1引言
      
      有关化学平衡的计算题相信很多高中的学生都经常遇到,相比于整个化学平衡对逻辑思维的高要求,这种给定初始情况和平衡常数,要求计算最终平衡情况的题目,在思路上是没有难度的,但却常常因高次方程难以求解的问题而无法得出结果。下面,举这样一个例子。
      已知气相反应,2SO2+O22SO3, 在一定温度时体积恒定为1 L的密闭容器中,充入0.4 mol的二氧化硫和1.0 mol氧气。已知平衡常数为19,求反应平衡时二氧化硫转化率。
      解:初始浓度 二氧化硫 0.4 mol・L-1氧气1.0 mol・L-1
      设二氧化硫反应掉x mol・L-1
      则氧气反应掉 x/2 mol・L-1
      由平衡常数定义计算式可列方程:
      x2/[(0.4-x)2 (1-x/2)]=19
      这是一个三次方程,显然x取值范围为0~0.4,当x等于0.3时仍然偏小,使用计算器计算x在 0.3~0.4之间左式的值,步长0.01,结果如下:
      可见,当x=0.32时,左式值为19.047约等于右式,则x=0.32为方程近似解。
      所以, 二氧化硫转化率为0.32÷0.4×100%=80%
      由对此题的求解过程,我们发现,其实类似的高次方程是有特点的:
      (1)对于化学平衡中我们所涉及的反应物消耗量x mol。它是有范围的,其范围为零到初始浓度之间。所以我们所求的高次方程解也在这个范围间。
      (2)此类化学计算中,一般用有一定近似程度的小数表示,所以,只要精确度达到要求,方程近似解可以作为最终的答案。
      (3)使用计算器的时候,由于反复运算同一个方程,可以用计算机中的循环语句完成这一循环计算过程。
      由此,我编写了“定容化学平衡计算程序”我们可以借助计算机解决这个问题,既增强了同学们的学习兴趣,又可促进同学们对VB语言的掌握和应用。
      
      2 程序算法详解
      
      在前文中,我们得到方程x2/[(0.4-x)2(1-x/2)]=19,将其展开,设定函数F(x)=x2 -19*[(0.4-x)2 (1-x/2)], 原方程的解,转化为求F(x)的零点。其实, 对于一个化学方程式: aA+bB+cC=dD+eE+fF A、B、C、D、E、F分别为参与反应的气体物质,a、b、c、d、e、f为对应的系数,即化学方程式计量数。假设平衡常数为K。初始浓度分别为 ca , cb , cc , cd , ce , cf 。同样我们可以得到函数:fx=((cd+x/a*d)d) * ((ce+x/a *e)e)*((cf+x/a*f)f)-k*((ca-x)a)*((cb-x/a*b)b)*((cc-x/a*c)c)这是达到平衡时, 假设A转化x mol・L-1, 由方程式对应得出其它物质浓度变化所列计算式。
      而当给定初始条件平衡逆移时,假设D转化x mo・L-1,则有:
      fx=((cd-x)d)*((ce-x/d*e)e)*((cf-x/d*f)f)-k*((ca+x/d *a)a)*((cb+x/d*b)b)*((cc+x/d*c)c)
      下面,我们对第一种情况进行具体讲解,第二种情况算法是完全相同的。
      x有一定范围,所以,起始x从其最大值,即x=ca开始。
      2.1二分法缩小范围
      其语句如下:
       x=ca
      Do
      fx=((cd+x/a*d)d)*((ce+x/a*e)e)*((cf+x/a*f)f)-k*((ca-x)a)*((cb-x/a*b)b)*((cc-x/a*c)c)
      x=(x/2)
      Loop Until (f(x)) 0
      x1=x*4
      x2=x*4-0.00001
      Do
      fx1=((cd-x1)d)*((ce-x1/d*e)e)*((cf-x1/d*f)f)-k*((ca+x1/d*a)a)*((cb+x1/d*b)b)*((cc+x1/d*c)c)
      fx2=((cd-x2)d)*((ce-x2/d*e)e)*((cf-x2/d*f)f)-k*((ca+x2/d*a)a)*((cb+x2/d*b)b)*((cc+x2/d*c)c)
      x3=(x1+x2)/2
      x1=x1-0.00001
      x2=x2-0.00001
      Loop Until (f(x1)* (f(x2)) 0,这是因为函数在这附近是单减的,初始X值时,fx为负。而第二步完全相同,因为两个负数相乘的积也是正数,所以判断语句仍为fx1*fx2 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   而对于初始反应方向的判断,由if……then,语句完成。判断F(X)=(cd^d)*(ce^e)*(cf^f)-k*(ca^a)*(cb^b) *(cc^c)的符号,等于零表示初始就平衡,直接输出结果,小于零,表示反应正向进行(注意!是正向!),即第一种情况,若大于零,则反应逆向进行,即第二种情况。
      在得出x结果后,六种物质平衡时的最终浓度便都可以得解,相应的转化率也可以求出。
      
      3 整体程序的编写设计及注意事项
      
      整体程序的完成包括以下几部分
      3.1界面的设计
      为了让人更直观的使用本程序,我们使用VB的可视化窗口形式。整个界面上半部分为用户输入部分,下半部分为结果显示部分,取消和刷新分别还原上下部分。点击确定则由输入的数据计算出结果并在下方显示。
      3.2对于数据的读入和输出
      在VB里,使用text.text=的语句从用户输入的信息中读取数据。要注意的是,当反应物或生成物没有达到三个时,会出现系数为零,此时会出现0^0,因此,在整个计算前,对系数判断,若其系数等于零,浓度赋值为1,1^0=1,做乘法对计算结果无影响。当然,在输出的时候,要将浓度重新赋为0。对于a和d,因为我默认按顺序输入,作为化学方程第一种物质即运算中的除数,都是不能等于零的。
      3.3程序的不足
      (1)因为需要更加直观,化学计量数的输入格式上已经是方程式的形式,所以只能用于计算反应物和生成物是三个或三个以内的化学反应方程式。而且因为以浓度计算的时候固体和纯液体是没有意义的,所以,对于反应物或生成物全是固液的方程,在程序里a,d等于零,已经没有意义无法计算,这是本程序最大的缺陷。但在高中所遇到的平衡题目内,化学方程达到这两个条件的相当少见,而对于部分反应物或生成物含有固液,只要量足够且不影响反应,将剩余部分方程式输入仍可以计算。
      (2)虽然已经使用二分法缩小范围,但对于初始浓度超过较大两位数的情况程序出现明显停顿,基本在30秒以上。
      
      4总结
      
      “定容化学平衡计算程度”只是一个小小的程序设计,它有着许多的不足,但对于高中学生日常处理平衡计算问题,老师验证答案的正确都有一定的帮助,作为一种教学课件可以为初学者演示一些许小的变化引起平衡移动的结果,激发学生的兴趣。更重要的是,这也是一种解决问题的方式,面对一个无法得出的答案,可以借助计算机的帮助,以人的逻辑思考能力与计算机强大的计算能力相结合,充分利用学过的知识,解决棘手的问题,这种思想在平常的学习中会帮助我们获得更多的启迪和灵感。
    本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

    推荐访问:化学平衡 解决 计算 程序

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章