对于化学方程式配平,人们总结了好多方法,但是万变不离其宗,依据永远都是“质量守恒定律”。
利用计算机强大的计算能力,通过程序来自动计算配平系数。
例如,对于化学方程式:CH4+O2=CO2+H2O,假设其系数分别为a,b,c,d,即a CH4+b O2=c CO2+d H2O,化学方程式中包含的元素有C、H、O。
根据质量守恒,可以列出方程:
C守恒:a*1+b*0=c*1+d*0
H守恒:a*4+b*0=c*0+d*2
O守恒:a*0+b*2=c*2+d*1
很容易算出,最小正整数解:a=1,b=2,c=1,d=2。
计算机怎么算呢?
解方程就要用到线性代数的知识了。
我们让c=-c,d=-d,然后把右边移到左边,就变成了:
C守恒:a*1+b*0+c*1+d*0 = 0
H守恒:a*4+b*0+c*0+d*2 = 0
O守恒:a*0+b*2+c*2+d*1= 0
|1,0,1,0| | a | | 0 |
|4,0,0,2| . | b | = | 0 |
|0,2,2,1| | c | | 0 |
| d |
前边系数用计算机提取出来不算难,求[a,b,c,d]就是求前边系数矩阵的零空间。
计算机求矩阵的零空间我不会,我只会用高斯消元法解方程。
如果我们把方程中最后一列挪到等式的右边,就变成了求方程的解(忽略正负号)。
C守恒:a*1+b*0+c*1=d*0
H守恒:a*4+b*0+c*0=d*2
O守恒:a*0+b*2+c*2=d*1
|1,0,1| | a | | d*0 |
|4,0,0| . | b | = | d*2 |
|0,2,2| | c | | d*1 |
似乎没法解。很正常,因为零空间肯东不是一个确定的解,而是一个空间,很好理解,当我们求出一组解之后,系数同时乘以一个数,肯定还是这个方程的解。
我们先假设d=1,然后就有解了。
解出来a=0.5,b=1,c=-0.5。
带负号的和d一样是生成物的系数。
我们要的是整数解,然而得到的是小数,怎么办呢?
很简单,找到一个最小的整数系数,满足所有数值乘以这个系数之后都是整数。
具体怎么实现呢?
首先,我们把小数化为最简分数形式(实现方法另起一章来说):x/y。
然后找到所有分母y的最小公倍数,即为我们要找的系数。
到此,求解完毕。看一下效果。新页面中打开。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。