2023数维杯A题水体污染对流弥散吸附完整论文及所有数值计算模拟代码

news2024/11/20 22:39:35

大家好呀,从昨天发布赛题一直到现在,总算完成了数维杯A题完整的成品论文。

A题论文37页,一些修改说明提醒7页,正文22页,附录8页

本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。


本次用MATLAB求解,肝了一个通宵代码,一直在做修改,是我近期比赛技术含量很高的一篇了,这个题小问虽然不多,但实际求解起来是很麻烦的,要注意的是,这道题不是数据驱动,一切要从内部机理的理论模型出发,这个是需要查阅文献的,但理论模型不止一个,我们要根据实际求解过程为导向。确定完理论模型其实就是数值模拟求解理论模型里面的参数了,第二问我先是用后面两个表格分别用代码数值计算出了吸附速率常数和等温线模型参数,结合对流弥散参数表就能进行数值模拟了,我给了一个三维浓度分布图。第三问还是一样,先确定降解的内部机理理论,之后根据数据数值计算理论模型的参数即可。

实在精力有限,没力气打太多字做文字版讲解了,可能讲得不够详细,可以看我的视频讲解:

2023数维杯数学建模A题水体污染保姆级手把手教学!(结尾为B题说明)_哔哩哔哩_bilibili

OK,这里是我的

目录:

摘要:

第一问:

记住,重点是要有分析过程,也就是推导过程。

此外,理论模型必须要能结合问题二的参数和数据表!也就是说,建立的这个理论模型,最起码应该能够结合这些参数:

此外还必须涉及吸附动力学模型和等温平衡吸附模型。

基于这样的考虑,我们分别推导建立对流、弥散和吸附模型:

推导之后汇总一起就是最终的理论模型框架了。

第二问:

首先确定研究思路,根据表2表3数值计算拟合出理论模型的参数,之后再结合表1这个给定的参数,就可以进行实际的数值模拟。

大家一定要注意,我们要分析的是“机理”

所以,必须是先确定一个涉及内部机理的理论方程,之后对于这个理论方程中不确定的参数进行数值计算。

而不是通过数据直接拟合出一个方程,这两者从底层逻辑上是完全不同的。

如果是直接拟合:

过这几个散点可以有很多种不同的拟合函数。

但每个函数每一项的系数的物理含义是什么?这个我们是不知道的

所以必须要先分析机理:

之后实际求解:

这每一个参数可都是有实际的物理含义的,例如吸附的速度

加下来模拟:

这里我模拟了两个结果:

1.给出了任意特定时间内的迁移和弥散距离:

2.给出了一个三维模型,可以给出空间内任意一点任意时间的污染物浓度:

OK第二问结束。

第三问:

一样的流程啦,先引入内部机理的理论模型:

之后实际求解:

OK以上就是论文部分啦,为保证限量,我只粘贴导入数据部分的代码吧:

% 第二个表格数据
time = [0.5, 1, 1.5, 2, 2.5, 3, 4, 7, 10, 13, 16, 20, 24]; % 时间
liquid_s1 = [0.355, 0.312, 0.305, 0.31, 0.314, 0.325, 0.353, 0.36, 0.359, 0.362, 0.371, 0.365, 0.364]; % S1液相浓度
solid_s1 = [2.3, 2.73, 2.8, 2.75, 2.71, 2.6, 2.32, 2.25, 2.26, 2.23, 2.14, 2.2, 2.21]; % S1固相浓度
liquid_s2 = [0.401, 0.327, 0.28, 0.246, 0.255, 0.269, 0.186, 0.324, 0.354, 0.349, 0.352, 0.344, 0.347]; % S2液相浓度
solid_s2 = [1.84, 2.58, 3.05, 3.39, 3.3, 3.16, 2.99, 2.61, 2.31, 2.36, 2.33, 2.41, 2.33]; % S2固相浓度
liquid_s3 = [0.225, 0.086, 0.08, 0.078, 0.068, 0.085, 0.093, 0.138, 0.149, 0.171, 0.169, 0.172, 0.173]; % S3液相浓度
solid_s3 = [3.6, 5.09, 5.05, 5.07, 5.17, 4.8, 4.3, 4.41, 4.36, 4.14, 4.16, 4.13, 4.12]; % S3固相浓度
liquid_s4 = [0.367, 0.284, 0.224, 0.195, 0.174, 0.185, 0.202, 0.199, 0.197, 0.196, 0.199, 0.198, 0.199]; % S4液相浓度
solid_s4 = [2.18, 3.01, 3.61, 3.9, 4.11, 4, 3.83, 3.86, 3.88, 3.89, 3.86, 3.87, 3.86]; % S4固相浓度

% 第三个表格数据
initial_concentration = [0.0681, 0.137, 0.2177, 0.3302, 0.4324, 0.5338, 0.5842, 0.6222, 0.7062, 0.7956]; % 初始浓度
liquid_s1_iso = [0.0461, 0.0722, 0.1235, 0.215, 0.2951, 0.3716, 0.3969, 0.4547, 0.4852, 0.5714]; % S1等温平衡液相浓度
solid_s1_iso = [0.1702, 0.6005, 0.8921, 1.102, 1.323, 1.572, 1.823, 2.1, 2.16, 2.192]; % S1等温平衡固相浓度
liquid_s2_iso = [0.0246, 0.0492, 0.0903, 0.1725, 0.2563, 0.3376, 0.3574, 0.3701, 0.4352, 0.5043]; % S2等温平衡液相浓度
solid_s2_iso = [0.1852, 0.8301, 1.224, 1.527, 1.711, 1.912, 2.218, 2.471, 2.66, 2.863]; % S2等温平衡固相浓度
liquid_s3_iso = [0.0424, 0.0654, 0.1091, 0.2068, 0.2614, 0.3304, 0.3852, 0.4065, 0.4467, 0.5999]; % S3等温平衡液相浓度
solid_s3_iso = [0.2071, 0.6683, 1.036, 1.184, 1.66, 1.984, 1.94, 2.107, 2.545, 2.937]; % S3等温平衡固相浓度
liquid_s4_iso = [0.0354, 0.0613, 0.0993, 0.1931, 0.2528, 0.2879, 0.3568, 0.4195, 0.5071, 0.5061]; % S4等温平衡液相浓度
solid_s4_iso = [0.2772, 0.7101, 1.134, 1.321, 1.546, 1.781, 2.124, 1.977, 2.461, 2.845]; % S4等温平衡固相浓度

% 拟合吸附速率常数k






concentration = [0.483; 0.479; 0.452; 0.418; 0.371; 0.342; 0.319; 0.311; 0.309];
microbe_concentration = [1.5e7; 1.7e7; 2.0e7; 2.5e7; 3.0e7; 3.3e7; 3.5e7; 3.7e7; 3.7e7];
days = [0; 1; 2; 3; 4; 5; 6; 7; 8];

% 初始浓度
initial_concentration = concentration(1);

% 计算有机物浓度比


运行图:

再免费来一个我最开始用于数值模拟的代码吧,注意,只是我最开始用的,不是我最后实际求解用的完整代码:

% 仅为最开始我模拟的一个简易代码,不是我最后实际求解用的
% 完整论文及实际求解代码请点击本文章最下方我的个人卡片

% 定义参数
u = 38.67;  % 平均孔隙流速
v = 5.01;  % 地下水渗流流速
k = 6.32;  % 渗透系数
D = 0.38;  % 弥散系数
rho = 1.67;  % 含水层样品的密度
n = 0.375;  % 孔隙度
dt = 0.5;  % 时间步长
dx = 1.0;  % 空间步长
dz = 1.0;  % 空间步长

% 定义网格大小和时间步数
N = 100;  % 河流-地下水系统网格的长度
M = 100;  % 总时间步数

% 初始化浓度矩阵
C = zeros(N, N);
C(:, 1) = 0.5;  % 初始时刻浓度为0.5 mg/L

% 迭代求解
for j = 2:M
    for i = 2:N-1
        % 计算对流、弥散项
        convective_term = u * dt / dx * (C(i-1, j-1) - C(i, j-1));
       if j == 2
    advective_term = v * dt / dz * (C(i, j-1) - C(i, j-1));
else
    advective_term = v * dt / dz * (C(i, j-1) - C(i, j-2));
end

        if j == 2
    dispersive_term = D * dt / (dx^2) * (C(i+1, j-1) - 2*C(i, j-1) + C(i-1, j-1)) + D * dt / (dz^2) * (C(i, j) - 2*C(i, j-1) + C(i, j-1));
else
    dispersive_term = D * dt / (dx^2) * (C(i+1, j-1) - 2*C(i, j-1) + C(i-1, j-1)) + D * dt / (dz^2) * (C(i, j) - 2*C(i, j-1) + C(i, j-2));
end

        
        % 更新浓度
        C(i, j) = C(i, j-1) - convective_term - advective_term + dispersive_term;
    end
    
    % 更新边界条件
    % C(边界处, j) = 根据边界条件确定的值
end

% 输出结果
%可视化结果
time = (0:M-1) * dt;  % 时间轴,单位为小时
plot(time, C(:, 1));  % 绘制浓度随时间的变化曲线
xlabel('时间 (小时)');
ylabel('浓度 (mg/L)');
title('24小时内的浓度变化');

% 仅为最开始我模拟的一个简易代码,不是我最后实际求解用的
% 完整论文及实际求解代码请点击本文章最下方我的个人卡片

OK,就讲到这里吧,实在太累了,讲解得可能不够详细,详细的讲解视频、我实际求解用到的完整代码还有我的完整论文等请点击下方我的个人卡片查看哈↓:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何快速取出所有元素?

Python如何快速取出所有元素? 随着Python编程的流行,我们常常需要处理列表、元组和字典等数据结构。在这些数据结构中,最常见的操作是获取所有元素。本文将介绍如何使用Python来快速取出所有元素。 获取列表中所有元素 在Python中&#xf…

简易操作系统:使用Python 做的图形界面 C 做的内核

目录 实验要求 一、文件管理和用户接口 ⑴文件的逻辑结构 ⑵磁盘模拟 ⑶目录结构 ⑷磁盘分配 ⑸磁盘空闲存储空间管理 ⑹用户接口 ⑺屏幕显示 代码部分 python调用c的方法: ​编辑 c语言部分,文件名 Operating_System_C.c python语言部分 运…

2023认证杯数学建模第二阶段C题完整原创论文讲解

大家好呀,从昨天发布赛题一直到现在,总算完成了认证杯二阶段C题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C第二阶段完整论文共64页,一…

越跌越买!192亿大举抄底

虽然本周主流大盘指数表现乏力,但股票ETF市场再现资金逢低“扫货”。 截至6月9日收盘,全市场736只股票ETF(统计股票ETF和跨境ETF)总份额增长196亿份,净流入资金约192亿元,再现“越跌越买”的趋势。 其中&…

理解原子操作与CAS锁

理解原子操作与CAS锁实现 线程间内存访问同步的问题理解cpu的存储体系结构cpu存储架构cache line了解一下写回策略 write-back多线程运行在cpu的多核之中,数据怎么共享,怎么同步?通过事件串行化通过MESI 原子操作CAS锁 线程间内存访问同步的问…

chatgpt赋能python:如何去除Python列表中的中括号

如何去除Python列表中的中括号 在Python中,列表是一个非常重要的数据类型。它可以存储多个不同类型的元素,并且可以动态地增加或删除元素。但是,有时候我们需要将列表中的元素取出来,而不想要中括号。本文将介绍两种不同的方法来…

.net framework 命令行项目使用 sqlite,DbContext

文章目录 背景描述实际操作环境安装Nuget包安装三者之间的关系ORM解释 项目从零开始创建过程新建项目安装nugetDB first和Code first新建文件注意,DbContext命名运行测试基础增删改查和原生sql操作查增,删,改增改删 sql语句执行sql查询sql执行…

QFIELD在遥感数据处理中的应用

概述 从卫星图像生成的土地覆盖绘图需要地面实况数据,以便“训练”分类算法,并计算最终地图的准确性。地面实况数据由具有准确位置的数据点和来自已知土地覆盖类型的预定义列表的标签组成。本教程将指导用户完成斐济苏瓦训练区的地面实况数据收集。 收…

chatgpt赋能python:Python反向画圆的方法

Python反向画圆的方法 介绍 Python是一种高级编程语言,在数据科学、机器学习、Web开发等领域具有广泛的应用。其中,Python的图形绘制能力也颇为强大,可以利用Python编写出各种图形和动画效果。本文将介绍Python如何反向画圆,通过…

chatgpt赋能python:Python如何去除空行?

Python如何去除空行? 在Python编程中,经常会遇到需要去除文本文件或字符串中的空行的情况。空行通常是在文件或字符串中不希望存在的,因为它们可能会影响代码的可读性和执行效率。但是,如何才能在Python中高效地去除空行呢&#…

CSS布局模式之Flex布局Grid布局

文章目录 1. 简介1.1 什么是CSS布局?1.2 为什么使用CSS布局? 2. Flex布局2.1 什么是Flex布局?2.2 Flex容器和Flex项目2.3 Flex容器的属性2.3.1 flex-direction2.3.2 justify-content2.3.3 align-items2.3.4 align-content 2.4 Flex项目的属性…

计算机视觉-目标检测(一):从 R-CNN 到 Faster R-CNN

文章目录 1. 概要2. 区域卷积卷积神经网络R-CNN2.1 模型结构2.2 Selective Search2.3 warp2.4 R-CNN训练2.5 R-CNN推理2.6 R-CNN性能评价2.7 R-CNN的缺点 3. SPP-Net3.1 SPP-Net对RCNN的改进3.2 SPP-Net网络结构3.3 SPP-Net训练过程3.4 SPP-Net的问题 4. Fast R-CNN4.1 Fast R-…

浅析设计模式 -- 责任链模式

目录 前言 概述 基本概念 ▐ 结构 ▐ 使用 使用示例 ▐ 代码实现​​​​​​​ ▐ 结果输出 ▐ UML图 扩展 源码赏析 优缺点及适用场景 ▐ 优点 ▐ 缺点 ▐ 适用场景 前言 我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码&…

【数据结构与算法】深入浅出:单链表的实现和应用

🌱博客主页:青竹雾色间. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 目录 前言 单链表的基本概念 节点 头节点 尾节点 单链表的基本操作 创建单链表 头插法: 尾插法&#…

Shell脚本学习记录(常见指令)

Shell echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式: echo string 1.显示普通字符串: echo "It is a test" //双引号省略效果相同 2.显示转义字符 echo "\"It is a test\"" …

chatgpt赋能python:Python取出字典中键名对应的值

Python取出字典中键名对应的值 作为一个有10年Python编程经验的工程师,我经常遇到需要从字典中取出键名对应的值的情况。在这篇文章中,我将介绍Python中几种不同的方法来执行这个任务,并提供有关每个方法的优缺点的评估。让我们开始吧&#…

chatgpt赋能python:Python怎么取余数?

Python怎么取余数? 在Python中,我们经常需要进行数学运算,而其中计算余数也是经常用到的。虽然计算余数的方法似乎很简单,但是在不同的编程语言中有些微小的差异。本文将介绍在Python中如何高效地计算余数,以及一些相…

【动态规划】NK刷题记之DP6 连续子数组最大和(C语言实现)

【动态规划】NK刷题记之DP6 连续子数组最大和(C语言实现) 一、题目二、题解 2.1动态规划2.2贪心算法2.1.1 贪心算法的定义2.2.2贪心算法的性质2.2.3本题的贪心算法解决思路 2.2.4贪心与动态规划的区别 三、代码实现 3.1法一:动态规划(递归实…

无需公网IP,在家使用IPV6和电信光猫进行内网穿透以搭建远程主机

ipv4的公网IP弄起来还是比较麻烦,所以不管是搭建私人NAS还是远程登陆主机都总是需要进行内网穿透。一般的方案都是用花生壳这类的商用服务,然而这些服务一方面又贵又慢还有流量限制,另一方面还要进行把三代信息都盘出去的实名认证 1G到5G一个…

System V通信

文章目录 共享内存什么是共享内存(物理内存块属性)共享内存的接口认识查看共享内存删除共享内存共享内存的创建(ftok和shmget)挂接和去关联(shmat和shmdt) 利用共享内存通信(简单的代码演示&…