数学建模社区-数学中国

标题: 2018数学建模A题的简单指导 [打印本页]

作者: 杨利霞    时间: 2019-4-6 14:23
标题: 2018数学建模A题的简单指导
2018数学建模A题的简单指导0 j6 f# ]6 M( {/ r
  x" N# u+ K6 N' i- H! P! L
之前写过一篇博客,介绍如何使用差分格式求解热传导方程, L1 i2 {6 E3 j6 B+ T. B5 p) p# r! v7 X

+ Q+ n' @, E2 `( D: `今天打开博客,突然发现评论区被这篇文章霸屏了2 h6 a, d) W, Z% r8 J" F$ {

0 E' X5 A* L6 b# q" @$ a) X/ b. u
- C! P) u& k. s* m4 Z8 y
& q$ y0 p; ?* O8 a  H; Q询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了
8 K# X6 _6 n" f; h1 a: T
3 I2 Z' s" z6 a" U经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。& c# ], M' H! f: ^6 ~) T) d  |

$ }' c  {- |4 A: r但是!. k1 a* _: B2 w/ S: I

) J$ ?* P  o' ?; M) {' q数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。: Y* O# [, W1 A( A4 d0 P
5 E9 i2 F$ ~2 `
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。: o$ `5 k6 P3 d7 ~1 f# N
7 e! s9 y$ a% r4 ~3 F
这里统一对大家的问题做一个回答:
0 ~4 j, t, G3 G+ Q+ r& @
6 n2 W+ o  F" l; |+ ?本题适用差分解法吗?
/ g9 h+ D! T% K: S* C' ?- b/ y' M+ ?3 ]9 V
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。0 s1 D" N" _' ?2 B2 m" f
8 X/ ]9 z' I1 f6 \* I4 n/ f  o
差分方法的优点是原理简单,但是只能求解规则区域的数值解。: [  Y) [$ a) p8 U5 w' E9 R
# j7 J: f( Y0 g" H7 O
有限元背后的理论相对难很多,但能够求解不规则区域问题。
6 J9 q3 F& t) C( F8 Z$ j: W6 Z5 f0 w2 L. k8 n
本题适用哪种方法解答取决于你的模型假设# {# r3 a% d) q! N4 \  }
$ o/ I' f5 e9 }% y; P0 d3 g6 [) Q
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。: u8 Z' y7 Q: h' v  H

" X- d; m1 |+ y- r3 x, S. w既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。' ~* j% M1 |& z. m
; i3 R2 `! ^. a; Q! N7 V
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。7 K- m4 @( N, u( {
6 `6 X9 h# w9 [5 w8 W
是否适用于多层壁热传导?
1 J( A1 f3 `9 b# K  f. w& r1 W$ Y' r3 e2 G1 U1 ~2 S( Y
评论区有人问,是否适用于多层壁热传导吗?
; Y& E( T, ]' w" ~7 F/ b
% Q5 b( E; U1 n1 E- y, T! A- b6 t其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~( r5 f- P) x) f% m3 F

" {, e, R# _, J( s' p& T# S: e答案当然是能,但显然不能直接拿来用,给几点提示。( z% _4 `4 x2 ~4 s
* u$ N7 x5 D- ~' e, e, b
思路1:: T  P' \6 c$ m/ L8 n" c% V4 O
7 g8 B$ V% d3 B
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。1 c  H% z9 P2 D/ ^3 {$ p
; E7 A) F6 A+ a# V
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。# h- \; ?* T9 F: A- Y' C# h8 B
$ f. y! D  E3 q  c% @
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
+ K4 }# x# m1 @
7 w! c8 n" G# u. m9 @思路2:3 t* I- v7 v5 c1 y8 A* m
/ |1 z/ `- Z6 M1 s/ z8 S4 ?6 g6 e* s1 a
我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。) [( z$ C' Q) X1 C. I) V& T# e

1 d) E8 b' O9 z这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
" e% m* j7 }& ^9 y  _' g0 |+ k6 m4 `0 `5 `. _; C
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
6 m8 [" P% A5 W
/ |$ `5 H! r' {) t4 g关于边界条件  A2 v. n/ d/ z" y8 m

% V9 K$ ?5 V) D; S! g6 @6 F6 h& n! v构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
" [, i  U+ I* |+ j  @
- ^/ L8 T/ F6 f8 j  o+ Y1 t  w7 ^3 q/ u而边界条件的作用其实就是找出你想要的那个解。7 ?$ ?1 e% I8 f+ ~5 Z, h& I% W) \
" o! c1 t' L) @# S$ m+ Z2 k- V
之前文章中给出的算例包含的边界条件是:$ O) R& s% q* r& t. d* f

6 A9 U4 B" R' p3 r9 a. qu(x,0)
; q$ P5 D# ?% F; U5 u3 Q- J& T; T+ T( U! h
u(0,t) 和 u(1,t)
' L' Y5 l% o8 m
# \- r7 ]7 H9 [5 b6 ?+ r1 Q在A题中右侧初始温度好像是没有的,也就是u(1,t)没有
# x5 [" n/ R  C8 J0 p& f5 [+ ]4 ?; `' q! }2 D
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
9 T# E+ f. h" _; R1 n' i) F) f7 k4 U" ]/ i) o
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
. e4 {# {& I/ d5 v
# v( b3 |: X9 Y8 f( Y5 j, p比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt4 a/ E  A/ [$ c2 Z: g1 \

) T# D. b2 c3 q  c, l8 H0 e, z这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。7 H$ f, N; F- ^" ]; k; y9 H. ]
---------------------
4 L) F0 o" n  U& j- L( t8 a
. z) [/ q. v7 H, _$ C
0 L, i2 I. K) B% G! M& x
( ?/ k2 w  N# k' N  n




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5