【发布时间】: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