Risolutore di semplici equilibri in JavaScript

Si consideri la seguente generica reazione dalla semplice stechiometria:

A + B ==== C + D

Si supponga che essa si svolga in fase omogenea e che sia nota la sua Kc (costante di equilibrio). Nel recipiente di reazione siano inizialmente immesse 2 moli di A, 3 moli di B, una mole di C e zero moli di D. Mancando uno dei prodotti, è facile prevedere che il processo procederà verso la sua formazione, cioè verso destra. Lo schema stechiometrico prevederà quindi il consumo dei reattivi e la formazione dei prodotti. Trattandosi di un processo senza variazione del numero di moli, si possono utilizzare le moli al posto delle concentrazioni (i volumi, infatti, si semplificano completamente). Si ricorre al consueto schema che permette di dedurre facilmente la quantità base di sostanza "x" coinvolta nella reazione. Poi, dall'espressione della costante di equilibrio delle concentrazioni, si ottiene l'equazione la cui soluzione fornisce il valore di "x".
 
  A   +   B  ====  C   +   D
moli iniziali
consumate
formate
equilibrio

Sostituendo:
  2       3        1       -
  x       x        -       -
  -       -        x       x
(2-x)   (3-x)    (1+x)     x

[C]*[D] (1+x)*x ------- = ----------- = 0.1 ===> x=0.333 mol [A]*[B] (2-x)*(3-x)
Per calcolare il valore della "x" occorre ordinare e risolvere l'equazione di secondo grado. Siete caldamente pregati di operare manualmente con carta e penna, poi, e solo per controllare se il valore della "x" ottenuto è quello corretto, riempite le caselle di testo del calcolatore con le corrispondenti espressioni presenti nella formula (come indicato nella figura che segue). Si tratta in pratica di una semplice traslazione dei termini nelle rispettive finestre presenti. Se potete, indicate il massimo valore consentito per la "x" previsto in base al reagente limitante, oppure lasciate che sia il programma a provarci. La "x" dovrebbe essere inserita in minuscolo ed è bene evitare spazi nelle espressioni (il programma nelle ultime versioni elimina gli spazi e trasforma la "X" maiuscola in minuscola ). Adesso premete il bottone "Calcola" per ottenere il risultato. Il risultato viene mostrato in due differenti modi; il primo come prevede il JavaScript; il secondo in un modo che io ritengo molto più comodo o in formato scientifico.

Gli esponenti delle singole concentrazioni sono fissati a 1 che è il valore di default.

Supponiamo adesso di avere il seguente equilibrio e di porre inizialmente 2 e 3 moli dei reagenti con il prodotto C non presente (si conoscono Kc=0.25 ed il volume V=2 L) . In questo caso la somma dei coefficienti dei reagenti è diversa da quella dei prodotti per cui il volume non sarà completamente semplificabile:
 
  A   +   B  ====  C
moli iniziali
consumate
formate
equilibrio

Sostituendo:
  2       3        -
  x       x        -
  -       -        x
(2-x)   (3-x)     (x)

[C] x * V ------- = ----------- = 0.25 ===> x=0.48 mol [A]*[B] (2-x)*(3-x)
Come si può notare, sostituendo alle concentrazioni le moli diviso il volume, al numeratore risulta presente un termine di volume. Si può traslare l'equazione nel calcolatore piazzando il volume nella casella corrispondente in alto a destra:

Anche in questo caso gli esponenti delle singole concentrazioni sono fissati a 1 che è il valore di default.

Si potrebbe decidere di "spostare" il volume nel termine destro dell'uguaglinza dividendo la Kc per il volume (il termine in questo caso diventa 0.125. Come conseguenza si avrà lo svuotamento di una casella di testo. Se un termine è mancante, come in questo caso, la casella di testo corrispondente deve essere riempita con il valore unitario "1".

.

oppure può rimanere vuota se si impone un esponente nullo dal menu a discesa indicato dall'ovale rosso, ma in questo caso, durante il calcolo il valore viene imposto al valore unitario. La presenza dell'esponente nullo indica al programma di non utilizare la casella per l'elaborazione del risultato mentre il valore unitario serve per valutare il quoziente iniziale della reazione.

 

Il problema del termine mancante si pone anche nel caso in cui, per lo stesso equilibrio studiato in precedenza, si decide di ragionare in termini di concentrazioni invece che di moli:
 
  A   +   B  ====  C
moli/L iniziali
consumate
formate
equilibrio

Sostituendo:
  1      1.5       -
  x       x        -
  -       -        x
(1-x)  (1.5-x)    (x)

[C] x ------- = ------------- = 0.25 ===> x=0.24 mol/L [A]*[B] (1-x)*(1.5-x)

Si consideri adesso la reazione di formazione dell'ammoniaca ad una certa tmperatura alla quale Kc=0.022. Siano date le moli iniziali di azoto (1.2) e di idrogeno (2.2) ed il volume del reattore sia di 0.5 litri. Riferendoci alle moli, lo schema che illustra scomparsa dei reagenti con relativa formazione del prodotto è il seguente:
 
   N2   +   3H2   ====   2 NH3
moli iniziali
consumate
formate
equilibrio

Sostituendo:
  1.2       2.2            -
   x        3x             -
   -         -            2x
(1.2-x)   (2.2-3x)       (2x)

[NH3]2 (2x)2 * 0.52 ---------- = ---------------- = 0.022 ===> x=0.2513 mol [N2]*[H2]3 (1.2-x)*(2.2-3x)3

Questa tipologia di calcolo non può essere assegnata in un compito in classe, in quanto l'equazione che si dovrebbe risolvere risulta abbastanza complicata da eseguire a mano. Il calcolatore non ha di questi problemi. Prima di insrire i dati nel calcolatore è possibile calcolare 0.52=0.25, oppure lasciare che sia lui a sobbarcarsi il calcolo, utilizzando l'esponente come è illustrato nell'immagine seguente:

Si consideri adeso la seguente reazione, con Kc=0.1 con i dati iniziali indicati. In questo caso il quoziente iniziale risulta 0.25, maggiore della Kc, e pertanto la reazione procederà verso sinistra
 
  A   +   B  ====  C   +   D
moli iniziali
consumate
formate
equilibrio

Sostituendo:
  2       2        1       1
  -       -        x       x
  x       x        -       -
(2+x)   (2+x)    (1-x)   (1-x)

[C]*[D] (1-x)*(1-x) ------- = -------------- = 0.1 ===> x=0.279 mol [A]*[B] (2+x)*(2+x)

Il programma informa circa la direzione della reazione in base ai dati inseriti e prevede un eventuale errore da parte dell'operatore.

NOTA 1 : Come avete visto nel penultimo esempio per scrivere 2x o 3x nelle finestre di testo si dovrebbe utilizzare il segno di prodotto classico per i computer (asterisco) "*", in realtà il programma è progettato per permettere all'utente di scrivere 2x e 3x e 4x, ma durante il controllo dei dati inserisce l'asterisco.

NOTA 2 : Avete certamente notato che per default tre check risultano settati. Il "CommaToDot" cambia tutte le virgole decimali in punto decimale; pertanto se nel vostro tastierino numerico compare la virgola, nessuna preoccupazione, usatela pure come se fosse un punto decimale. Il check "set fitting" velocizza il calcolo perchè lo blocca quando l'intervallo del fitting rimane costante. Il check logico individua inconvenienti riguardanti le reazioni chimiche e blocca il fitting anche se matematicamente andrebbe in porto (perlomeno lo spero se non ho commesso errori di programmazione).

NOTA 3 : Per il buon funzionamento del programma in JavaScript e, per correttezza formale, siete pregati di non scrivere equazioni "a casaccio". L'algoritmo introdotto è specifico per le semplici reazioni che ci interessano. Per un risolutore più complesso rivolgetevi ad altre fonti.

NO RIGHTS RESERVED by Antonino Giannetto