数学建模社区-数学中国

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

作者: 杨利霞    时间: 2019-4-6 14:23
标题: 2018数学建模A题的简单指导
2018数学建模A题的简单指导
4 m& ?* B' ]0 K7 f7 \# b. n5 i& u7 C
之前写过一篇博客,介绍如何使用差分格式求解热传导方程
4 u( B) k, z! ^- v$ m
7 d! x! }  j7 c- l2 w( M: C  l今天打开博客,突然发现评论区被这篇文章霸屏了
2 j' Z( ]* H: ^, W/ q4 b
" ?% o" ^  }0 O& j* e7 S- E
  M# q9 h7 ^$ ?) R- w* B. b  K7 l+ l6 T# V
询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了
! A2 J% h7 ~+ X$ A' ]7 O
$ ?9 i- y* B* [$ C# B1 z经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
7 N* \$ i( z. A3 _; R: c: R9 H+ z" @. q3 u* u+ S
但是!3 O; F& b& _: z# h

/ k; X* x0 k" Y; `数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
+ J# U3 }% ?  w7 u( ]
4 L& {; i# e% s/ R1 o) {再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。
5 X1 r! ?5 H3 q0 v2 O* i# d+ ~7 `2 J& v, i, G& V
这里统一对大家的问题做一个回答:# D9 E2 c$ Z  y

& P1 M+ m, `5 @) M* n* C本题适用差分解法吗?+ t( n! ~4 u4 F7 K* }
' E* @8 {; w* }: K1 R
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。& E6 n5 O- n1 E
, Z# O! K% h0 l6 w
差分方法的优点是原理简单,但是只能求解规则区域的数值解。
/ T1 ^9 w3 q9 ^% S
; l2 f9 _! t4 ~% ^4 |& j. O有限元背后的理论相对难很多,但能够求解不规则区域问题。( L( x1 C* {& D4 Z  x& ]' j
# x, a, b/ V1 T% `, t& M7 \
本题适用哪种方法解答取决于你的模型假设
  ]' m! b! o2 a8 e
: Z; @' N8 j3 u, L: E# M本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。$ g) p& k% H% v, \4 c, Y

+ N5 _1 C/ o* {% F9 f既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。6 P* C2 s. N! F- Q

3 \0 r/ M6 \7 O6 B/ G当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。% _2 h9 |! R, v. C( B! Q0 b

( p6 E4 w$ X3 [  P8 t是否适用于多层壁热传导?
5 X+ w5 g& a! w; L5 |' `) C& a' q3 q- L* e; }$ M
评论区有人问,是否适用于多层壁热传导吗?5 {5 y9 T; e, r
" j4 g, g9 j, ^! h: m& b/ Y
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~" g' Z& E3 W# }5 `: o' `6 M
; a+ V8 i- {( Q+ G6 ]$ v  B
答案当然是能,但显然不能直接拿来用,给几点提示。
4 \( |7 r9 s; o' x5 H. f* a, `4 g; n9 B6 w: l( {+ ?! S
思路1:
8 \+ W; H! h( s! v/ d: `! E3 K9 o5 v+ S  Q' y$ ^! P
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。- c, y1 d) q. I! q. F
  h; L& N9 G* ?, b
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。
3 \$ M6 C; a4 B' y7 [. t
7 ]% `& v" H7 X: S5 r! M这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
* X8 `- A! H. y
# F3 M+ s& A  ~! g6 q/ \+ _思路2:; Y2 V$ o/ F8 d0 d

4 `$ `9 L5 h6 ^: j/ E3 a我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。
% g7 C* t9 ?$ p" ]$ G1 u5 l
  I9 u3 j& p7 F* R) U; c0 N/ Y( m这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。1 {" L3 f' u# p- n& C4 Y1 g
4 A! y' R1 b9 t
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
- g. S7 D( k" m
& p4 t6 Q& \- M/ y: G' @0 X6 o8 m关于边界条件
8 N  I+ Z$ x# o1 c3 [" @6 }! n0 P; @  B+ ?+ x
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。/ Y# T* J7 w7 ]( K+ [# f

& T8 O# U+ p) |& [1 K+ H而边界条件的作用其实就是找出你想要的那个解。
$ Y2 i& z, }) H, e8 f  @
8 V0 [' ^) V$ L* Y8 p* n% q之前文章中给出的算例包含的边界条件是:8 }0 y) p4 J! U3 [& j; R
9 O6 d) _. N/ b3 E
u(x,0)
5 n9 y8 f" g7 J5 h/ l! b7 h* Z6 a5 V  z
u(0,t) 和 u(1,t)
4 w7 P; ]' _3 P4 J+ c5 \+ k- F/ w- P! I4 B6 U0 A+ T" T
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有4 ]8 g4 m; j5 K4 N5 V0 M
! |+ ]+ @6 N( t: h6 D4 j; u% P
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个6 w* [! O/ H/ C7 G# V8 R: V# ^6 ?

! ?! o4 q: ?( G4 F( n但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。+ G- Q+ @5 C7 g, w! U

6 h7 x/ d7 k# E# m+ r2 t( ?7 K比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
+ |/ G8 b' b+ j0 F0 Y8 _0 ^, J& z. [; C3 V9 Q9 N
这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。  b3 U" I) ^3 q8 F8 n; c, C
--------------------- 7 ?& \2 L# D8 b4 n. g1 C! l8 _( Z

4 A4 G2 \: B. G7 M& _* s; ~* v4 e1 o2 R! C; n! q

* ~3 A) o$ d2 o+ I! l) ^




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