3 votos

¿Cómo hallar las concentraciones del equilibrio ácido-base entre ácido sulfúrico y dióxido de azufre para un pH conocido utilizando Octave?

El sistema es una solución acuosa de ácido sulfúrico y dióxido de azufre. Sé cuánto azufre hay y conozco el pH. El sistema está en equilibrio. Me gustaría utilizar Octave para resolver el sistema.

He establecido las siguientes ecuaciones, ignorando $\ce{SO3^2-}$ porque el pH es de alrededor de 1,5.

Por definición: $$ \mathrm{pH} = -\log [\ce{H+}]$$

Conservación de la masa: $$[\ce{H2SO4}] + [\ce{H2SO3}] + [\ce{HSO4-}] + [\ce{SO4^2-}] + [\ce{HSO3-}] = M $$

Ecuaciones de Henderson-Hasselbalch para el sistema: \begin{align} \mathrm{pH} &= \mathrm{p}K_\mathrm{a}(\ce{HSO3-}) + \log \frac{[\ce{HSO3-}]}{[\ce{H2SO3}]}\\ \mathrm{pH} &= \mathrm{p}K_\mathrm{a}(\ce{SO4^2-}) + \log \frac{[\ce{SO4^2-}]}{[\ce{HSO4-}]}\\ \mathrm{pH} &= \mathrm{p}K_\mathrm{a}(\ce{HSO4-}) + \log \frac{[\ce{HSO4-}]}{[\ce{H2SO4}]}\\ \end{align}

A continuación, he definido el vector solución para que tenga el siguiente orden: $$ x = [ [\ce{H+}], [\ce{HSO4-}], [\ce{SO4^2-}], [\ce{HSO3-}], [\ce{H2SO4}], [\ce{H2SO3}] ]$$

y adjunto mi código para Octave. Por alguna razón siempre obtengo valores negativos para algunos de los resultados.

function y = phCalc(x)
   pH = 1.87;
   pKa1 = -5;   % this is a guess to drive H2SO4 to ionization in this system
   pKa2 = 1.987;% from a textbook
   pKa3 = 1.857;% from a text book
   M = 0.0012 / 32 * 1000 ; % total sulfur moles per volume
   y(1) = 10^(-pH) - x(1);
   y(2) = x(5) * 10^(pH-pKa1) - x(2);
   y(3) = x(2) * 10^(pH-pKa2) - x(3);
   y(4) = x(1) - x(2) - x(3) - x(4);
   y(5) = x(2) + x(3) + x(4) + x(5) + x(6) - M;
   y(6) = x(4) / 10^(pH-pKa3) - x(6);
endfunction

5voto

yura Puntos 121

Su código parece estar calculando el diferencias entre un vector de concentración adivinado x y un vector de concentración calculado. Estas diferencias de concentraciones entre las adivinadas y las calculadas son y . Por ejemplo, el pH adivinado es aparentemente x(1) y el pH calculado es 10^(-pH) . La diferencia entre ellos es y(1) .

Por ello, no es de extrañar que la y a veces son negativos. Para resolver el problema es necesario introducir la función en un solucionador numérico como fsolve . Esa función tomará tu solución adivinada x otros parámetros como pH Los distintos pKa s, y M y su función phCalc y devuelve el valor de x que hace que todos los y variables cero. Esa solución es la que quieres.

En cuanto a la química, mencionas el dióxido de azufre, pero no veo ninguna ecuación para la solubilidad del gas de dióxido de azufre en agua. Además, el dióxido de azufre se reduce en relación con el ácido sulfúrico, por lo que tendría que haber una reacción adicional, y un parámetro (extensión de la reacción o grado de reducción o algo así) que describa las cantidades relativas de azufre reducido (como dióxido de azufre, bisulfito o sulfito) frente al azufre oxidado (como sulfato, bisulfato, ácido sulfúrico o trióxido de azufre).

También está la cuestión del equilibrio de cargas: ¿qué concentración de cationes inertes (por ejemplo, sodio o potasio o lo que sea) se supone? El equilibrio de cargas debe mantenerse en una solución acuosa. Si no tienes sodio / potasio, etc., entonces debes incluir la autoionización del agua como una ecuación, hidróxido como una especie, y y(7) = x(1) - x(2) - 2*x(3) - x(4) - x(OH) como una ecuación. Si tienes una concentración significativa de sodio/potasio/lo que sea, puedes ignorar el hidróxido y utilizar la ecuación y(7) = x(1) - x(2) - 2*x(3) - x(4) + x(Na) donde x(Na) es la concentración de cationes, que he supuesto que es sodio.

#

5voto

Rahul Upadhyay Puntos 99

Lo que quieres resolver, es el siguiente sistema: $$ \frac{k_W}{\ce{[H+]}} - \ce{[H+]} + \frac{\ce{[H2SO4]0}\left(\ce{[H+]}~k_{a1}+2~k_{a1}k_{a2}\right)} {\ce{[H+]}^2+\ce{[H+]}~k_{a1}+k_{a1}k_{a2}} + \frac{\ce{[H2SO3]0}\left(\ce{[H+]}~k_{a3}+2~k_{a3}k_{a4}\right)} {\ce{[H+]}^2+\ce{[H+]}~k_{a3}+k_{a3}k_{a4}} = 0 $$ para ambas concentraciones de $\ce{[H2SO4]0}$ y $\ce{[H2SO3]0}$ con la restricción de que ambas concentraciones sumen $\mathrm{0.0375~mol/L}$ .

Tengo ni idea de cómo lo resolví con Octave (ver más abajo), pero como estoy más acostumbrado a Mathematica, esa fue mi primera aproximación para ver de dónde venía el error. El problema que tienes con esas soluciones negativas es que la restricción sobre las concentraciones no permite dos concentraciones positivas. Echa un vistazo a la siguiente imagen:

$\hskip3.5cm$enter image description here

El pH de una solución pura de ácido sulfúrico 0,0375 M sería algo así como 1,35. Si se modifica la mezcla reduciendo la cantidad de ácido sulfúrico y aumentando la de ácido sulfuroso, el pH aumenta. Una solución pura de ácido sulfuroso 0,0375 M tendría entonces un pH de aproximadamente 1,77.

Pero para concentraciones inferiores a $\mathrm{0.025~mol/L}$ el sistema es resoluble, lo que puede verse en la siguiente imagen. Se podría obtener el pH de 1,87 con una mezcla de 0,00086859742 M $\ce{H2SO4}$ y 0,024131403 M $\ce{H2SO3}$ .

$\hskip3.5cm$enter image description here


Ahora haciendo esto con Octave

Nunca he usado Octave, así que puede que haya una solución mejor. Pero este es mi código:

>> function y = Conc(x)
ka1 = 10^3; % wikipedia, sulfuric_acid
ka2 = 10^(-1.99); % wikipedia, sulfuric_acid
ka3 = 10^(-1.857); % wikipedia, sulfurous_acid
ka4 = 10^(-7.172); % wikipedia, sulfurous_acid
ctot = 0.025; % total sulfur concentration in mol/L
ph = 1.87; h = 10^-(ph);
oh = 10^(-14)/h;
xH2SO4 = (h * ka1 + 2 * ka1 * ka2)/(h^2 + h * ka1 + ka1 * ka2);
xH2SO3 = (h * ka3 + 2 * ka3 * ka4)/(h^2 + h * ka3 + ka3 * ka4);
y(1) = x(1) + x(2) - ctot;
y(2) = oh - h + x(1) * xH2SO4 + x(2) * xH2SO3;
endfunction
>> [x, fval, info] = fsolve(@Conc, [1; 2])
x =
  8.6860e-004
  2.4131e-002
fval =
  6.3704e-011  2.8976e-011
info =  1

Y como puedes ver, da exactamente las mismas soluciones que Mathematica. ( fval es el valor de y(1) e y(2) que están próximos a cero, por lo que todo va bien. info = 1 significa, que todo la solución ha convergido).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X