运用MATLAB解决复杂化学方程式配平问题
【摘要】到生产实际中化学反应复杂、涉及方程个数较多时,即矩阵阶数较高时,
可利用 MATLAB 这一数学软件来轻松解决。本文根据化学反应方程式配平的基本
原则,通过建立由原子种类、电荷数、配平系数组成的齐次线性方程组,以及建
立数学模型,运用矩阵代数运算来配平复杂的化学反应方程式。
【关键词】MATLAB 矩阵运算 配平 化学反应方程式
MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级
技术计算语言和交互式环境。它的应用范围非常广,包括信号和图像处理、通讯、
控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
遇到生产实际中化学反应复杂、涉及方程个数较多时,即矩阵阶数较高时,
可利用 MATLAB 这一数学软件来轻松解决。本文根据化学反应方程式配平的基本
原则,通过建立由原子种类、电荷数、配平系数组成的齐次线性方程组,以及建
立数学模型,运用矩阵代数运算来配平复杂的化学反应方程式。
一、问题的提出
在生产实际中遇到化学反应复杂、涉及方程个数较多时,配平反应方程式就
变成非常棘手的问题。在利用 MATLAB 解决这些问题时,如何使用 MATLAB 语言才
能使问题迅速解决呢?
二、问题的解决
1、化学原理
在常规的化学反应中,我们判断一个化学反应是否配平的主要依据有以
下几点:第一,反应前后各原子个数相同;第二,反应前后离子的电荷数必须
相同;第三,得失电子数相等。本矩 阵运算主要根据以上原则建立数学模型。
配平化学方程式的线性代数法原理
设化学反应方程式中的反应物和产物的总数为 m,反应物和产物分子中所含
元素的总数为 n.
如果我们用Aijij表示反应方程式中第i个化合物的第j种元素的原子的个
数(Aijj可以称之为原子系数),则第i个化合物的组成可用一个向量Ai 表示:
相应的,矩阵 A 则表示反应方程式中所有化合物的组成:
Ai=(Ai1,Ai2,……,Aim)
(1)
A=(Aij)
我们把矩阵 A 称之为原子系数矩阵,配平化学方程式就是要求反应式中各物
质的化学计量系数。我们用 ai 表示方程式中第 i 种物质的化学计量系数,对于反
应物取 ai>0;对于生成物取 ai<0.于是有:
a Ai=0(i=1,2,…,m)
(2)
i
i
(2)式用矩阵可表示为:Aa=0 上式为一齐次方程组。
需要说明的是,采用此法计算时,如果 m>n,则有不止一组独立解,此时,
应对 A 矩阵加以处理,使之变为一个方阵。通常,可在后面的行加上单位矢量使
之成为方阵。当为离子反应时,可把各物质所带的电荷作为一个向量写在矩阵中,
若还未成为方阵,则在后面的行加上单位矢量,使之成为方阵。
例如,对于待配平方程式:C2H4+O2—CO2+H2O,首先写出该反应的原子系数矩
阵 C:
C
H
O
4
OHC
2
0
0
2
0
2
2
4
0
0
CO
2
1
0
2
0
OH
2
0
2
1
1
C
显然,m>n,为此,在矩阵 C 的最后一行加上单位矢量,使之变成方阵 A:
A
4
2
C
H
O
OH
0
2
1
1
又如,对于离子反应 Cr3++MnO4
OHC
2
2
0
2
4
0
0
2
0
CO
2
1
0
2
0
0
-+H2O—Cr2O7
2-+Mn2++H+,先加上电荷(正电荷
为正,负电荷为负),再变成为方阵 A:
Cr
Mn
O
H
电荷
1
0
0
0
3
0
0
1
4
0
0
1
0
0
1
2
0
0
2
0
7
0
2
0
0
1
0
0
2
0
0
0
0
1
1
1
A
求出方阵的逆矩阵,其逆阵的最后 m-n 列即是方程式 Aa=0 的解 ai,如果 m-n=1,
则最后第 m-n 列为系数向量,如果 m-n>1,则将第 n 列以后的列的值予以合并构
成系数向量。
2、程序举例
例 1:
FeS2+O2→Fe2O3+SO2
解:
Fe
S
O
1
2
0
0
0
0
2
0
2
0
3
0
0
1
2
1
编写程序如下:
A=[1,0,2,0;2,0,0,1;0,2,3,2;0,0,0,1];
B=inv(A)
%求矩阵的逆;
运行结果:
B =
0
-0.7500
0.5000
0.3750
0
0.5000
-0.5000
-1.3750
0.5000
0
-0.2500
0
0
0
0.2500
1.0000
由于化学反应方程式中的反应物和产物的总数为 4,反应物和产物分子中所
含元素的总数为 3。故得:4-3=1,则最后 1 列即是方程式 Aa=0 的解 ai 为系数向
量。
-0.5000
-1.3750
0.2500
1.0000 ,各项取整得互质整数解为
-4
-11
2
8 。即为反应式
故所求方程组的解为
中反应物和生成物前的系数,负值为反应物的系数。
该方程配平为:4FeS2+11O2=2Fe2O3+8SO2
例 2:
CH3CHO+Ag(NH3)2OH △CH3COONH4 +Ag↓+NH3+H2O
解:
C
H
O
Ag
N
2
4
1
0
0
0
0
7
1
1
2
0
编写程序如下:
2
7
2
0
1
0
0
0
1
0
0
3
0
0
1
0
2
1
0
0
0
0
0
1
A=[2,0,2,0,0,0;4,7,7,0,3,2;1,1,2,0,0,1;0,1,0,1,0,0;0,2,1,0,1,0;0,0,0,
0,0,1];
B=inv(A)
%求矩阵的逆;
运行结果:
B =
-1.0000
-2.0000
1.5000
2.0000
2.5000
0
1.0000
1.0000
-1.0000
-1.0000
-1.0000
0
-1.0000
0
1.0000
0
-1.0000
0
0
0
0
1.0000
0
0
-3.0000
-3.0000
3.0000
3.0000
4.0000
0
-1.0000
-2.0000
1.0000
2.0000
3.0000
1.0000
由于化学反应方程式中的反应物和产物的总数为 6,反应物和产物分子中所
含元素的总数为 5。故得:6-5=1,则最后 1 列即是方程式 Aa=0 的解 ai 为系数向
量。
-1.0000
-2.0000
1.0000
2.0000
3.0000
1.0000 ,各项取整得互质整数解为
故所求方程组的解为
物和生成物前的系数,负值为反应物的系数。
-1.
-2
1
2
3
1 。即为反应式中反应
该方程配平为:CH3CHO+2Ag(NH3)2OH △CH3COONH4 +2Ag↓+3NH3+H2O
例 3:
Fe2++CL2→Fe3++CL-
解:
编写程序如下:
A=[1,0,1,0;0,2,0,1;+2,0,+3,-1;0,0,0,1]
B=inv(A)
%求矩阵的逆;
运行结果:
A =
1
0
2
0
0
2
0
0
1
0
3
0
0
1
-1
1
B =
3.0000
0
-2.0000
0
0
0.5000
0
0
-1.0000
0
1.0000
0
-1.0000
-0.5000
1.0000
1.0000
由于化学反应方程式中的反应物和产物的总数为 3,反应物和产物分子中所
含元素的总数为 2。故得:3-2=1,则最后 1 列即是方程式 Aa=0 的解 ai 为系数向
量。
-1.0000
-0.5000
1.0000
1.0000 ,各项取整得互质整数解为
-2
-1
2
2 。即为反应
故所求方程组的解为
式中反应物和生成物前的系数,负值为反应物的系数。
该方程配平为:2Fe2+ +
2Fe3+
=
Cl2
2Cl-
+
3、利用MATLAB软件进行复杂方程式的计算
由 于 在 实 际 的 生 产 生 活 中 , 往 往 有 许 多 化 学 反 应 同 时 发生,非常
复杂,所以解决实际的配平问题时,可能遇到非常繁琐 的矩阵代数运算,因此
笔者建议使用 M A T L A B 这一高性能的计算软件。
三、总结
本文利用 MATLAB 中矩阵运算配平化学反应方程式,运用非常简单的程序 就
轻松解决了求解复杂反应方程式配平的问题,不仅使计算简单快捷,还充分体现
了学科交叉带来的具大优势。MATLAB 作为一种数学工具,其重要性不仅在于理
论知识,更重要的是要利用理论知识解决实际问题。作为一名工科大学生,更应
该掌握这门科学工具。
参考文献:
[1] 胡龙桥,配平化学反应方程式的矩阵方法[J],天津师大学报(自然科
学版),1997,第2期
[2] 孙会霞、职桂珍,线性方程组的基本理论在配平化学方程式中的应用
[J],1999
[3] 刘文华,配平化学方程式的矩阵变换方法,冶金部有色金属研究总院[J]
1987,06
Fe
CL
电荷
1
0
2
0
0
2
0
0
1
0
3
0
0
1
1
1