============================================================================== WHAT A BUFFER IS ACTUALLY RESISTING Science Journaling Club, computational study Volume 1, Issue 3, Spring 2025, 'Equilibrium Chemistry by Computer' ============================================================================== master seed : 20250321 python : 3.12.3 numpy : 2.4.2 rng : numpy PCG64 seeded from the master seed pKw at 25 C / 37 C : 14.000 / 13.620 units : concentrations mol/L, beta mol/L per pH unit No solution was mixed. The club has no laboratory. The computation is the experiment, and every number below is arithmetic on a model. ============================================================================== 0. DOES THE SOLVER GET SIMPLE, KNOWN ANSWERS RIGHT? ============================================================================== Test solution: 0.100 M acetic acid, pKa 4.756, 25 C. pH of the unbuffered acid, exact solver : 2.880876 textbook sqrt(Ka*C) shortcut : 2.878000 difference : +0.002876 pH at half neutralisation, exact solver : 4.756304 pKa : 4.756000 difference : +0.000304 pH at the equivalence point, exact solver : 8.878022 textbook weak-base shortcut : 8.878000 difference : +0.000022 solver round trip, max |pH_in - pH_out| over 0.5-14.5: 4.707e-13 The shortcuts are not wrong so much as approximate. The solver keeps the terms the shortcuts throw away, which is why it can be trusted at the extremes where the shortcuts fall apart. ============================================================================== 1. VALIDATION: NUMERICAL DERIVATIVE AGAINST THE ANALYTIC EXPRESSION ============================================================================== System: 0.100 M acetic acid, pKa 4.756, 25 C, ideal solution. Three independent routes to the same quantity: beta_exact ln10 [ Kw/h + h + C Ka h/(Ka+h)^2 ] equation (2) beta_num five-point finite difference of Cb(pH) beta_solve dose with strong base, re-solve for pH, divide pH beta_exact beta_num diff rel beta_solve rel ------------------------------------------------------------------------------ 1.00 0.2302988797 0.2302988797 -2.394e-13 -1.04e-12 0.2302988757 -1.77e-08 1.50 0.0729416998 0.0729416998 -8.554e-14 -1.17e-12 0.0729416985 -1.75e-08 2.00 0.0234282840 0.0234282840 -2.548e-14 -1.09e-12 0.0234282836 -1.59e-08 2.50 0.0085444373 0.0085444373 -8.516e-15 -9.97e-13 0.0085444373 -4.42e-09 3.00 0.0062030262 0.0062030262 -4.721e-15 -7.61e-13 0.0062030263 +6.80e-09 3.50 0.0121919787 0.0121919787 +2.776e-16 +2.28e-14 0.0121919786 -9.85e-09 4.00 0.0294618964 0.0294618964 +2.951e-14 +1.00e-12 0.0294618961 -1.04e-08 4.50 0.0529129593 0.0529129593 +4.226e-15 +7.99e-14 0.0529129590 -5.46e-09 5.00 0.0532737509 0.0532737509 +1.302e-14 +2.44e-13 0.0532737506 -5.41e-09 5.50 0.0298082016 0.0298082016 +3.971e-14 +1.33e-12 0.0298082013 -1.08e-08 6.00 0.0117527138 0.0117527138 +1.900e-14 +1.62e-12 0.0117527136 -1.50e-08 6.50 0.0040066482 0.0040066482 -3.425e-15 -8.55e-13 0.0040066481 -1.68e-08 7.00 0.0012984685 0.0012984685 -3.161e-15 -2.43e-12 0.0012984685 -1.74e-08 7.50 0.0004144681 0.0004144681 -1.328e-14 -3.20e-11 0.0004144681 -1.70e-08 8.00 0.0001334612 0.0001334612 +1.196e-14 +8.96e-11 0.0001334612 -1.67e-08 8.50 0.0000487897 0.0000487897 +6.804e-15 +1.39e-10 0.0000487897 -3.31e-09 9.00 0.0000361552 0.0000361552 -3.339e-15 -9.24e-11 0.0000361552 +7.45e-09 9.50 0.0000769663 0.0000769663 -9.452e-16 -1.23e-11 0.0000769663 -1.16e-08 10.00 0.0002315716 0.0002315716 +7.464e-15 +3.22e-11 0.0002315716 -1.70e-08 10.50 0.0007285566 0.0007285566 -1.307e-15 -1.79e-12 0.0007285566 -1.75e-08 11.00 0.0023027164 0.0023027164 -7.229e-15 -3.14e-12 0.0023027164 -1.77e-08 11.50 0.0072814549 0.0072814549 -6.858e-15 -9.42e-13 0.0072814548 -1.77e-08 12.00 0.0230258641 0.0230258641 -4.547e-14 -1.97e-12 0.0230258637 -1.77e-08 12.50 0.0728141382 0.0728141382 -1.244e-13 -1.71e-12 0.0728141369 -1.77e-08 13.00 0.2302585106 0.2302585106 -3.952e-13 -1.72e-12 0.2302585065 -1.77e-08 ------------------------------------------------------------------------------ largest relative difference, finite difference : 1.395e-10 largest relative difference, titration route : 1.769e-08 VERDICT: all three routes agree. The finite difference matches the analytic expression to the limit of double precision. The titration route, which never differentiates anything, agrees to 1e-7, which is the bisection tolerance on the two re-solved pH values. ============================================================================== 2. VALIDATION: IS THE MAXIMUM REALLY AT pH = pKa? ============================================================================== Claim under test: buffer capacity peaks where pH equals pKa, with a peak value of ln(10)*C/4. Setting d(beta)/d(pH) = 0 in equation (2) gives -Kw/h + h + C Ka h (Ka - h)/(Ka + h)^3 = 0 At h = Ka the third term vanishes but the first two do not, unless Ka^2 = Kw. So the peak sits at pH = pKa only when pKa = pKw/2. Expanding about h = Ka(1 + eps) gives the displacement delta_pH ~ -(8/(C ln10)) * (Ka - Kw/Ka) pKa C pH_max pH_max - pKa predicted found/pred ------------------------------------------------------------------------------ 2.0 0.100 no peak - -3.474e-01 - 2.0 0.010 no peak - -3.474e+00 - 3.0 0.100 2.96198084 -3.802e-02 -3.474e-02 1.09428 3.0 0.010 no peak - -3.474e-01 - 4.0 0.100 3.99649744 -3.503e-03 -3.474e-03 1.00812 4.0 0.010 3.96198088 -3.802e-02 -3.474e-02 1.09428 5.0 0.100 4.99965232 -3.477e-04 -3.474e-04 1.00080 5.0 0.010 4.99649778 -3.502e-03 -3.474e-03 1.00812 6.0 0.100 5.99996560 -3.440e-05 -3.440e-05 1.00008 6.0 0.010 5.99965576 -3.442e-04 -3.440e-04 1.00081 7.0 0.100 7.00000000 +0.000e+00 +4.598e-22 0.00000 7.0 0.010 7.00000000 +0.000e+00 +4.598e-21 0.00000 8.0 0.100 8.00003440 +3.440e-05 +3.440e-05 1.00008 8.0 0.010 8.00034424 +3.442e-04 +3.440e-04 1.00081 9.0 0.100 9.00034768 +3.477e-04 +3.474e-04 1.00080 9.0 0.010 9.00350222 +3.502e-03 +3.474e-03 1.00812 10.0 0.100 10.00350256 +3.503e-03 +3.474e-03 1.00812 10.0 0.010 10.03801912 +3.802e-02 +3.474e-02 1.09428 11.0 0.100 11.03801916 +3.802e-02 +3.474e-02 1.09428 11.0 0.010 no peak - +3.474e-01 - 12.0 0.100 no peak - +3.474e-01 - 12.0 0.010 no peak - +3.474e+00 - ------------------------------------------------------------------------------ cases with a genuine local maximum : 16 cases with no local maximum at all : 6 largest |pH_max - pKa| for pKa 4-10 at 0.100 M : 3.503e-03 pH units VERDICT: the textbook claim holds to within 0.0036 pH units for any 0.100 M buffer between pKa 4 and pKa 10, and to within 0.00035 pH units between pKa 5 and pKa 9. The residual is not noise. It is the water term, and the first-order prediction reproduces it with a found/predicted ratio of 1.000 wherever the displacement is small enough for the expansion to hold. At pKa 7.000 the displacement is identically zero, because that is the one place where Ka = Kw/Ka. The club did not expect a displacement at all and spent an afternoon looking for a bug before finding the algebra. The rows marked 'no peak' are the real surprise. A pKa 2 or pKa 12 buffer at these concentrations produces no maximum whatsoever: the capacity falls monotonically away from the strong-acid wall, and the buffer contributes a shoulder rather than a peak. Below about 0.01 M the same thing happens at pKa 3. Anything you buy labelled as a buffer for pH 2 is relying on the solvent, not on the conjugate pair. Peak height against the analytic prediction ln(10)*C/4: pKa C beta_max ln10*C/4 difference rel ------------------------------------------------------------------------------ 3.0 0.100 0.0599677242 0.0575646273 +2.403e-03 0.041746 4.0 0.100 0.0577958146 0.0575646273 +2.312e-04 0.004016 4.0 0.010 0.0059967726 0.0057564627 +2.403e-04 0.041746 5.0 0.100 0.0575876647 0.0575646273 +2.304e-05 0.000400 5.0 0.010 0.0057795837 0.0057564627 +2.312e-05 0.004017 6.0 0.100 0.0575669530 0.0575646273 +2.326e-06 0.000040 6.0 0.010 0.0057587892 0.0057564627 +2.327e-06 0.000404 7.0 0.100 0.0575650878 0.0575646273 +4.605e-07 0.000008 7.0 0.010 0.0057569232 0.0057564627 +4.605e-07 0.000080 8.0 0.100 0.0575669530 0.0575646273 +2.326e-06 0.000040 8.0 0.010 0.0057587892 0.0057564627 +2.327e-06 0.000404 9.0 0.100 0.0575876647 0.0575646273 +2.304e-05 0.000400 9.0 0.010 0.0057795837 0.0057564627 +2.312e-05 0.004017 10.0 0.100 0.0577958146 0.0575646273 +2.312e-04 0.004016 10.0 0.010 0.0059967726 0.0057564627 +2.403e-04 0.041746 11.0 0.100 0.0599677242 0.0575646273 +2.403e-03 0.041746 ------------------------------------------------------------------------------ VERDICT: ln(10)*C/4 is exact for the buffer term and low for the total by very close to the water contribution ln(10)*(Kw/h + h) at the peak. For pKa 7 at 0.100 M that correction is eight parts per million. For pKa 3 at 0.100 M it is 4%, because there the solvent is helping. ============================================================================== 3. HOW FAST CAPACITY FALLS OUTSIDE THE WINDOW ============================================================================== Ignoring water, beta/beta_max = 4r/(1+r)^2 with r = 10^(pKa - pH). Setting that to one half gives r^2 - 6r + 1 = 0, so r = 3 + 2*sqrt(2) and the half-capacity points sit at pKa +/- log10(3 + 2*sqrt(2)). analytic half-width, pH units : 0.765551371 analytic full width : 1.531102741 Retained fraction of peak capacity at a given distance from pKa, water excluded, 4r/(1+r)^2 with r = 10^d: d (pH) fraction 1 in ------------------------------------------------------------------------------ 0.0000 1.000000000 1.0 0.2500 0.921527183 1.1 0.5000 0.730126136 1.4 0.7655 0.500041821 2.0 1.0000 0.330578512 3.0 1.5000 0.118855189 8.4 2.0000 0.039211842 25.5 2.5000 0.012569489 79.6 3.0000 0.003992012 250.5 4.0000 0.000399920 2500.5 ------------------------------------------------------------------------------ Now the same thing computed, not derived, from the full model with water present. 0.100 M buffers, 25 C: pKa pH_max half lo half hi width width - exact ------------------------------------------------------------------------------ 4.0 3.996497 3.205999 4.763932 1.557933 +2.683e-02 5.0 4.999652 4.231810 5.765390 1.533580 +2.477e-03 6.0 5.999966 5.234187 6.765538 1.531351 +2.483e-04 7.0 7.000000 6.234424 7.765576 1.531152 +4.914e-05 8.0 8.000034 7.234462 8.765813 1.531351 +2.483e-04 9.0 9.000348 8.234610 9.768190 1.533580 +2.477e-03 10.0 10.003503 9.236068 10.794001 1.557933 +2.683e-02 ------------------------------------------------------------------------------ VERDICT: the computed half-capacity window matches the analytic 1.531103 pH units to five parts in a hundred thousand at pKa 7, to two parts in ten thousand at pKa 6 and 8, and to 1.8% at pKa 4 and 10, where the water walls have begun to crowd the window. Nothing here is noise; every deviation is the solvent. The conventional 'pKa plus or minus one' is generous: at one unit out you are down to 33.06% of peak, not 50%. ============================================================================== 4. DOES CAPACITY SCALE WITH CONCENTRATION? ============================================================================== Buffer at pKa 7.000, 25 C. The buffer term of equation (2) is linear in C, so beta_max should be too, once the water floor is subtracted. C (mol/L) beta_max beta_max/C water floor buffer/total ------------------------------------------------------------------------------ 0.0001 0.0000580251 0.580251443 0.0000004605 0.992063 0.0010 0.0005761068 0.576106790 0.0000004605 0.999201 0.0050 0.0028786919 0.575738377 0.0000004605 0.999840 0.0100 0.0057569232 0.575692325 0.0000004605 0.999920 0.0500 0.0287827742 0.575655484 0.0000004605 0.999984 0.1000 0.0575650878 0.575650878 0.0000004605 0.999992 0.2500 0.1439120288 0.575648115 0.0000004605 0.999997 0.5000 0.2878235971 0.575647194 0.0000004605 0.999998 1.0000 0.5756467338 0.575646734 0.0000004605 0.999999 ------------------------------------------------------------------------------ ln(10)/4, the predicted slope : 0.575646273 VERDICT: beta_max/C converges on ln(10)/4 = 0.575646 from above, the excess being the water floor of 4.605e-7 mol/L per pH unit at pH 7. At 0.1 mM the water contributes 0.8% of the total. At 1 M it contributes eight parts in ten million. A very dilute buffer is not really a buffer; it is water with a flavour. ============================================================================== 5. TWO BUFFERS IN THE SAME BEAKER ============================================================================== Total concentration fixed at 0.100 M, split evenly between two monoprotic buffers whose pKa values straddle pH 7.000 by +/- D/2. The pair produces one flat-topped peak while D is small and two separate peaks once D is large. The changeover is where the second derivative at the midpoint vanishes, and that condition reduces to cosh(ln10 * D/2) = 2, so D* = 2*arccosh(2)/ln(10) analytic split threshold D* : 1.143895095 Width below is the span between the outermost pH values where the mixture still delivers half of what a single 0.100 M buffer manages at its own peak, i.e. beta >= ln(10)*0.100/8 = 0.02878231. D beta(pH 7) beta_max peak at shape width ------------------------------------------------------------------------------ 0.0000 0.0575650878 0.0575650878 7.000000 single 1.531162 0.5000 0.0530478294 0.0530478294 7.000000 single 1.581874 0.9000 0.0445103718 0.0445103718 7.000000 single 1.694127 1.0000 0.0420298995 0.0420298995 7.000000 single 1.731773 1.1439 0.0383768787 0.0383768787 7.004513 split 1.792408 1.2000 0.0369466881 0.0370583723 6.749454 split 1.818067 1.5000 0.0295160855 0.0326656987 6.378454 split 1.973592 2.0000 0.0190300894 0.0299591255 6.036180 split 2.294550 2.5000 0.0116068006 0.0291527028 5.761006 split 2.678011 3.0000 0.0068423152 0.0289049058 5.503269 split 3.107433 ------------------------------------------------------------------------------ VERDICT: the numerical scan flips from a single central peak to a split pair between D = 1.1439 and D = 1.2000, which brackets the analytic threshold 1.143895. Spacing the pKa values by roughly that amount buys the widest useful plateau. A single 0.100 M buffer holds half its own peak over 1.531 pH units. The best-spaced pair holds half of that same reference capacity over about two and a third pH units, for a peak that is lower. Width is bought with height. Two real pairs, each at 0.050 M per component, 25 C: acetate + phosphate pKa 4.756 and 7.198, separation 2.442 highest capacity anywhere : 0.029241 at pH 4.767 lowest point between them : 0.012320 at pH 5.977 that dip, relative to peak: 0.4213 past the split threshold : yes citrate 2nd + 3rd pKa 4.761 and 6.396, separation 1.635 highest capacity anywhere : 0.031611 at pH 4.850 lowest point between them : 0.026408 at pH 5.579 that dip, relative to peak: 0.8354 past the split threshold : yes phosphate + tris pKa 7.198 and 8.072, separation 0.874 highest capacity anywhere : 0.045142 at pH 7.637 lowest point between them : 0.040756 at pH 7.198 that dip, relative to peak: 0.9028 past the split threshold : no Acetate and phosphate sit 2.442 pH units apart, well past the threshold, so the mixture sags to 42.1% of its peak in the middle. Citrate's own second and third steps sit 1.635 apart and sag only to 83.5%. Phosphate and tris sit 0.874 apart, inside the threshold, and show no dip in the middle at all. Their capacity is one broad peak at pH 7.637, and the lowest value between the two pKa figures sits at an end of that interval rather than inside it. ============================================================================== 6. THE CARBON DIOXIDE SYSTEM AT BLOOD pH, CLOSED AND OPEN ============================================================================== Conditions: 37 C, pH 7.400, pCO2 40.0 mmHg, apparent pK1' 6.100, apparent pK2' 9.800, CO2 solubility 0.0307 mmol/L per mmHg, pKw 13.620. Speciation derived from those inputs, not assumed: dissolved CO2 (H2CO3*) : 1.2280 mmol/L bicarbonate HCO3- : 24.5018 mmol/L carbonate CO3-- : 0.0975 mmol/L total carbonate CT : 25.8274 mmol/L clinical value for HCO3- at these settings : 24 mmol/L The model was given pH and pCO2 and produced 24.50 mmol/L bicarbonate. That is the number a blood gas analyser reports for a healthy adult, and nothing in the calculation was tuned to make it come out. beta, CLOSED system (CT fixed) : 0.002940 mol/L per pH same, in clinical units : 2.940 mmol/L per pH beta, OPEN system (pCO2 fixed) : 0.057317 mol/L per pH same, in clinical units : 57.317 mmol/L per pH RATIO open / closed : 19.4975 simple prediction 1 + 10^(pH - pK1') : 20.9526 difference from the full model : -1.4551 relative difference : -0.0694 Where the simple prediction comes from: drop the carbonate ion and the water term, and beta_closed = ln10*CT*a0*a1 while beta_open = ln10*CT*a1, so the ratio is 1/a0 = 1 + K1/h. The full model sits 6.9% below that because of the carbonate ion, which the shortcut drops. Carbonate contributes four times its own concentration to the closed capacity through the 4*K1*K2*h^2 term and rather less to the open one, so keeping it raises the denominator more than the numerator. Published comparison, for the club's own check: teaching value ln(10) x 24 mmol/L bicarbonate : 55.26 mmol/L per pH this model : 57.3 mmol/L per pH difference : +2.06 mmol/L per pH relative : +3.7% measured plasma buffer capacity, all buffers : 16.1 mmol/L per pH measured whole-blood buffer capacity, all buffers : 38.5 mmol/L per pH VERDICT: the open system buffers 19.5 times better than the closed one at blood pH. That reproduces the standard physiological result, which is usually quoted as roughly twentyfold. The model's open-system capacity sits 3.7% above the ln(10) x 24 teaching value, the excess being the half millimole of extra bicarbonate our inputs imply plus the carbonate ion the teaching version drops. ============================================================================== 7. THE OPEN SYSTEM HAS NO OPTIMUM AT ALL ============================================================================== A closed buffer has a maximum at pH = pKa and falls away on both sides. Equation (7) does not. At fixed pCO2, bicarbonate rises by a factor of ten for every pH unit, so capacity rises with it. pH beta_open beta_closed ratio HCO3- (mmol/L) ------------------------------------------------------------------------------ 6.00 0.00224980 0.00125496 1.7927 0.9754 6.20 0.00356482 0.00157924 2.2573 1.5460 6.40 0.00565179 0.00188861 2.9926 2.4502 6.60 0.00896494 0.00215771 4.1548 3.8833 6.80 0.01422884 0.00237722 5.9855 6.1546 7.00 0.02260339 0.00255613 8.8428 9.7544 7.20 0.03595574 0.00272334 13.2028 15.4596 7.40 0.05731742 0.00293972 19.4975 24.5018 7.60 0.09167471 0.00333881 27.4573 38.8328 7.80 0.14738652 0.00423461 34.8052 61.5458 8.00 0.23884659 0.00639051 37.3752 97.5435 8.20 0.39174561 0.01167627 33.5506 154.5960 8.40 0.65403006 0.02464780 26.5350 245.0182 ------------------------------------------------------------------------------ Monotonicity check. beta_open has exactly one turning point, a minimum, where the strong-acid term h stops dominating and the bicarbonate term K1*S/h takes over. Above that point it rises without limit and never turns back. location of the single minimum : pH 4.506 beta_open strictly increasing above it, up to pH 11 : yes a closed buffer, by contrast : has a maximum and falls away both sides A closed carbonate system of the same total carbonate peaks at its own pK1' and is worth: beta_closed at its own optimum pH 6.10 : 14.881 mmol/L per pH beta_open at blood pH 7.40, 1.3 units off : 57.317 mmol/L per pH open, off-optimum, beats closed, on-optimum, by : 3.85 times This is the answer to the question the study set out with. Blood does not buffer well at pH 7.4 despite the carbonate pK1' being 6.1. It buffers well BECAUSE the system is open, and openness converts the 1.3-unit offset from a penalty into an advantage: the further above pK1' you sit, the more bicarbonate a fixed pCO2 generates. closed buffer at pKa 7.40 needed to match the open system: 99.6 mmol/L total carbonate actually present : 25.8 mmol/L factor : 3.86 ============================================================================== 8. WHAT A DOSE OF ACID ACTUALLY DOES ============================================================================== Capacity is a derivative, so it only describes small doses exactly. Here we add strong acid to one litre and re-solve the full equations, with no linearisation anywhere. acid mmol/L pH open pH closed dpH open dpH closed ------------------------------------------------------------------------------ 1.0 7.3822 7.1342 -0.0178 -0.2658 2.0 7.3636 6.9547 -0.0364 -0.4453 5.0 7.3024 6.6055 -0.0976 -0.7945 10.0 7.1760 6.2204 -0.2240 -1.1796 20.0 6.6820 5.4473 -0.7180 -1.9527 ------------------------------------------------------------------------------ Linear prediction against the exact solve, 10 mmol/L of strong acid: open, exact : 7.1760 open, pH - dose/beta : 7.2255 open, error of the linear estimate : +0.0496 pH closed, exact : 6.2204 closed, pH - dose/beta : 3.9983 closed, error of the linear estimate : -2.2221 pH VERDICT: for the open system the derivative is an honest guide even at 10 mmol/L, because capacity barely changes over that interval. For the closed system the linear estimate is badly wrong, and wrong in the reassuring direction: it predicts a pH the solution never reaches, because capacity collapses as the bicarbonate is consumed. A metabolic acid load of 10 mmol/L is survivable in the open system and catastrophic in the closed one. ============================================================================== 9. MONTE CARLO: HOW WELL DO WE KNOW THAT RATIO? ============================================================================== The open/closed ratio depends on five inputs the club does not know exactly. We draw them 200000 times and recompute the ratio each time. The distributions below are the club's stated priors. They are assumptions, not measurements, and they are the weakest link in the uncertainty estimate. pH normal(7.400, 0.020), clipped to [7.30, 7.50] pCO2 normal(40.0, 3.0) mmHg, clipped to [30, 55] pK1' normal(6.100, 0.020) pK2' uniform(9.80, 10.40), the published range for plasma alpha normal(0.0307, 0.0008) mmol/L per mmHg master seed : 20250321 trials : 200000 generator : numpy 2.4.2, PCG64 mean ratio : 20.1620 standard deviation across draws : 1.2135 standard error of the mean : 0.00271 relative standard error : 0.0135 % 2.5% 25% median 75% 97.5% ------------------------------------------------------------------------------ 17.9024 19.3195 20.1237 20.9568 22.6448 ------------------------------------------------------------------------------ mean open-system beta : 57.018 mmol/L per pH sd of open-system beta : 5.878 mmol/L per pH standard error : 0.0131 mmol/L per pH Convergence of the running mean (every tenth checkpoint shown): trials running mean running SE mean +/- 1 SE ------------------------------------------------------------------------------ 10 20.1066 0.43455 19.6720-20.5411 22 20.0610 0.26695 19.7941-20.3280 45 19.9579 0.19178 19.7661-20.1497 91 19.9423 0.12523 19.8171-20.0675 186 20.1448 0.08923 20.0556-20.2340 379 20.0862 0.05945 20.0267-20.1456 772 20.0812 0.04223 20.0390-20.1234 1574 20.1006 0.02976 20.0708-20.1303 3209 20.1190 0.02158 20.0974-20.1406 6543 20.1625 0.01518 20.1474-20.1777 13342 20.1665 0.01054 20.1560-20.1771 27204 20.1676 0.00734 20.1602-20.1749 55471 20.1639 0.00517 20.1587-20.1691 113107 20.1598 0.00361 20.1562-20.1635 200000 20.1620 0.00271 20.1593-20.1647 ------------------------------------------------------------------------------ central-value ratio from section 6 : 19.4975 Monte Carlo mean : 20.1620 difference in standard errors : 244.87 The Monte Carlo mean sits 245 standard errors from the central-value calculation of section 6. That is not a disagreement about chemistry. The central value uses pK2' = 9.800, which is the BOTTOM edge of the uniform prior; the prior's own mean is 10.100. Rerunning section 6 at pK2' = 10.100 gives: central-value ratio at pK2' = 10.100 : 20.1848 which sits two percent of one standard deviation from the Monte Carlo mean. The remaining sliver is genuine curvature: the ratio is nonlinear in pH and pK1', so the average of the function is not the function of the average. The standard error, 0.00271, measures how many draws we took. It says nothing about how well anyone knows plasma chemistry. The standard deviation, 1.213, is the honest width, and it is four hundred times larger. ============================================================================== 10. SENSITIVITY: WHICH CHOICES WOULD HAVE CHANGED THE ANSWER? ============================================================================== One input moved at a time, everything else held at the base case. variant ratio change beta_open ------------------------------------------------------------------------------ base case 19.4975 +0.0000 57.317 pK1' 6.03 (Siggaard-Andersen low) 22.4607 +2.9632 67.342 pK1' 6.17 16.9156 -2.5819 48.785 pK2' 10.10 (mean of the MC prior) 20.1848 +0.6872 56.869 pK2' 10.33 (thermodynamic 25 C) 20.4874 +0.9898 56.684 pK2' 9.60 18.7648 -0.7328 57.843 pCO2 30 mmHg (hyperventilating) 19.4944 -0.0031 42.988 pCO2 55 mmHg (retaining) 19.5001 +0.0025 78.811 pH 7.25 (acidotic) 14.5853 -4.9122 40.392 pH 7.55 (alkalotic) 25.3891 +5.8916 81.486 alpha 0.0301 19.4974 -0.0002 56.197 alpha 0.0313 19.4977 +0.0002 58.438 pKw 14.00 (25 C water) 19.5026 +0.0051 57.317 ------------------------------------------------------------------------------ VERDICT: pH and pK1' dominate, as the 1 + 10^(pH - pK1') form predicts. Nothing else moves the ratio by more than a few percent. Dropping to 25 C water changes it in the fifth decimal, which is the clearest possible statement that water itself buffers nothing here. HOW GOOD DOES THE LUNG HAVE TO BE? A perfect lung pins pCO2. A stoppered beaker lets pCO2 climb as acid is added, because the acid converts bicarbonate straight back into dissolved carbon dioxide. Let g be the number of decades pCO2 rises per unit fall in pH: pCO2(pH) = pCO2_0 * 10^(-g*(pH - 7.400)) g = 0 is the fully open system of section 6. Negative g is active hyperventilation, which blows carbon dioxide off faster than the chemistry makes it. Somewhere near g = 1 the system behaves like the stoppered beaker. The capacity below is a five-point finite difference of the full proton condition with pCO2 varying this way. g beta mmol/L per pH fraction of open ------------------------------------------------------------------------------ -0.30 0.07437744 74.377 1.2976 -0.10 0.06300409 63.004 1.0992 0.00 0.05731742 57.317 1.0000 0.05 0.05447408 54.474 0.9504 0.10 0.05163074 51.631 0.9008 0.25 0.04310073 43.101 0.7520 0.50 0.02888405 28.884 0.5039 0.75 0.01466737 14.667 0.2559 0.90 0.00613736 6.137 0.1071 1.00 0.00045068 0.451 0.0079 ------------------------------------------------------------------------------ g that reproduces the closed-system capacity : 0.956230 beta at that g : 2.940 mmol/L per pH closed-system beta from section 6 : 2.940 mmol/L per pH VERDICT: capacity falls almost exactly linearly in g, because the bicarbonate term of equation (7) carries a factor (1 - g). Letting pCO2 drift by a tenth of a decade per pH unit costs 10% of the capacity. Letting it drift by 0.956 decades, which is what a sealed container does, costs 94.9%. The lung does not have to be perfect. It has to be better than a cork. ============================================================================== 11. SUMMARY OF HEADLINE NUMBERS ============================================================================== peak capacity of a monoprotic buffer ln(10)*C/4 0.057565 mol/L per pH at C = 0.100 position of that peak pH = pKa within 0.0036 pH for pKa 4-10 at 0.100 M exact displacement at pKa 7.000 zero 0.000e+00 pH units half-capacity half-width log10(3 + 2 sqrt 2) 0.765551 pH units capacity retained one pH unit from pKa 40/121 0.3306 capacity retained two pH units from pKa 400/10201 0.03921 two-buffer split threshold 2 arccosh(2)/ln10 1.143895 pH units blood, bicarbonate from pH and pCO2 model output 24.50 mmol/L blood, open-system capacity model output 57.32 mmol/L per pH blood, closed-system capacity model output 2.940 mmol/L per pH open / closed ratio, central value model output 19.498 open / closed ratio, Monte Carlo 200000 draws 20.162 +/- 0.0027 (SE), sd 1.213 simple prediction for that ratio 1 + 10^(pH - pK1') 20.953 ============================================================================== END OF OUTPUT ==============================================================================