项目介绍
浓溶液的稀释计算广泛应用于药剂生产。由3个容器构成了一个稀释系统。3个容器内装着体积分别是V1、V2、V3的盐水(三个容器都从上面的开口接水,下面有一个口出水)。
纯净水从上端倒入容器1,随后混合液体从容器1流入容器2,再从容器2流入容器3,最后流出容器3。每一段的流速是相同的为Vr。
(1)已知Vr=45.46(L/min),容器内盐的初始值分别是6.8千克、0千克、0千克。容器3内的盐含量如data.xlsx,试建立数学模型,计算出容器2的盐含量随时间变化情况。
(2)利用问题(1)的数学模型确定最快流速,确保容器3工作前20分钟,容器3的盐含量不超过3.18千克,且容器3的盐含量超过2.27千克的时间超过5分钟。
关键词
- 浓溶液稀释
- 容器动态模型
- 盐含量调控
- 数据可视化
- 数学建模
效果展示
项目思路
- 数据读取与理解
- 利用pandas库读取名为data.xlsx的Excel文件,获取时间(min)和盐含量(kg)两列数据。
- 通过对数据的初步观察,理解数据的分布和特点。
- 数据可视化
- 使用matplotlib库绘制盐含量随时间变化的散点图,以直观展示数据分布情况。
- 添加合适的标签和标题,使图表更易于理解。
- 建立数学模型
- 定义一个用于拟合的函数func,包含时间 t、和四个参数 a、b、c、d。
- 选择指数衰减的形式,使用两个指数项表示混合液体中的盐含量变化。
- 建立数学模型的过程是对实际情况的抽象,需要考虑函数形式和参数的物理意义。
- 曲线拟合
- 利用scipy.optimize.curve_fit进行曲线拟合,拟合函数为上一步定义的func。
- 获取拟合参数 popt 和协方差 pcov。
- 拟合结果可视化
- 利用拟合参数,绘制拟合曲线,将其与原始数据散点图进行对比。
- 在图表上标注拟合参数,以便观察者了解拟合函数的形状和贴合度。
具体代码
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
# 读取数据
data = pd.read_excel('data.xlsx')
time = data['时间(min)']
salt_content = data['盐含量(kg)']
# 数据可视化
plt.plot(time, salt_content, 'o', label='Data')
plt.xlabel('Time (min)')
plt.ylabel('Salt Content (kg)')
plt.title('Salt Content vs. Time')
plt.legend()
plt.show()
# 使用曲线拟合
def func(t, a, b, c, d):
return a * np.exp(-b * t) + c * np.exp(-d * t)
popt, pcov = curve_fit(func, time, salt_content)
# 绘制拟合曲线
plt.plot(time, salt_content, 'o', label='Data')
plt.plot(time, func(time, *popt), 'r-', label='Fit: a=%5.3f, b=%5.3f, c=%5.3f, d=%5.3f' % tuple(popt))
plt.xlabel('Time (min)')
plt.ylabel('Salt Content (kg)')
plt.title('Salt Content vs. Time with Curve Fit')
plt.legend()
plt.show()
项目链接
GitHub:https://github.com/Olivia-account/Dynamic-Regulation-of-Concentrated-Solution-Dilution-System
后记
如果觉得有帮助的话,求 关注、收藏、点赞、星星 哦!