Your approach is - in general - incomplete. That is, it yields relatively good results, but it is based on approximations, validity of which you are not checking - so in some unlucky cases you can be completely off.
Correct approach to the general equilibrium calculation is to:
- Write equations describing all equilibria present in the solution.
- Write all mass balances for the solution.
- Write charge balance for the solution.
- Solve.
So, in the case of calcium carbonate solution, we have 4 equilibria present:
K_{sp} = [Ca^{2+}][CO_3^{2-}]
K_w = [H^+][OH^-]
K_{a1} = \frac {[H^+][HCO_3^-]}{[H_2CO_3]}
K_{a2} = \frac {[H^+][CO_3^{2-}]}{[HCO_3^-]}
Mass balance for the calcium carbonate:
[Ca^{2+}] = [H_2CO_3] + [HCO_3^-] + [CO_3^{2-}]
and charge balance for the solution:
2[Ca^{2+}] + [H^+] = [OH^-] + [HCO_3^-] + 2[CO_3^{2-}]
This is set of equations that describes the solution. 6 equations, 6 unknowns. They don't have to be easy to solve (heck, they AREN'T ease to solve), but once solved, they give you exact information about what is going on in solution.
If I understand correctly, your approach (the better one) doesn't contain full mass balance - that is, equations you wrote are equivalent to assumption that
[Ca^{2+}] = [HCO_3^-] + [CO_3^{2-}]
This is not a bad approximation, so your final results are close to the reality, but it is still approximation only, while the general approach doesn't need any approximation.
Note, that general approach can use any set of equilibrium constants, as long as equations are independent, and there are four of them. So I can replace K
a2 with overall dissociation constant K
a12 (see my earlier post) and I will get exactly the same result.
(side note: your equation K5 = b^2/(s-b) is a simple quadratic polynomial, so it doesn't require numerical approach).
--