REACCIONES QUÍMICAS

EQUILIBRIOS QUÍMICOS

Creamos una reacción química en  formato Entity:

ChemicalReaction[<|Entity["Chemical","ZincHydroxide"]->1,Entity["Chemical","HydrogenChloride"]->1|>-><|Entity["Chemical","ZincChloride"]->1,Entity["Chemical","Water"]->1|>]

Podemos preguntar si la reacción está o no ajustada:

ReactionBalancedQ[%]

Por tanto, debemos ajustarla:

ReactionBalance[%%]

Creamos otra reacción química, pero en este caso en formato de cadena y la ajustamos:

ReactionBalance["AlPO4 + Ca(NO3)2 -> Al(NO3)3 + Ca3(PO4)2"]

Podemos escribir la reacción ajustada de forma clásica:

%["EquationDisplay"]//TraditionalForm

O también la podemos escribir en formato de cadena:

%%["EquationString"]

Creamos una reacción química, en formato de cadena y la ajustamos:

ChemicalReaction["Bi(NO3)3 + NaOH -> Bi(OH)3 + NaNO3"]

Podemos obtener el recuento de reactivos:

%["ReactantCounts"]

Otra reacción química, en formato de cadena:

ReactionBalance["FeCl2 + Na3PO4 -> Fe3(PO4)2 + NaCl"]

Podemos preguntar si la reacción está o no ajustada:

ReactionBalancedQ[ChemicalReaction["FeCl2 + Na3PO4 -> Fe3(PO4)2 + NaCl"]]

ReactionBalancedQ[ChemicalReaction["3FeCl2 + 2Na3PO4 -> Fe3(PO4)2 + 6NaCl"]]

Podemos preguntar si la reacción está o no ajustada por diferentes conjuntos de coeficientes:

ReactionBalancedQ/@{ChemicalReaction[<|ChemicalFormula[{"C"->1,"O"->1}]->1,ChemicalFormula[{"C"->1,"O"->2}]->1,ChemicalFormula[{"H"->2}]->7|>-><|ChemicalFormula[{"C"->1,"H"->4}]->2,ChemicalFormula[{"H"->2,"O"->1}]->3|>],ChemicalReaction[<|ChemicalFormula[{"C"->1,"O"->1}]->2,ChemicalFormula[{"C"->1,"O"->2}]->1,ChemicalFormula[{"H"->2}]->10|>-><|ChemicalFormula[{"C"->1,"H"->4}]->3,ChemicalFormula[{"H"->2,"O"->1}]->4|>],ChemicalReaction[<|ChemicalFormula[{"C"->1,"O"->1}]->1,ChemicalFormula[{"C"->1,"O"->2}]->2,ChemicalFormula[{"H"->2}]->11|>-><|ChemicalFormula[{"C"->1,"H"->4}]->3,ChemicalFormula[{"H"->2,"O"->1}]->5|>]}

Una reacción química de oxido reducción:

ReactionBalance[ChemicalReaction[<|ChemicalFormula[{"Cu"->1},<|"Phase"->"Aqueous","NetCharge"->1|>]->1,ChemicalFormula[{"Fe"->1},<|"Phase"->"Solid"|>]->1|>-><|ChemicalFormula[{"Fe"->1},<|"Phase"->"Aqueous","NetCharge"->3|>]->1,ChemicalFormula[{"Cu"->1},<|"Phase"->"Solid"|>]->1|>]]

Una reacción redox más complicada:

ReactionBalance[ChemicalReaction[<|ChemicalFormula[{{"Cr"->1,{"N"->2,"H"->4,"C"->1,"O"->1}->6}->4,{"Cr"->1,{"C"->1,"N"->1}->6}->3}]->1,ChemicalFormula[{"K"->1,"Mn"->1,"O"->4}]->1,ChemicalFormula[{"H"->2,"S"->1,"O"->4}]->1|>-><|ChemicalFormula[{"K"->2,"Cr"->2,"O"->7}]->1,ChemicalFormula[{"Mn"->1,"S"->1,"O"->4}]->1,ChemicalFormula[{"C"->1,"O"->2}]->1,ChemicalFormula[{"K"->1,"N"->1,"O"->3}]->1,ChemicalFormula[{"K"->2,"S"->1,"O"->4}]->1,ChemicalFormula[{"H"->2,"O"->1}]->1|>]]

Escribimos la reacción de solvatación (hidrólisis) del hidróxido de sodio:

ChemicalReaction["NaOH(s) -> Na+(aq) + OH-(aq)"]

La reacción inversa:

%["ReverseReaction"]

Una reacción de combustión:

ReactionBalance[ChemicalReaction[<|ChemicalFormula[{"C"->8,"H"->10,"N"->4,"O"->2}]->1,ChemicalFormula[{"O"->2}]->1|>-><|ChemicalFormula[{"C"->7,"H"->8,"N"->4,"O"->2}]->1,ChemicalFormula[{"H"->2,"O"->1}]->1,ChemicalFormula[{"C"->1,"O"->2}]->1|>]]

Otra reacción de combustión:

ChemicalReaction[<|Entity["Chemical","2Methylpropane"]->2,Entity["Chemical","MolecularOxygen"]->13|>-><|Entity["Chemical","CarbonDioxide"]->8,Entity["Chemical","Water"]->10|>]["ReactionRule"]

Podemos expresar su estequiometría usando gráficos 3D:

GraphicsRow/@KeyValueMap[GraphicsColumn[ConstantArray[MoleculePlot3D[#1],#2],ImageSize->80]&]/@ChemicalReaction[<|Entity["Chemical","2Methylpropane"]->2,Entity["Chemical","MolecularOxygen"]->13|>-><|Entity["Chemical","CarbonDioxide"]->8,Entity["Chemical","Water"]->10|>]["ReactionRule"]

Si una reacción no se puede equilibrar de forma única, se devuelve el equilibrio con la suma más baja de los coeficientes estequiométricos:

ReactionBalance[ChemicalReaction[<|ChemicalFormula[{"C"->1,"O"->1}]->1,ChemicalFormula[{"C"->1,"O"->2}]->1,ChemicalFormula[{"H"->2}]->1|>-><|ChemicalFormula[{"C"->1,"H"->4}]->1,ChemicalFormula[{"H"->2,"O"->1}]->1|>]]

Un equilibrio diferente de la misma reacción:

ReactionBalancedQ[ChemicalReaction[<|ChemicalFormula[{"C"->1,"O"->1}]->1,ChemicalFormula[{"C"->1,"O"->2}]->2,ChemicalFormula[{"H"->2}]->11|>-><|ChemicalFormula[{"C"->1,"H"->4}]->3,ChemicalFormula[{"H"->2,"O"->1}]->5|>]]

APLICACIONES

Apliquemos a la reacción de autoionización del agua:

ApplyReaction[PatternReaction["[H:1][O:2][H:3].[H:4][O:5][H:6]>>[O-:2][H:3].[H:4][O+:5]([H:1])[H:6]"],{Molecule["water"],Molecule["water"]}]

Apliquemos a la reacción entre un ácido orgánico (alanina) y una base (histidina):

ApplyReaction[PatternReaction["[C:1](=[O:2])[O:3][H:4].[NX3:5][CX4:6]>>[C:1](=[O:2])[O-:3].[N+:5]([H:4])[C:6]"],{Molecule["alanine"],Molecule["histidine"]}]

Apliquemos la misma reacción con los reactivos invertidos, tratando la histidina como ácido y la alanina como base:

ApplyReaction[PatternReaction["[C:1](=[O:2])[O:3][H:4].[NX3:5][CX4:6]>>[C:1](=[O:2])[O-:3].[N+:5]([H:4])[C:6]"],{Molecule["histidine"],Molecule["alanine"]}]

Aplicamos a la reacción de conversión de un alqueno en alcohol:

ApplyReaction[PatternReaction[{MoleculePattern[{"C","C"},{Bond[{1,2},"Double"]}],MoleculePattern[{"O"},{}]}->{MoleculePattern[{"C","C","O"},{Bond[{1,2},"Single"],Bond[{2,3},"Single"]}]},{{1,1}->{1,1},{1,2}->{1,2},{2,1}->{1,3}}],{Entity["Chemical","Propylene"],Entity["Chemical","Water"]},All]

Encuentre entidades químicas coincidentes para los productos:

% /. m_Molecule :> ToEntity[m]

Cree un patrón de la reacción de Diels-Alder a partir de una cadena SMARTS de reacción:

dielsAlder=PatternReaction["[C:1]=[C:2][C:3]=[C:4].[C:5]=[C:6]>>[C:1]1[C:2]=[C:3][C:4][C:5][C:6]1"]

Podemos escribir una función que devuelva reacciones químicas de combustión balanceadas:

combustionReaction[mol_?(MoleculeFreeQ[Atom[Except["C"|"H"|"O"]]])]:=ReactionBalance[ChemicalReaction[{mol,Entity["Chemical","MolecularOxygen"]}->{Entity["Chemical","CarbonDioxide"],Entity["Chemical","Water"]}]]

combustionReaction/@{"benzene","cyclohexane","anthracene"}