javascript - 平衡化学方程式

标签 javascript matrix chemistry

知识:
现在我的化学课已经超越了内存方程式之类的东西,并开始了,例如,平衡化学方程式。我可以整天坐下来平衡方程式,但由于编程是我的热情所在,我很乐意让一个程序为我解决这些问题。这或多或少是一个宠物项目,更多的是为了好玩,而不是让我在化学课上有优势。但我越深入,它就变得越复杂。 我真的不知道如何开始这场运动,而是在解析器和数据集上工作,这是非常好的设置,让我的头脑正确地围绕着它。

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

代码/对象:

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

最佳答案

我是一名化学家,对 Javascript 的了解完全为零,因此无法对其进行详细解释。但该方法非常简单,可以手动显示。 This link以干净的方式把它钉下来。

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

我认为最难的部分是在第 5 步中找到/编码适当的子例程以减少矩阵的行梯形。但我也相信,您可以在互联网上找到大量适用于执行此操作的算法。非常方便,这个网站有a question related to just that用 python 代码来增加交易。

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

干杯

关于javascript - 平衡化学方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782683/

相关文章:

javascript - 如何在 jQuery 中执行 if 语句?

javascript - 为什么我得到不同的结果?使用名称.属性和名称[属性]

c# - 阵列阵列之间的距离

r - 错误: requires numeric/complex matrix/vector arguments when using matrix times vector multiplication

c++ - 初始化二维数组 C++

python - 如何将 rdkit DrawMorganBit 输出保存为图像?

javascript - CSS 菜单停止工作 -/function/is undefined 错误

accessibility - 表示辅助技术化学键的标记

regex - 查找小写化学式的所有可能排列

javascript - "for"内部 "setInterval"的索引