传说:
现在我的化学课已经超过了记忆方程式和诸如此类的东西,开始于平衡化学方程式。我可以坐一整天的平衡方程,但由于编程是我的热情,我很想让一个程序为我解决这些问题。这或多或少是一个宠物项目,更多的是为了好玩,而不是给我在化学课的优势。但我越深入研究,它就变得越复杂。我真的不知道如何开始这场十字军运动,相反,我已经开始了解析器和数据集的工作,这是非常好的一套,我的头被正确地围绕着。
问题:
我不知道的是如何利用矩阵来求解方程(平衡方程以保持质量*),并将其转化为在化学中有效的整数。
代码/对象:
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发布于 2019-09-05 16:49:40
我是一名化学家,对Javascript完全不熟悉,以便详细解释。但是这个方法很简单,可以用手来显示。这个链接以一种干净的方式把它钉下来。
我之所以在没有详细介绍步骤的情况下链接到它的唯一原因是,为了使文本易于理解,Stackoverflow没有LaTeX数学,所以我认为您将从链接中的文本中获益更多。此外,我不认为这是一个完整的答案,但我没有足够的声誉,把这个放在评论,它的归属。
我认为最困难的一点是在步骤-5中找到/编码适当的子例程来减少矩阵的行级。但我也相信,有大量的算法适合做那些你可以在互联网上找到的。非常方便,这个网站有一个一个与此有关的问题和一个python代码,使交易更甜蜜。
我希望这能帮助您至少将您的头脑集中到能够实现所需代码的程度。
干杯
https://stackoverflow.com/questions/53782683
复制相似问题