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