1 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. 之前写过一篇博客,介绍如何 使用差分格式求解热传导方程
今天打开博客,突然发现评论区被这篇文章霸屏了 询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了 经过简单的了解,发现今年建模的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
觉得本文对你有帮助的话,进来逛逛吧,顺便给觉得不多的项目点颗星~嘿嘿~ |
|