#作者:王日睿
#中国科学技术大学生命科学学院
#2021.11.3
#物理化学实验:实验02 分光光度法测BPB的电离平衡常数import numpy as np
import matplotlib.pyplot as plt
import osdef readfile(filename):x, y = [], [] file = open(filename, 'r')count = 0for line in file.readlines():count = count + 1if count >= 2:x.append(float(line[0:6]))y.append(float(line[7:len(line)]))return x, yFILE_PATH = "C:\\Users\\29070\\Desktop\\我的笔记\\物化实验\\分光光度法测BPB的电离平衡常数\\王日睿PB19081616\\王日睿PB19081616"
FILE_NAME = os.listdir(FILE_PATH)
# 顺序依次为:sample 1-7, sample acid, sample baseWaveLength = []
D_Value = [] # 按文件名依次储存在WaveLength[],和D_Valve[]里
PH_list = [3.15, 3.40, 3.60, 3.79, 4.22, 4.39, 4.58]for file in FILE_NAME:x, y = readfile(FILE_PATH + r'\\' + file)WaveLength.append(x)D_Value.append(y)# 找到sample1-7的右边的峰值(为电离后离子的特征峰)
max_list = []
wavelength_list = []
for i in range(7):max_value = max(D_Value[i][:len(D_Value[i])//2])index = D_Value[i].index(max_value)max_list.append(max_value)wavelength_list.append(WaveLength[i][index])
#print(max_list)
#[0.096, 0.15, 0.209, 0.272, 0.421, 0.495, 0.543]
#print(wavelength_list)
#[593.0, 593.0, 593.0, 592.2, 592.4, 592.4, 592.4]
# 将sample_acid 和base的数据也录入
for i in range(7,9):max_value = max(D_Value[i])index = D_Value[i].index(max_value)max_list.append(max_value)wavelength_list.append(WaveLength[i][index])
#print(max_list)
#[0.096, 0.15, 0.209, 0.272, 0.421, 0.495, 0.543, 0.236, 0.693]
#print(wavelength_list)
#[593.0, 593.0, 593.0, 592.2, 592.4, 592.4, 592.4, 438.0, 591.8]# 特征峰可认为是除极酸条件外,其余8种的平均proper_value = (sum(wavelength_list)-wavelength_list[7])/8
#print(proper_value) 592.525
#最接近极酸条件下的592.6nm
proper_wavelength = 592.6
proper_index = WaveLength[7].index(proper_wavelength)
proper_D = D_Value[7][proper_index]#替换该值
wavelength_list[7] = proper_wavelength
max_list[7] = proper_D# 画图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
fig,ax = plt.subplots(4, 2, figsize=(10, 10), dpi=400)
count = 0
for i in range(4):for j in range(2):ax[i][j].plot(WaveLength[count], D_Value[count])ax[i][j].set_xlabel("波长/nm")ax[i][j].set_ylabel("透光度D")ax[i][j].axvline(wavelength_list[count],ls=":")ax[i][j].annotate(text="(%4.1f,%4.3f)"%(wavelength_list[count],max_list[count]),xy=(wavelength_list[count],max_list[count]),xytext=(wavelength_list[count]+50,max_list[count]-0.05),arrowprops=dict(arrowstyle="->", color="black"))ax[i][j].scatter(wavelength_list[count],max_list[count],color="red")count = count + 1 ax[3][1].plot(WaveLength[8], D_Value[8],color="green",label="极碱条件")
ax[3][1].plot(WaveLength[7], D_Value[7],color="b",label="极酸条件")
ax[3][1].annotate(text="(%4.1f,%4.3f)"%(wavelength_list[8],max_list[8]),xy=(wavelength_list[8],max_list[8]),xytext=(wavelength_list[8]+50,max_list[8]-0.05),arrowprops=dict(arrowstyle="->", color="black"))
ax[3][1].scatter(wavelength_list[8],max_list[8],color="red")
ax[3][1].axvline(wavelength_list[8],ls=":")
ax[3][1].set_title("极酸和极碱条件")
ax[3][1].legend(loc='upper left')count_ = 0
for i in range(3):for j in range(2):ax[i][j].set_title("sample_%d"%(count_+1)+ " " + "pH=%3.2f"%PH_list[count_])count_ = count_ + 1
ax[3][0].set_title("sample %d"%(count_+1)+ " " + "pH=%3.2f"%PH_list[count_])
plt.tight_layout()
plt.savefig("output_1.png")
plt.show()# 对得到的结果进行拟合
import math
from scipy import optimizeD1 = 0.002
D2 = 0.693
y = [math.log((data-D1)/(D2-data),10) for data in max_list[:7]]
x = PH_listdef func(x, k, b):return k * x + bk, b = optimize.curve_fit(func, x, y)[0]
#print(k,b)
#k=0.950320079281087 b=-3.7957755480692774plt.figure(2)
plt.rcParams['text.usetex'] = False
x0 = np.arange(min(PH_list),max(PH_list),0.0001)
y0 = k * x0 + b
plt.plot(x0, y0, color="blue")
plt.scatter(x, y, color="r")
plt.title("$log_{10}(D-D_1)/(D_2-D)-pH$ 拟合曲线")
plt.annotate(text="y=%4.4fx%4.4f"%(k, b), xy=(3.2,0.4), xytext=(3.1,0.5),fontsize=15,color="r")
plt.xlabel("pH",fontsize=15)
plt.savefig("output_2.png")
plt.show()# 计算电离平衡常数
# y=kx+b=pH-pK
# b=-pK
# b=lgpK
# pK = 10^b
K = pow(10, b)
#print(K)
# K=1.60*10^-4

2021物理化学实验2:分光光度法测溴酚蓝的电离平衡常数相关推荐

  1. 2021物理化学实验4:液体饱和蒸气压的测定

    #作者:王日睿 #中国科学技术大学生命科学学院 #2021.11.20 #物理化学实验:实验04 液体饱和蒸气压的测定 # Jupyter labimport numpy as np import m ...

  2. 2021物理化学实验8:乙酸乙酯皂化反应动力学研究

    #作者:王日睿 #中国科学技术大学生命科学学院 #2021.12.23 #物理化学实验:实验08 乙酸乙酯皂化反应动力学研究 # Jupyter labimport pandas as pd impo ...

  3. 2021物理化学实验5:双液系的气液平衡相图

    #作者:王日睿 #中国科学技术大学生命科学学院 #2021.12.1 #物理化学实验:实验04 液体饱和蒸气压的测定 # Jupyter lab# 1. 绘制工作曲线 # 原始数据: propanol ...

  4. 2021物理化学实验3:燃烧热的测定

    #作者:王日睿 #中国科学技术大学生命科学学院 #2021.11.12 #物理化学实验:实验03 燃烧热的测定 # Jupyter labimport numpy as np import matpl ...

  5. 计算机量子化学计算焓变,物理化学实验

    绪论 1.1 物理化学实验目的与要求 1.2 误差及数据处理 1.3 计算机处理物理化学实验数据的方法 1.4 学生实验规则与安全 实验内容 2.1 热力学 实验1 恒温槽控温精度的研究 实验2 燃烧 ...

  6. 古典密码算法实验c语言,2021信息安全 实验一 古典密码算法C语言.docx

    2021信息安全 实验一 古典密码算法C语言.docx 信息安全信息安全 实验一实验一 古典密码算法古典密码算法 C C 语言语言 信息安全实验报告 课程名称 _ 专业计算机科学与技术 _2010_级 ...

  7. Matlab×物理化学实验:乙醇水溶液偏摩尔体积测定

    MATLAB×物理化学实验:乙醇水溶液偏摩尔体积测定 摘要 理论依据 一.比重瓶法测密度 二.多组分液体的体积 加和公式 求解思想 核心语句: 绘图相关语句: 程序实现 程序内容 范例 输入数据 调用 ...

  8. tim计时器读出为0_高中物理 必修1 (12) 第一章 运动的描述 课时4 实验:用打点计时器测速度(1)...

    高中物理满分计划 高一微课300-12 必修一:第一章 运动的描述 课时4 实验:用打点计时器测速度(1) [基本装备]知识点 1 两种打点计时器的比较 1.构造 电磁打点计时器 电火花计时器 2.电 ...

  9. Matlab×物理化学实验:蔗糖水解反应速率常数测定

    Matlab×物理化学实验:蔗糖水解反应速率常数测定 摘要 理论依据 一.蔗糖水解 化学反应式 半衰期 一级反应有如下特点 二.旋光度α\alphaα 求解思想 核心语句: 绘图相关语句: 程序实现 ...

  10. 计算机辅助物理化学实验 唐典勇课后答案,计算机辅助物理化学实验(第2版)...

    第1章  绪论 1.1  物理化学实验的目的和要求 1.1.1  学习物理化学实验课程的目的 1.1.2  实验前的准备 1.1.3  实验注意事项 1.1.4  实验报告要求 1.1.5  实验室规 ...

最新文章

  1. Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)
  2. rgb fusion检测不到显卡_7000元AMD平台装机:3600X配RTX2060显卡怎么样
  3. python3.7.4-Centos7升级Python3.7.4
  4. 数据库连接池之_DButils
  5. 自定义Checkbox让复选框居中对于RadioButton同样适用
  6. JUC重要辅助类(同步组件及锁)
  7. 获取html滚动条位置,pc和移动端获取滚动条的位置
  8. bugku 管理员系统 后台代码_不会吧,这也行?iOS后台锁屏监听摇一摇
  9. Kindle 助手上线啦
  10. PAT 甲级 1003
  11. c语言怎么设计程序框图,C语言课程设计————写下流程图! 谢谢
  12. 服务器数据收发测试软件,sokit TCP/UDP 数据包收发测试(调试)工具(Win32)
  13. javascript new对象的过程
  14. 芒果iOS开发之App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
  15. 该内存不能为 read/written解决办法
  16. 认识网络号与子网划分
  17. 梦幻西游唯美版3D模型展示
  18. 站长还应该发布外链吗?
  19. ShaderForge 之霓虹旋涡
  20. Docker容器总结

热门文章

  1. 录入姓名完成座位表,学习前端的小伙伴可以关注一波,用js+html+css构成
  2. phicomm虚拟服务器怎么设置方法,斐讯(PHICOMM)路由器设置步骤
  3. pytorch中为Module和Tensor指定GPU
  4. echarts柱形图X轴Y轴相关配置
  5. 基金仓位“88%魔咒”再现 百点长阳能否击破?
  6. win8.1删除桌面的IE图标
  7. that being said
  8. 身份证上传尺寸太大如何缩小?改照片尺寸的简单方法
  9. c语言编译器tc2.0,Wintc软件下载
  10. base_url 是什么