14
2019
11

化学方程式自动配平

对于化学方程式配平,人们总结了好多方法,但是万变不离其宗,依据永远都是“质量守恒定律”。

利用计算机强大的计算能力,通过程序来自动计算配平系数。

例如,对于化学方程式: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的最小公倍数,即为我们要找的系数。


到此,求解完毕。看一下效果。新页面中打开


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。