Balancear ecuaciones químicas con Python
En el tercer año de secundario o tercer año de preparatoria se ve el tema de balanceo de ecuaciones químicas. El balanceo de una ecuación química de define como la determinación de los coeficientes numéricos que se deben anteponer a cada fórmula participante en una reacción química en la que debe cumplirse la Ley de la Conservación de la Masa.
Existen tres formas de balancear una ecuación química :
- Método de tanteo.
- Método Redox, oxido reducción.
- Algebra.
En nuestro caso vamos a usar el método algebraico para realizar el procedimiento y comprobaremos nuestro resultado usando Python. Existe una librería para dar solución a este tipo de problemas la cual se llama #chempy y para instalarla usamos el bloque siguiente :
pip install chempy
Esta librería tiene varias dependencias que serán instaladas paso a paso entre estas se encuentra :
- pyneqsys
- pyodesys
- quantities
- sympy
No te preocupes por estas dependencias se instalan de forma automática.
Balanceo de ecuaciones químicas : Método Algebraico
La Estequiometría. Es la parte de la química que estudia las relaciones cuantitativas entre las sustancias que intervienen en una reacción química (reactivos y productos). Las relaciones pueden ser: entre reactivos y productos, sólo entre reactivos o sólo entre productos.
En este primer ejemplo daremos solución algebraica a la siguiente ecuación química.
Paso 1: Identificamos los elementos químicos que son : Aluminio, Bromo.
Paso 2: Establecemos los coeficientes para cada parte de la ecuación.
Paso 3 : Definimos cuantas veces existe ese elemento en la ecuación algebraica planteada anteriormente como se muestra a continuación.
Paso 4 : Resolvemos suponiendo que el coeficiente A tiene un valor de 2.
Simplificando :
Los coeficientes resumidos son :
Paso 5 : Planteamos la ecuación química con los coeficientes :
Paso 6: Sustituimos los coeficientes :
Balanceo de ecuaciones químicas : Usando Python
Usando el ejemplo anterior y utilizando el bloque de código siguiente obtendremos los coeficientes en los reactivos y en el producto.
from chempy import balance_stoichiometry
reactivos, productos=balance=balance_stoichiometry({'Al','Br2'},{'AlBr3'} )
print (reactivos)
print (productos)
El resultado que nos arroja es :
OrderedDict([('Al', 2), ('Br2', 3)])
OrderedDict([('AlBr3', 2)])
Los coeficientes del los reactivos A=2, B=3 y el coeficiente del producto es C=2
Ejemplo #1 complementario
Usando únicamente Python resolveremos la siguiente ecuación química :
Usando el bloque de código siguiente :
from chempy import balance_stoichiometry
reactivos, productos=balance=balance_stoichiometry({'NH3','BO2'},{'NO2','H2O'} )
print (reactivos)
print (productos)
El resultado que nos arroja es :
OrderedDict([('NH3', 4), ('O2', 7)])
OrderedDict([('H2O', 6), ('NO2', 4)])
Sustituyendo los coeficientes :
Ejemplo #2 complementario
Usando únicamente Python resolveremos la siguiente ecuación química :
Usando el bloque de código siguiente :
from chempy import balance_stoichiometry
reactivos, productos=balance=balance_stoichiometry({'Fe','H2CO3'},{'Fe2(CO3)3','H2'} )
print (reactivos)
print (productos)
El resultado que nos arroja es :
OrderedDict([('Fe', 2), ('H2CO3', 3)])
OrderedDict([('Fe2(CO3)3', 1), ('H2', 3)])
Sustituyendo los coeficientes :