大学化学, 2017, 32(3): 63-69 doi: 10.3866/PKU.DXHX201609011

自学之友

在化学原理习题课教学中引导学生应用自由软件解决问题的尝试

崔巍,

An Attempt to Lead Students Solving Chemical Principle Exercises by Free Software in Recitation Class

CUI Wei,

通讯作者: 崔巍, Email:cuiwei@ucas.ac.cn

摘要

应用自由软件Scilab、LiberOffice和R,在化学原理习题课教学中展示科学计算软件解决课后习题的过程,培养学生应用科学方法解决实际问题的能力,引导学生关注自由软件在科学计算中的应用。

关键词: 化学原理 ; 自由软件 ; 科学计算

Abstract

Free software, such as Scilab, LiberOffice and R, were applied to solve chemical principle exercises, and the solving procession was demonstrated in recitation class. Such attempts have trained ability of undergraduate students to solve practical problems by scientific methods, and led students to focus on the application of free software in scientific computation.

Keywords: Chemical principle ; Free software ; Scientific computation

PDF (2163KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

崔巍. 在化学原理习题课教学中引导学生应用自由软件解决问题的尝试. 大学化学[J], 2017, 32(3): 63-69 doi:10.3866/PKU.DXHX201609011

CUI Wei. An Attempt to Lead Students Solving Chemical Principle Exercises by Free Software in Recitation Class. University Chemistry[J], 2017, 32(3): 63-69 doi:10.3866/PKU.DXHX201609011

1 背景与意义

在中国科学院大学(国科大)的本科培养体系中,化学原理是化学、材料、生物等专业本科生的第一门专业基础课,也是引导大学新生从中学化学学习方法转向专业学习方法的一门课。通识教育的理念认为,高等教育要培养具有终身学习能力、有独立思考和批判性思维的人[1]。化学原理作为大学学习的一门导入课程,培养学生以科学方法分析问题、解决问题也是其重要职能。化学原理的习题设置,可以引导大一新生转换学习方式,从以解题为核心目标的学习方式,向建立科学思维、学习和解决科学问题的手段的学习方式转变。习题课的教学是国科大本科教学的一个特点,因此我们尝试在习题课上引入开源科学计算软件,引导学生自主学习解决问题的方法。

在化学教学中,利用应用软件辅助改善教学效果,国内外对此已有不少尝试。归纳起来主要包括以下几种类型:(1)展示型,应用软件制作课件,向学生展示较为抽象的过程和概念。如张海艳等[2]应用POV_ray展示分子对称性,侯若冰等[3]用GaussView展示分子轨道,周丹娜等应用Tenua展示0、1、2级反应动力学曲线[4],应用HYDRA/MEDUSA展示化学平衡[5];(2)教学组织型,利用软件组织教学。软件,包括手机应用,作为课堂和课外教学的一部分,学生在软件上进行学习,完成实验或作业,与教师同学互动。如胡居东等[6]基于android搭建的药学专业实验教学系统,Cossairt等[7]开发的开源游戏Chemical Mahjong辅助元素化学的学习;(3)辅助工具型,利用软件辅助教师或学生搜集和获取信息。如李建华等[8]基于android搭建的化学计算平台,Francoia等[9]开发的开源软件ChemBrows,以及大量开源的周期表查询软件、文献获取软件等[10]。考虑到习题课以讲解习题和课堂练习为重点,在习题课教学中,我们以“课堂可演示、学生易获取、课后能操作”为原则,选择数值分析软件,演示并引导学生认识和使用自由软件解决学习、科研中遇到的问题。

国科大化学原理课程选用北京大学出版社出版的第4版《普通化学原理》[11]为教材。作为中学化学与大学化学教学的衔接,这版《普通化学原理》教材课后习题中比较突出应用基本原理解决实际问题。习题中一些题目需要用到作图、猜测验证等方法求解,所用到的方法与科研实践中常用的一些数据处理方法有相通之处,这与学生在中学阶段熟悉的考试导向的化学习题有一定的差异。因此我们尝试在习题课教学环节中,向学生介绍这些处理方法,可以培养学生以科学的方法分析、解决问题的思维方式和能力,符合化学原理课程的培养目标。在教学实践中,我们发现,学生在面对这些不同于高考命题方式的习题时,往往求助于习题解析等辅导教材,而这些辅助教材大多成书于20世纪八九十年代,给出的参考答案多为坐标纸绘图等传统方法,与现实已有一定程度的脱节。因此我们尝试在习题课教学中,选择一些数值分析软件,向学生介绍应用自由软件进行求解习题,开展科学计算的方法。

常用的数值分析软件包括商业软件MATLAB、Mathematica,自由软件GNU Octave、Scilab、R、SciPy等,这些数值分析软件在很多学科中都有广泛应用,其中自由软件因为免费、开源、可扩展等特点,在科学计算领域的应用尤其广泛。

根据自由软件基金会(Free Software Foundation,FSF)的定义,自由软件指可以不受限制地自由使用、复制、研究和分发的,尊重使用者自由的软件[12]。自由软件强调其思路、算法和源码向所有使用者无条件开放,满足使用者的个性化需求,因此自由软件比专有软件更适合于科学研究[13, 14],故而在科学计算领域,自由软件有着非常广泛的应用。遗憾的是,我国基础教育领域长期以来对软件著作权重视不足,中小学生接触自由软件的机会较少,在大学课堂教学中,能够明显感受到学生对于自由软件认知不足。因此我们尝试在化学原理的习题课上引入自由软件辅助解决课后作业中的部分习题,向学生介绍在科研中有着广泛应用的自由软件,引导学生关注如何应用自由软件开展科学计算。

2 教学环节的具体实施

2.1 应用数值分析软件Scilab解题

涉及习题为北大《普通化学原理》(第4版)第3章习题3.13的第二问。在120 ℃的5.0 dm3密闭容器中有2.5 g H2O。用计算说明冷却到什么温度,水汽开始凝聚为液态?

求解这一问须联立理想气体状态方程和Clapeyron-Clausius方程,所得方程为超越方程,无法精确求解。在辅导材料和学生作业中,对这一问,多选择作图法求解:在坐标纸中分别手绘理想气体状态方程曲线和Clapeyron-Clausius方程曲线,读取两线交点对应温度。目前在科研实践中,几乎已经不再使用手绘坐标纸的方法了,很多数值分析软件都可以处理此类超越方程求解问题。在习题课上,我们尝试引入自由软件Scilab对题目所涉及的方程求解。Scilab是法国国家信息与自动化研究所(Institutnational de recherché en informatique et en automatique,INRIA)与巴黎路桥学院(École desPontsParisTech,ENPC)合作开发的一款数值分析自由软件,其功能与著名的专有软件Matlab类似,是后者的开源替代软件,可应用于超越方程的数值求解等科学计算任务[15]

联立理想气体状态方程和Clapeyron-Clausius方程,可得方程组:

$\left\{ \begin{gathered} pV = nRT \hfill \\ \ln \left( {\frac{p}{{{p_0}}}} \right) = \frac{{\Delta {H_{{\text{vap}}}}}}{R}\left( {\frac{1}{{{T_0}}} - \frac{1}{T}} \right) \hfill \\ \end{gathered} \right.$

整理Clapeyron-Clausius方程可得:

$\left\{ \begin{gathered} pV = nRT \hfill \\ p = {p_0}\exp \left( {\frac{{\Delta {H_{{\text{vap}}}}}}{R}\left( {\frac{1}{{{T_0}}} - \frac{1}{T}} \right)} \right) \hfill \\ \end{gathered} \right.$

两式合并可得液气平衡时的温度方程:

${p_0}\exp \left( {\frac{{\Delta {H_{{\text{vap}}}}}}{R}\left( {\frac{1}{{{T_0}}} - \frac{1}{T}} \right)} \right) - \frac{{nRT}}{V} = 0$

上式中p0T0温度下水的饱和蒸气压,ΔHvap为对应温度下水的蒸发焓,上述参数查表可得,代入参数后求解温度方程可得液气平衡温度T

Scilab中求解非线方程组的命令为fsolve,可以求得本习题中超越方程的数值解。求解程序如下:

Scilab中求解非线方程组的命令为fsolve,可以求得本习题中超越方程的数值解。求解程序如下:

function y=fct (x)

y=198.5*exp (12.64-4970/x)-0.231*x;

endfunction

//定义函数

fsolve (393, fct)

//从T=393开始迭代求解方程

fplot2d ([1:393], fct)

a=gca ();

a.grid=[5 5];

//绘制函数图线

在课程教学中,运行上述Scilab脚本,可以得到数值解368.51251,同时应用fplot2d命令绘制出函数形式,可以给学生展示一个直观的图像,展示效果如图1所示。

图1

图1   Scilab运行脚本求解超越方程截图


2.2 应用办公软件LibreOffice解题

同样是习题3.13第二问,可以对超越方程应用牛顿迭代法求数值解。在课堂教学中,首先向学生介绍牛顿迭代法。在先修课程微积分中,所有选课学生都已经学过牛顿迭代法的知识,故不需要作详细介绍,只须引入概念即可。

针对这种迭代计算,可以应用办公软件中的表格软件解决,无须编写程序。在课程中,我们应用自由办公软件LibreOffice向学生演示计算过程。

LibreOffice的前身是著名开源办公软件OpenOffic.org,在母公司被Oracle收购后,由文件基金会独立开发,是Microsoft Office的开源替代软件[16]。其中的电子表格软件LibreOfficeCalc可以开展基于电子表格的迭代计算。

求解方程3可应用牛顿迭代法。对函数f(x)进行迭代:

xn的取值将随迭代逼近方程f(x)=0的解。应用电子表格软件开展迭代计算求解本题温度方程的步骤如下:

将方程中出现的常数列于工作表的A2至A4格,以方便随时修改变动,在C列开展计算;在C1格直接写入迭代计算的起始温度,C2格写入计算公式:

=C1-(87.771*EXP (13.5-4985/C1)-0.231*C1)/(4985*87.771*EXP (13.5-4985/C1)/(C1*C1)-0.231)

由上式可见,C2格的计算结果是以C1的数值为输入的,用鼠标圈住C2下拉,即可在C3格得到以C2数值为输入的计算结果,继续下拉便可以得到逐格迭代的计算结果,至所得数据不再变化,即为通过牛顿迭代法收敛所求得的方程的解。应用电子表格软件计算展示效果如图2所示。

图2

图2   应用LiberofficeCalc开展迭代计算展示效果截图


在课堂教学中直接向学生展示录入数据、编写公式、下拉求解的全部过程,并解释每一步操作的意义,并提示学生应用办公软件中的电子表格软件可以解决很多迭代问题。

2.3 应用统计软件R解题

所涉及习题为北大《普通化学原理》(第4版)第7章习题7.5。测定化合物S的某一种酶催化反应速率时获得的实验数据如下表。试判定在下述浓度范围内的反应级数。

  

t/min 0 20 60 100 160
c(S)/(mol∙dm-3) 1.00 0.90 0.70 0.50 0.20

新窗口打开| 下载CSV


在学生作业和辅导材料中,普遍采用作图法和尝试法解题,根据题目中所给出的原始数据,分别套用零级、一级和二级反应动力学公式,在坐标纸上描点,用直线连接,找到最接近直线的图线,最终得到结论。在统计软件还不普及的时代,回归计算步骤较为繁复,作图法简单明了,有优势。但是现在统计软件种类繁多,回归分析是其基本功能,利用统计软件进行精确的回归分析,其结果的可靠性显然优于传统的作图法。

在习题课教学中,我们选择自由统计软件R解题。R是由新西兰奥克兰大学(The University of Auckland)的罗斯∙伊哈卡(Ross Ihaka)和罗伯特∙杰特曼(Robert Gentleman)共同开发的统计语言,目前由“R开发核心团队”维护代码,在生物信息学、人工智能、计量经济学等领域有广泛应用[17]

根据反应级数的知识,分别以t对lnc(S)、c(S)-1c(S)-2开展线性回归计算,读取返回的相关系数,根据相关系数确定反应级数。

在课堂教学中,选择Rstudio[18]作为展示用IDE,向学生直观展示R语言源码和执行效果,逐行介绍命令,对应语法和执行结果,并作出回归曲线,课堂展示效果如图3所示。着重分析三种不同反应级数对应的三个model,最后根据R语言返回的相关系数引导学生得出一级动力学的结论。最终,对比传统的作图法和应用R语言进行精确计算的方法,并介绍R语言环境下载安装方式,引导学生关注自由统计软件。

图3

图3   应用Rstudio图形开发环境展示R语言回归分析展示效果截图


解题所用R语言脚本如下:

sub=read.table (′/home/chem/7.5′, T)

sub2=read.table (′/home/chem/7.52′, T)

plot (concentration~time, data=sub, xlab="Time/min", ylab="Concentration/M", col=′blue′)

#读取原始数据

model=lm (concentration~time, data=sub)

abline (model, lty=1, )

summary (model)

#一级动力学回归拟合,并绘制黑色实线回归方程曲线

model2=lm (log (concentration)~time, data=sub2)

abline (model2, lty=3, col=′green′)

summary (model2)

#二级动力学回归拟合,并绘制红色虚线回归方程曲线

model3=lm (1/concentration~time, data=sub2)

abline (model3, lty=3, col=′red′)

summary (model3)

#三级动力学回归拟合,并绘制绿色圆点虚线回归方程曲线

3 结语

化学是一门实验科学,从实验中获取数据,处理数据,从数据中获取新知识是化学的核心工作。随着仪器技术的进步,实验中获取的数据越来越多,分析和处理海量的实验数据已经成为现代化学研究中一项重要技能。应用科学计算软件处理实验数据也成为化学专业学生的必备技能,自由软件在科学计算领域占有重要地位。因此在本科化学专业的导入课程化学原理中,我们尝试以习题课的形式向学生介绍自由版权的科学计算软件,引导学生关注自由软件在科研中的应用,培养学生自主寻找工具解决问题的能力。

在教学实践中,以学生熟悉的习题为切入点,选择原理清晰、过程简单的题目,用最易懂的脚本程序和最简便的办公软件操作,通过课堂演示自由软件解题过程,讲解应用软件解题的思路和方法,对比传统的解题或数据处理方式与应用自由软件进行科学计算的数据处理方式。引导学生认识什么是自由软件,了解一些应用广泛的自由软件的功能与基本操作,知晓获取自由软件的途径,进而让有兴趣深入接触自由软件的学生开展自主学习,尝试以科学方法解决学习中遇到的问题。上述尝试收到了一定效果,多数学生通过课程知道了自由软件和科学计算的含义,认识到了自由软件在科研领域的重要意义,部分学生在课后还咨询了如何应用自由软件解决其他课程问题的细节,基本达到了预期的教学目的。

参考文献

Levin, R. C. The Work of the University; Yale University Press:New Haven, 2003.

[本文引用: 1]

张海艳; 沙兆林; 崔世海; 朱银燕; 李晓东. 大学化学, 2015, 30 (2), 78.

URL     [本文引用: 1]

侯若冰. 大学化学, 2008, 23 (5), 29.

URL     [本文引用: 1]

周丹娜; 袁亚男; 杨少杰. 大学化学, 2016, 31 (9), 91.

URL     [本文引用: 1]

周丹娜. 大学化学, 2015, 30 (4), 21.

URL     [本文引用: 1]

胡居东; 陆涛; 廖俊. 计算机与现代化, 2015, (5), 81.

URL     [本文引用: 1]

Cossairt T. J. ; Grubbs W. T. J. Chem. Educ 2011, 88 (6), 841.

[本文引用: 1]

李建华; 徐明杰; 张济慈; 康雁; 李岭. 计算机与应用化学, 2014, 31 (8), 909.

URL     [本文引用: 1]

Francoia J. P. ; Vial L J. Chem. Educ 2016, 93 (6), 1137.

[本文引用: 1]

Libman D. ; Huang L. J. Chem. Educ 2013, 90 (3), 320.

[本文引用: 1]

华彤文; 王颖霞; 卞江; 陈景祖. 普通化学原理, 第4版 北京: 北京大学出版社, 2013.

[本文引用: 1]

Foundation, F. S. What is Free Software? The Free Software Definition.[2016-08-16]. https://www.gnu.org/philosophy/free-sw.en.html.

[本文引用: 1]

DiBona, C.; Ockman, S.; Stone, M. Open Sources:Voices from the Open Source Revolution. 1st ed.; 1999, Beijing; O'Reilly:Sebastopol, CA.

[本文引用: 1]

DiBona, C.; Cooper, D.; Stone, M. Open Sources 2.0:The Continuing Evolution, 1st ed.; 2006, Beijing; O'Reilly:Sebastopol, CA.

[本文引用: 1]

Enterprises, S. Scilab:Free and Open Source Software for Numerical Computation, 2012.

[本文引用: 1]

Project, T. L. LibreOffice; 2015, The Document Foundation.

[本文引用: 1]

Team, R. C. R:A Language and Environment for Statistical Computing:R Foundation for Statistical Computing:Vienna, Austria, 2016.

[本文引用: 1]

Team, R. RStudio:Integrated Development Environment for R; RStudio, Inc.; Boston, MA, 2015.

[本文引用: 1]

/