javascript - 平衡化学方程式
问题描述
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
解决方案
我是一名化学家,对 Javascript 的熟悉程度为零,以便详细解释。但是这个方法很简单,用手来展示。该链接以干净的方式将其固定下来。
我链接到它而不详细执行步骤的唯一原因是因为 Stackoverflow 没有 LaTeX 数学以使文本易于理解,所以我认为你会从链接中的文本中受益更多。另外,我认为这不是一个完整的答案,但我没有足够的声誉将其放在评论中,它所属的地方。
我认为最难的一点是在步骤 5 中为矩阵的行梯级减少找到/编码适当的子程序。但我也相信有大量的算法适合做你可以在互联网上找到的事情。非常方便的是,这个网站有一个与此相关的问题,使用 python 代码来增加交易。
我希望这至少可以帮助您充分了解它以实现您需要的代码。
干杯
推荐阅读
- javascript - 当我尝试使用 ./(文件位置)时,Module_Not_Found 需要堆栈错误
- automation - 动态内容的选择器问题
- typescript - 如何从离子弹出模式中检索选定的值
- sql-server - 具有 ApplicationIntent 只读的 Azure SQL Server 弹性查询
- python - 为什么我的代码显示'for-loop'的效率高于'comprehension'的效率?
- scala - 值解析不是对象 org.joda.time.DateTime 的成员
- javascript - Javascript 将 ECDH 密钥转换为 ECDSA 密钥
- amazon-web-services - 如何启用来自 cloudFormation 文件的所有 RDS 流量?
- django - 使用 DRF create api 显示外键
- c# - 迁移是单独创建数据库,而不是表