如何使用 UliEngineering 在 Python 中计算 Henderson-Hasselbalch pH
你可以使用 UliEngineering Python 库,通过 Henderson-Hasselbalch 方程轻松计算 pH:
henderson_hasselbalch_pH.py
from UliEngineering.Chemistry import henderson_hasselbalch_pH
# 计算醋酸缓冲液的 pH(pKa=4.76,比例=1)
ph = henderson_hasselbalch_pH(4.76, 1.0)
print(f"pH (pKa=4.76, 比例=1): {ph:.2f}")
# 计算比例为 10(共轭碱更多)时的 pH
ph = henderson_hasselbalch_pH(4.76, 10.0)
print(f"pH (pKa=4.76, 比例=10): {ph:.2f}")示例输出
henderson_hasselbalch_pH_output.txt
pH (pKa=4.76, 比例=1): 4.76
pH (pKa=4.76, 比例=10): 5.76Henderson-Hasselbalch 方程将缓冲溶液的 pH 与弱酸的 pKa 以及共轭碱与弱酸的比例联系起来。这对于缓冲液配制、理解酸碱平衡以及预测生化与化学体系中 pH 随组成的变化至关重要。
pH 通过以下公式计算:$\text{pH} = \text{p}K_a + \log_{10}\left(\frac{[\text{A}^-]}{[\text{HA}]}\right)$,其中 $\text{p}K_a$ 为酸解离常数,$[\text{A}^-]$ 为共轭碱浓度,$[\text{HA}]$ 为弱酸浓度。当比例等于 1 时,pH 等于 pKa。
上图以对数刻度展示了三种不同缓冲体系的 pH 与共轭碱/弱酸比例的关系。注意当比例等于 1(由虚线标出)时,pH 等于 pKa。这表明 pH 与比例的对数之间呈线性关系,斜率为 1。该图展示了如何根据弱酸的 pKa,通过改变缓冲液组成可预测地调节 pH。
相关文章
- 如何使用 UliEngineering 在 Python 中计算 Henderson-Hasselbalch 比例
- 如何使用 UliEngineering 在 Python 中将摩尔数转换为克数
- 如何使用 UliEngineering 在 Python 中根据摩尔数和体积计算摩尔浓度
绘图生成脚本
plot_henderson_hasselbalch_ph.py
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')
from UliEngineering.Chemistry.Henderson import henderson_hasselbalch_pH
# 用于绘图的比例范围(对数刻度)
ratio = np.logspace(-3, 3, 200) # 0.001 到 1000
# 创建图形
plt.figure(figsize=(10, 6))
# 计算不同 pKa 值对应的 pH
pKa_values = [4.76, 7.2, 9.25]
colors = ['blue', 'green', 'red']
labels = ['Acetate (pKa=4.76)', 'Phosphate (pKa=7.2)', 'Ammonia (pKa=9.25)']
for pKa, color, label in zip(pKa_values, colors, labels):
pH = pKa + np.log10(ratio)
plt.plot(ratio, pH, label=label, color=color, linewidth=2)
plt.xscale('log')
plt.xlabel('Conjugate Base / Weak Acid Ratio', fontsize=12)
plt.ylabel('pH', fontsize=12)
plt.title('Henderson-Hasselbalch pH vs Buffer Ratio', fontsize=14, fontweight='bold')
plt.legend(loc='upper left', fontsize=10)
plt.grid(True, alpha=0.3)
# 标记比例 = 1(pH = pKa)
plt.axvline(x=1.0, color='black', linestyle='--', linewidth=2, label='Ratio = 1 (pH = pKa)')
plt.legend(loc='upper left', fontsize=10)
plt.tight_layout()
plt.savefig('henderson_hasselbalch_ph_plot.svg', format='svg', dpi=300)If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow