当前位置: 首页 > article >正文

一个暂存文件

1. 问题一

  • 可视化数据
# 加载模块
import numpy as np
import matplotlib.pyplot as plt

# 加载数据
# data1 : 浓度检测数据
fp = open("data1.txt", "r")
data1 = []
for i in fp.read().strip().split("\n"):
    row = [float(k) for k in i.strip().split(" ")]
    data1.append(row)
fp.close()
data1 = np.array(data1)

# 可视化
plt.rcParams['figure.figsize'] = (6, 6)
plt.rcParams['savefig.dpi'] = 300

# x轴
week = np.arange(1, 16)
# y轴
y1 = data1[:, 0]  # 检测点1
y2 = data1[:, 1]  # 监测点2
y3 = data1[:, 2]  # 检测点3
y4 = data1[:, 3]  # 监测点4
y5 = data1[:, 4]  # 监测点5

plt.scatter(week, y1, color="r", marker="+")
plt.scatter(week, y2, color="g", marker="x")
plt.scatter(week, y3, color="b", marker="o")
plt.scatter(week, y4, color="c", marker="*")
plt.scatter(week, y5, color="m", marker=".")

plt.plot(week, y1, color="r", linewidth=0.5)
plt.plot(week, y2, color="g", linewidth=0.5)
plt.plot(week, y3, color="b", linewidth=0.5)
plt.plot(week, y4, color="c", linewidth=0.5)
plt.plot(week, y5, color="m", linewidth=0.5)

plt.xlabel("t (week)")
plt.ylabel("c (mg/L)")

plt.legend(["Monitoring p1", "Monitoring p2", "Monitoring p3", "Monitoring p4", "Monitoring p5"])

在这里插入图片描述

  • 计算偏差、均值
# 复用上面数据加载 data1, week
mean = []
std = []
for _w in week:
    mean.append(np.mean(data1[_w-1, :]))
    std.append(np.std(data1[_w-1, :], ddof=1))

在这里插入图片描述

针对每周的监测点数据分析,各监测点数据标准差均在 0.05 以内,其中最大偏差出现在第10周。

偏差在允许范围内,数据中无明显坏点,均为有效数据。

考虑使用周各监测点数据的均值代表该周湖水污染颗粒的浓度情况。则周内变化如下

在这里插入图片描述

  • 构建模型

    假设条件:

    1)考虑到湖体积足够大,因流入流出速度差异导致的体积变化忽略不计;

    2)污染物流入湖中,其扩散时间考虑为 0,即立马均匀扩散至全湖

    3)不考虑渗透、蒸发、降雨等其它因素的影响

    考虑 d t dt dt 时间内输入、输出污染物量分别为:
    M i n = c 0 ⋅ v i n ⋅ d t M o u t = c ⋅ v o u t ⋅ d t M_{in} = c_0 \cdot v_{in} \cdot dt \\ M_{out} = c \cdot v_{out} \cdot dt Min=c0vindtMout=cvoutdt
    构建微分方程
    d c = M i n − M o u t V = ( c 0 ⋅ v i n V − c ⋅ v o u t V ) d t dc = \frac{M_{in}-M_{out}}{V}=(\frac{c_0\cdot v_{in}}{V}-\frac{c\cdot v_{out}}{V})dt dc=VMinMout=(Vc0vinVcvout)dt

    名词说明:c — 质量浓度,t — 时间, v i n v_{in} vin— 输入流速, v o u t v_{out} vout— 输出流速,V — 湖水体积

    求解微分方程,得到湖水污染物浓度随时间变化的数学模型:
    c ( t ) = ( c 0 ⋅ v i n V − v o u t V ) − k ⋅ e − v o u t c 0 ⋅ v i n t c(t) = (\frac{c_0\cdot v_{in}}{V}-\frac{v_{out}}{V})-k\cdot e^{-\frac{v_{out}}{c_0\cdot v_{in}}t} c(t)=(Vc0vinVvout)kec0vinvoutt

  • 数据拟合(参数最优化求解)

    浓度模型简化为:
    c t = λ 1 − λ 2 ⋅ e λ 3 t c_{t} = \lambda_1-\lambda_2\cdot e^{\lambda_3 t} ct=λ1λ2eλ3t
    其中, λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ1,λ2,λ3 为待定参数。

    基于每周的观测点均值数据,使用 matlab 拟合工具,可以求解最佳参数,其中
    λ 1 = λ 2 = λ 3 = \lambda_1 = \\ \lambda_2 = \\ \lambda_3 = λ1=λ2=λ3=
    可以得到最终模型:
    c ( t ) = c(t) = c(t)=

  • 结果验证

    模型曲线与实际监测数据符合情况如下:

    [此处插入曲线图表]

    [此处插入符合的指标数据]

  • 模型预测
    [预测 t=20, t=30 情况]


http://www.kler.cn/a/154134.html

相关文章:

  • OceanBase 分区表详解
  • 2411rust,1.80
  • pytest | 框架的简单使用
  • JS的学习与使用
  • OpenTelemetry 赋能DevOps流程的可观测性革命
  • 【软件测试】设计测试用例的万能公式
  • supervisor管理启动重启,Java,Go程序Demo
  • C语言KR圣经笔记 4.2返回非整数的函数
  • Mysq8l在Centos上安装后忘记root密码如何重新设置
  • 使用策略模式彻底消除if-else
  • 代币化:2024年的金融浪潮预示着什么?
  • TOP-K问题和向上调整算法和向下调整算法的时间复杂度问题的分析
  • Redis部署-主从模式
  • 【Vulnhub 靶场】【CEREAL: 1】【困难】【20210529】
  • 如何查看当前conda可供安装的所有pytorch版本
  • 智慧工地平台源码,支持多端展示:PC端、手机端、平板端,实现数据同步
  • iview弹窗提交问题优化
  • 安卓开发学习---kotlin版---笔记(一)
  • Mongodb使用killCursors停止运行的cursor
  • JOSEF 快速中间继电器 KZJ-4H-L DC220V 导轨安装
  • Jetson Nano部署YOLOv5与Tensorrtx加速
  • 【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛
  • JavaWeb | JavaScript基础
  • 视频监控平台EasyCVR多场景应用,AI视频分析技术助力行业升级转型
  • 国内某知名半导体公司:实现虚拟化环境下的文件跨网安全交换
  • 解锁 ElasticJob 云原生实践的难题