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

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

0 голосов
/ 14 декабря 2018

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
...