数学建模心得

您所在的位置:网站首页 浴缸的使用条件 数学建模心得

数学建模心得

2023-09-01 03:14| 来源: 网络整理| 查看: 265

前言

本文为东三省数学建模B赛题,室温调控模型的建模以及仿真思路分享。是一个围绕偏微分方程的设立求解的数学模型。赛题连接 声明:本文所有图片均出自论文、未经允许,谢绝使用。

思路

如何建立一个室内温度的控制模型呢?当时刚看到这个赛题的时候,我首先想到的是各种物理公式,传热学,对流换热,牛顿冷却定律什么的,这些传热学的定律公式确实是非常有用的,但是还需要温度分布图,这就没办法单单只靠这些公式完成。那么存在热源的一个温室,他的温度分布用什么样的模型来搭建,偏微分方程解决了这个问题。偏微分方程在这个模型中简单来说就是是用来求热量传递的时候,在一段时间后热量如何分布的。一维的偏微分方程就是求一条线上的温度分布,二维就是求一个面上的温度分布。当然三维的偏微分方程就是求室内的温度分布。但是这里面临一个问题,三维的偏微分方程的数值解是非常难解的,为了计算的方便,可以采用二维的偏微分方程求解南北墙面的温度分布,再利用南北墙面的温度作为底面的一个边界条件来求XOY面的一个温度分布。这个就能够大概的描述整个室内的一个温度分布情况。作为有热源的情况还得单独设立热源。并且要做出许多假设,各个边界是绝热条件还是不绝热,这都是问题,具体情况具体分析。

建模假设

针对模型,我做了如下的假设: 1:暖气片可以完全转化热量,进水口温度就是暖气片温度; 2:暖气片散热方式以对流传热为主; 3:东西墙绝热,没有热量散失; 4:不考虑热辐射的影响; 5:房间初始温度与室外一致; 6:假设各个墙体内不含内热源。

偏微分方程的matlab求解

这部分我当时也有很大的困惑,不明白怎么将这个和温度联系起来,怎么和室外温度联系起来。后来我发现,是我对偏微分方程的理解不够全面,可能现在也还是。因为我不是数学专业的,这些数学原理我也不太懂。我说下我的理解:求解温度分布,简单来说就是把二维墙面的温度分布设置为一个矩阵,矩阵上的每一个点就代表墙面上一个点的温度,然后建立二维偏微分方程,求解它的数值解,就能求出在一段时间后这个墙面的温度分布矩阵。二维偏微分方程的求解用的是有限差分法,网上也有很多教程,这边对于求解就不具体说了。说下简单的步骤:

设出三个方向传递的A矩阵设出墙面的初始温度分布矩阵设定热源矩阵设置边界条件通过有限差分法,迭代求解偏微分方程。画出图像 matlab仿真画图

给出第一问的matlab程序,可以复制粘贴运行试试。但是求解偏微分方程是给很大的计算量,通常要计算非常的久(看时间间隔怎么取的),通常我为了画出一个图,跑程序就得跑个把小时,甚至更久。

% 定义变量 C_w = 4200; % 定义水的比热容 lou_w = 1000; % 定义水的密度 V_w = 0.5; % 定义水流量 m_w = lou_w*V_w; % 定义水的质量 K_s = 50; % 暖气片传热系数 F_s = 2; % 暖气片对流换热面积 T_h = 40; % 暖气水温 T_out = 0; % 室外温度 sigma1 = 0.25; % 墙体厚度 lamda1 = 1.2; % 墙体传热系数 lamda2 = 5.7; % 玻璃传热系数 h1 = 0.9; % 内表面传热系数 h2 = 1.6; % 外表面传热系数 dx = 0.05; % 给定差分变量取值范围 Lx = 5; % 定义x轴距离 x = 0:dx:Lx; % 差分密度 Lxx = 5; % 同上 xx = 0:dx:Lxx; dz = 0.05; Lz = 2.8; % 同上 z = 0:dz:Lz; dy = 0.05; Ly = 10; % 同上 y = 0:dy:Ly; time = 360; % *10即为实际时间 dt = 0.0001; t = 0:dt:time; Ax = (-2*eye(length(x))+diag(ones(1, length(x)-1), 1)+diag(ones(1, length(x)-1), -1)); % 定义X方向的A矩阵 Ay = (-2*eye(length(y))+diag(ones(1, length(y)-1), 1)+diag(ones(1, length(y)-1), -1)); % 定义Y方向上的A矩阵 Az = (-2*eye(length(z))+diag(ones(1, length(z)-1), 1)+diag(ones(1, length(z)-1), -1)); % 定义Z方向上的A矩阵 [Z, X] = meshgrid(z, x); [Y, XX] = meshgrid(y, xx); U0xoz = ones(length(Ax), length(Az))*0; % 定义南北墙初始温度为0℃ U0xoy = ones(length(Ax), length(Ay))*0; % 定义xoy面初始温度0℃ fxozs = ones(length(Ax), length(Az)); fxozs(20:90, 1:25) = 40; % 定义热源(仅南墙暖气作用) fxozn = ones(length(Ax), length(Az)); fxozn(20:90, 1:25) = 30; % 定义热源(仅北墙暖气作用) fxoy1 = 5*exp(-1/2*(((XX-2.5).^2)/1+((Y-8.75).^2)/1)); fxoy2 = 5*exp(-1/2*(((XX-2.5).^2)/1+((Y-1.25).^2)/1)); border_n = 8*exp(-1/2*(((z-1).^2)/1)); % 定义边界条件 border_nx = 10*exp(-1/2*(((x-2.5).^2)/1)); % 定义边界条件 Uxozs = U0xoz; Uxozn = U0xoz; Uxoy = U0xoy; a = 0.22; % 定义散热系数 xm = zeros(1, time*10); % 控制变量的定义 xm_in_s = zeros(1, time*10); xm_in_n = zeros(1, time*10); xm_in_xoy = zeros(1, time*10); temp = 1; % 控制变量的定义 temp_in_s = 1; temp_in_n = 1; temp_in_xoy = 1; Q_w = 0; % 墙体导热初值设置 Q_s = 0; % 对流换热初值设置 for n = 1:length(t)-1 % 迭代时间,计算热传导偏微分方程 Uxozs = Uxozs+a^2*(1/dx^2*Ax*Uxozs+1/dz^2*Uxozs*Az+fxozs )*dt; % 南墙的温度分布 min_xoz_s = mean(Uxozs,2); % 计算南墙平均温度分布,压缩为一维向量作为xoy面的边界条件 Uxozs(:, 1) = border_nx; % 边界设置 Uxozs(:, end) = Uxozs(:,end-1); Uxozs(1, :) = border_n; Uxozs(end, :) = border_n; Uxozn = Uxozn+a^2*(1/dx^2*Ax*Uxozn+1/dz^2*Uxozn*Az+fxozn)*dt; % 北墙的温度分布 min_xoz_n = mean(Uxozn,2); % 计算北墙平均温度分布,压缩为一维向量 Uxozn(:, 1) = border_nx; % 边界设置 Uxozn(:, end) = Uxozn(:,end-1); Uxozn(1, :) = border_n; Uxozn(end, :) = border_n; Uxoy = Uxoy+a^2*(1/dx^2*Ax*Uxoy+1/dy^2*Uxoy*Ay+fxoy1+fxoy2)*dt; % xoy墙的温度分布 Uxoy(:, 1) =min_xoz_s; % 绝缘设置 Uxoy(:, end) = min_xoz_n; Uxoy(1, :) = Uxoy(2, :); Uxoy(end, :) = Uxoy(end-1, :); min_in_s = mean(Uxozs(:)); % 南墙的均值 min_in_n = mean(Uxozn(:)); % 北墙的均值 min_in_xoy = mean(Uxoy(:)); % xoy的均值 %------------------------------------------回水温度的计算-- Q_w = ((min_in_s'-T_out)/((1/h1)+(sigma1/lamda1)+(1/h2)))*5*2.8*2*3600; % 墙体换热 Q_s = K_s*F_s*(T_h-min_in_s')*3600; % 对流换热第一个暖气片 Q_t = Q_w+Q_s; % 计算总能量 T_x = T_h-(Q_t/(C_w*m_w)); % 计算回水温度 fxozn(20:90, 1:25) = T_x; % 将回水温度设置为北墙的热源 xm(1, temp) = T_x; % 将回水温度存入向量,之后绘图 xm_in_s(1, temp_in_s) = min_in_s; % 保存数据画图 xm_in_n(1, temp_in_n) = min_in_n; xm_in_xoy(1, temp_in_xoy) = min_in_xoy; if mod(n,1000) == 1 % 加速画图 temp = temp + 1; temp_in_s = temp_in_s + 1; temp_in_n = temp_in_n + 1; temp_in_xoy = temp_in_xoy + 1; subplot(311); surf(X,Z,Uxozs); % 绘制南墙温度分布 shading interp; axis([x(1) x(end) z(1) z(end) 0 40]); title('南墙温度分布') xlabel('x/m'); ylabel('z/m'); zlabel('T/℃'); subplot(312); surf(X,Z,Uxozn); % 绘制北墙温度分布 shading interp; axis([x(1) x(end) z(1) z(end) 0 40]); title('北墙温度分布'); xlabel('x/m'); ylabel('z/m'); zlabel('T/℃'); subplot(313); surf(XX,Y,Uxoy); % 绘制xoy墙温度分布 shading interp; axis([xx(1) xx(end) y(1) y(end) 0 40]); title('xoy面温度分布'); xlabel('x/m'); ylabel('y/m'); zlabel('T/℃'); % view(2); % 改变视角方向 getframe; end end % 绘图 x = 1:1:time*10; figure(4); plot(x, xm(1, 1:time*10)); legend('出水口温度') title('暖气回水温度与时间的关系'); xlabel('时间/s'); ylabel('回水温度/℃'); axis([x(1) x(time*10) 0 40]); figure(5); plot(x, xm_in_s(1, 1:time*10)); hold on plot(x, xm_in_n(1, 1:time*10)); hold on plot(x, xm_in_xoy(1, 1:time*10)); legend('南墙平均温度', '北墙平均温度', '底面xoy面平均温度') axis([x(1) x(time*10) 0 30]); title('各个面温度随时间变化曲线'); xlabel('时间/s'); ylabel('温度/℃');

在这里插入图片描述 左边为十分钟左右后的三个面的温度分布,右边为一小时后的三个面的温度分布 在这里插入图片描述 另一个角度 在这里插入图片描述 在这里插入图片描述

心得分享

对于时间还算比较充分的东北三省联赛数学建模,时间上是完全够用的。关于分工,打数学建模一定要明确自己的定位,分工明确。在刚开始的时候可以不用那么分工明确,因为三个人都没有思路,就是一起讨论,用什么模型,用什么方法。之后有了一定的方向后再开始分工。对于这个赛题,我们最初也走了一些弯路,没有想到偏微分方程的方法,第一眼咋一看以为是道物理题,就全往物理方面想了,什么热传导,牛顿冷却定律,传热学,对流换热什么的都看了下,后来明白数学建模怎么可能没有数学方法。但是这也不算弯路,这些东西对后面建模也有重要作用。后来就开始研究偏微分方程,主要是研究怎么用上偏微分方程,然后一步步的把模型建起来。关于时间安排,留给论文排版的时间是绝对要有了,如果没有写论文的经历的话那更要有了,通常我们写的论文是非常不合格的,就单单改论文就要改很长时间。其他时间安排就看自己的进度了,论文这里是肯定要留时间的,不能写个初稿就完事了。如果到了后期,有些分工任务弄完的,比如建模代码写完的,图画完的,仿真弄完的,就可以帮着写论文的同学,帮忙把公式用word写出来,好让他直接能复制粘贴,帮忙看看语言逻辑通不通顺,错别字有没有等等。就是不能闲着,不是自己的任务做完就完事了。 如果你觉得文章对你有一点点帮助或启示的话,不妨点个赞噢😊



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3