分享

2018年数学建模国赛A题的简单指导

 老马的程序人生 2020-08-17

LSGO软件技术团队 

贡献人:马燕鹏

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。

If you like the content here, the greatest help you can give me is forwarding, so tell your friends and encourage them to learn together.

之前写过一篇博客,介绍如何 使用差分格式求解热传导方程

  • https://blog.csdn.net/u011583927/article/details/53244507

今天打开博客,突然发现评论区被这篇文章霸屏了

询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了

经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。

但是!

数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。

再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。


这里统一对大家的问题做一个回答:

本题适用差分解法吗?

求解偏微分方程的方法中,「差分方法」 和 「有限元」 是两类最主流的方法。

差分方法的优点是原理简单,但是只能求解规则区域的数值解。

有限元背后的理论相对难很多,但能够求解不规则区域问题。

本题适用哪种方法解答取决于你的模型假设

本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。

既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。

当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧,任务重。

是否适用于多层壁热传导?

评论区有人问,是否适用于多层壁热传导吗?

其实就是问这个程序能否求解A题嘛,O(∩_∩)O 哈哈~

答案当然是能,但显然不能直接拿来用,给几点提示。

思路1:

你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。

因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。

这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。

思路2:

我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。

这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。

这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。

关于边界条件

构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。

而边界条件的作用其实就是找出你想要的那个解。

之前文章中给出的算例包含的边界条件是:

u(x,0)

u(0,t) 和 u(1,t)

在A题中右侧初始温度好像是没有的,也就是 u(1,t) 没有

首先,你要知道的是,求解需要的边界条件并不一定非得是这几个

但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。

比如没有 u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt

这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。


思路提示目前就是这些了

最近在经营我的 github

  • https://github.com/monkeyDemon

觉得本文对你有帮助的话,进来逛逛吧,顺便给觉得不多的项目点颗星~嘿嘿~

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多