【问题标题】:Balance Chemistry Equations平衡化学方程式
【发布时间】:2018-12-14 15:33:44
【问题描述】:

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

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

代码/对象:

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

【问题讨论】:

  • @FedericoklezCulloca:如何利用矩阵求解方程并将其转换为化学中有效的整数。
  • ... 这个网站有点宽泛。你能把你的问题说得更具体些吗?
  • @Simon 把它分解成小的功能块,就像你一直在做的那样,你就会到达那里。我想你需要一些基于分子类型的值。自从我上化学课程以来已经有好几年了,所以我不再知道这些价值观是什么了。我记得使用了mol 和元素周期表,您可能希望将元素周期表声明为散列集以供快速参考
  • @RyanWilson 我已经听从了你的建议,并有一个解决这个问题的计划。但说到数学,我还有一些工作要做。但我不太确定如何简化这个方程以获得 'x' '6 + -1 * x = 0'
  • @Simon 您要么必须进行一些字符串解析,要么搜索可以添加到项目中的某种方程求解软件。如果要进行自己的自定义,我的第一个想法是解析数字和运算符并进行必要的数学计算来解决“x”,也许这篇文章会让你感动(stackoverflow.com/questions/27431870/…

标签: javascript matrix chemistry


【解决方案1】:

我是一名化学家,对 Javascript 的熟悉程度完全为零,因此可以详细解释它。但是这个方法很简单,用手来展示。 This link 以干净的方式将其钉牢。

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

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

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

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2022-12-25
    • 2011-01-23
    • 2016-05-19
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多