Уравнения баланса химии
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
0 ответов
Я химик и совершенно не знаком с Javascript, чтобы подробно объяснить его. Но метод довольно просто показать вручную. Эта ссылка аккуратно закрепляет это.
Единственная причина, по которой я привязываюсь к нему, не вдаваясь в подробности, заключается в том, что в Stackru нет математики LaTeX, чтобы упростить отслеживание текста, поэтому я думаю, что текст в ссылке будет лучше. Кроме того, я не думаю, что это полный ответ, но у меня недостаточно репутации, чтобы поместить это в комментарий, которому он принадлежит.
Я думаю, что самым сложным является поиск / кодирование соответствующей подпрограммы для поэтапного сокращения матрицы на шаге 5. Но я также считаю, что существует огромное количество подходящих для этого алгоритмов, которые вы можете найти в Интернете. Очень удобно, что на этом самом веб-сайте есть вопрос, связанный именно с этим с кодом Python, чтобы подсластить сделку.
Я надеюсь, что это поможет вам хотя бы в достаточной мере осознать это, чтобы реализовать нужный код.
Ура