首页 > 解决方案 > 平衡化学方程式

问题描述

Lore:
现在我的化学课已经超越了记忆方程式等等,而是从平衡化学方程式开始。我可以整天坐下来平衡方程,但由于编程是我的热情,我很想有一个程序为我工作来解决这些问题。这或多或少是一个宠物项目,更多的是为了好玩,而不是让我在化学课上占优势。但我越深入它,它就变得越复杂。我真的不知道如何开始这场十字军东征,而是在解析器和数据集上工作,这是一个很好的设置,让我的头正确地环绕它。

问题:
我不知道如何利用矩阵求解方程(平衡方程以保存质量*)并将其转换为化学中有效的整数。

代码/对象:

class Element {
    constructor(name,quantity) {
        this.name = name;
        this.quantity = quantity;
        if (this.quantity == 0) {
            this.quantity = 1;
        }
    }
}
class Molecule {
    constructor() {
        this.elements = [];
        this.multiplier = 1;
    }
    addElement(newEl) {
        this.elements.push(newEl);
    }
    list() {
        this.elements.forEach(el => {
            console.log(el.name,el.quantity);
        });
    }
    getMultiplier() {
        return this.multiplier;
    }
    getElements() {
        var a = [];
        this.elements.forEach(el => {
            a.push([el.name,el.quantity*this.multiplier]);
        });
        return a;
    }
}

代码/数据结构:

printFormula(moleculeList);
for (var i=0;i<moleculeList[0].length;i++) {
    console.log("Mol "+(i+1))
    moleculeList[0][i].list();
}
console.log("==>");
for (var i=0;i<moleculeList[1].length;i++) {
    console.log("Mol "+(i+1))
    moleculeList[1][i].list();
}

代码/输出:

'C6H14 + O2 ==> CO2 + H2O'
Mol 1
C 6
H 14
Mol 2
O 2
==>
Mol 1
C 1
O 2
Mol 2
H 2
O 1

标签: javascriptmatrixchemistry

解决方案


我是一名化学家,对 Javascript 的熟悉程度为零,以便详细解释。但是这个方法很简单,用手来展示。该链接以干净的方式将其固定下来。

我链接到它而不详细执行步骤的唯一原因是因为 Stackoverflow 没有 LaTeX 数学以使文本易于理解,所以我认为你会从链接中的文本中受益更多。另外,我认为这不是一个完整的答案,但我没有足够的声誉将其放在评论中,它所属的地方。

我认为最难的一点是在步骤 5 中为矩阵的行梯级减少找到/编码适当的子程序。但我也相信有大量的算法适合做你可以在互联网上找到的事情。非常方便的是,这个网站有一个与此相关的问题,使用 python 代码来增加交易。

我希望这至少可以帮助您充分了解它以实现您需要的代码。

干杯


推荐阅读