Уравнения баланса химии

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, чтобы подсластить сделку.

Я надеюсь, что это поможет вам хотя бы в достаточной мере осознать это, чтобы реализовать нужный код.

Ура

Другие вопросы по тегам