配平化学方程式¶
从前有一个人问过这样一个奇怪的问题:为什么写出来的方程式一定是可以配平的呢?我们逐步分析一下,首先,配平是什么意思?给出一个化学反应的反应物和生成物,我们找到一组系数使反应物和生成物的质量守恒。化学反应最主要的假设就是质量守恒定律,反应前后各元素的量相等。我们将之看做一种公理。
那么,显然并不是随便写的一个化学方程式都可以配平的,参与化学反应的元素应当在反应物和生成物中均有出现。
然后那个人就继续问:那么,为什么现实中出现的化学反应就一定有一个对应的可以配平的化学反应方程式呢?
有一个人不耐烦地回答说,现实中出现化学反应必定质量守恒。因为“存在”这样的反应,所以描述这个反应的方程式一定可以配平。知道你看不懂这句话,要反驳说我只是描述问题。那么你用反证法想好了:如果这个反应的化学方程式不可以配平,意味着不存在系数使得反应物和生成物的质量守恒。那么只有两种情况,一是该反应质量不守恒,我们排除这种情况;二是这个反应的某个反应物或者生成物被你遗漏了。那么我们就这么说,如果是现实存在的化学反应,因为其遵守质量守恒原理,那么给出它的所有反应物和生成物,一定能找到一组系数使其质量守恒。
那个人继续问:是的,是的,我大概能明白,现实中出现的化学反应,一定是满足质量守恒原理的。是,是,我知道现实是这样,但是当我配平一个方程式时,我并不是根据我看到的,反应前后的原子分子变化——这可能要用很好的显微镜吧——我是根据题目的条件,在草稿纸上进行一些计算来配平的。可能这里比较抽象:当我在纸上写下反应物和生成物的时候,实际上和现实是脱离的,我只是在利用质量守恒,用数学来进行计算,得到各个系数。我怎么知道每次都会有解呢?我怎么知道我求出来的解是我想要的解呢?
另外一个人回答说:配平就是求解一组符合质量守恒定律的系数,那配平就是实际上求解方程了。我想你的意思是:你如何知道你所求解的方程组是一定有解的。随便举个例子吧:
我们想要配平甲烷燃烧的化学方程式,实际上就是列出下面的方程:
你有发现吗,这是一个齐次线性方程组,这意味着它一定是有解的。当然平凡全为零的解我们不考虑。就这个方程来说,系数矩阵的秩小于未知变量个数,那么它是一定有非零整数解的。(相信你学过线性代数吧)
现在考虑其他的化学方程式,你也可以这样列出线性方程组。我不能说“一定”会有解,因为没有证明过,只能说根据经验,列出来的齐次方程组往往是一个欠定矩阵,即方程组是有非零整数解的。我大概能理解你的意思,不考虑现实的话,其实的确是不一定有非零解的。
而求出来的解,也未必是你想要的解。比如说,氧化还原反应要增加电荷守恒的约束。一个经典的例子是三价铁离子溶解铁,求解方程可以得到一个经典解:
当然这是不符合实际的,AI 也犯错了。实际考虑电荷守恒的话,解应该如下所示:
那个人不再提问,而是回答说:也许我懂了。我想问的问题也许是在配平的时候,在草稿纸上的计算究竟是什么。我是在利用已知条件解一个大概有解的方程的互质整数解。如果我可以观测反应(至少是定量测量),我就可以直接填出各个数字。但是我不行,我只能根据反应物和生成物来解一个不定方程,大致推测反应的比例。写出来的方程式也没有“正确”的说法,只有“合理”的说法。合理的意思是我的解满足已知的约束,比如质量守恒和电荷守恒。
那个人继续说,当我心中涌现这个疑惑的时候,我觉得非常难受,因为和之前学习热力学的问题一样,我无法清楚表述问题到底在哪里。今天我就是尝试搞清楚我的问题究竟是什么。与其说是化学的问题,不如说是“语言”的问题,太 subtle。现在的我大概是有进一步的认识了。
好吧,那我们回到纯粹的化学。既然已经知道配平是求解方程,网上也已经有相当好用的求解器了,比如这个链接:https://blog.csdn.net/slandarer/article/details/108734172