数学建模社区-数学中国
标题:
2018数学建模A题的简单指导
[打印本页]
作者:
杨利霞
时间:
2019-4-6 14:23
标题:
2018数学建模A题的简单指导
2018数学建模A题的简单指导
+ a( o8 }3 Q; a- ^+ S
( O7 H# i4 ?* _ ]$ t
之前写过一篇博客,介绍如何使用差分格式求解热传导方程
7 S' N! c5 u, l$ ?% `7 T9 D c
5 w. c f' d2 o8 _. x" ]
今天打开博客,突然发现评论区被这篇文章霸屏了
( Z2 M" n5 l+ _* t
! d( s% E% L9 \
6 G2 Q, `+ c. ]6 P* f S3 F: k
' P7 p4 V/ |9 G/ k2 N. P
询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了
0 Q. j' s1 a, O
0 [5 w6 y/ \* j; X1 D3 `) T5 |
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
2 z7 n, P0 I+ I5 J" L% d
% l0 c2 z# M: E
但是!
3 R1 c0 u+ X5 q2 G
$ J7 R( N6 _6 s- b$ |
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
, X. E, n2 P9 B3 y G" x$ U- [
3 Q2 @" m1 U; r1 N6 F/ R
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。
& y1 f+ x3 V/ w Y* ?: W5 }) \
$ K' X3 d0 b6 C8 V
这里统一对大家的问题做一个回答:
$ @8 m( |* H( S% K
, ^8 H' o# G; Z( h' u- V$ B
本题适用差分解法吗?
1 D4 \* F) H0 g, g4 b: U
& S6 J" ~2 p: K
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。
. j% i$ P6 M1 [# c) w! ]# ^. r2 ?5 i
& e2 d1 @# e9 _5 Y
差分方法的优点是原理简单,但是只能求解规则区域的数值解。
5 q- k. e' C& u
% c* W- i- _$ y- u
有限元背后的理论相对难很多,但能够求解不规则区域问题。
, f+ I/ _. o- I5 D0 c
/ B% u% X. v5 v- u
本题适用哪种方法解答取决于你的模型假设
( k8 w/ J6 m$ o; a8 @& T( s+ @! s
3 _, r1 J+ z. H+ N
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
7 n5 J9 \- E6 R" T# T. s
- X7 W; h$ }8 {0 ^- N! ^: v+ d
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
. G4 N! p$ e( s" \$ I' j# w; g
( _9 o" y! [+ T% I8 y! ]
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。
! j- q, B% X E. K9 Z
! Q& Z2 @" q$ o' n
是否适用于多层壁热传导?
2 q! l+ S; j9 Q2 E' r
# g" O: G( R6 F, ~7 T+ r0 e% G
评论区有人问,是否适用于多层壁热传导吗?
! B: N" c# ?# G! d" a
) A4 n: c; g- H! `
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
) @* S6 j6 _* j% O
4 V& m* Y8 P, p' l3 k; U7 L* M- k: Z3 X
答案当然是能,但显然不能直接拿来用,给几点提示。
/ c. F3 p) \8 K. O" W$ A4 K; W: A
) @; C% E {3 X6 o
思路1:
3 L$ {& b1 V' `0 q( y
4 X4 A E2 b. ]) t
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
+ m$ f* D( u4 e2 r0 R4 e8 e
: z- q8 d" R$ i0 V2 j& a. W+ F. m
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。
& B* F; B. M# ?( H
5 e& ^; y0 ?! `, K8 v
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
8 A& J; V9 Q9 T. X; p- F% v
/ _( U+ L2 g R+ D3 m* j2 c4 {
思路2:
y" h* P7 T- s [6 Z7 O- k
) _! o9 x# p1 _9 x' r# B ?% H
我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。
4 O! ~5 m2 s" g) t/ ~
K! h3 {9 U9 ~$ J
这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
& C5 T! x9 Y7 u/ a% }1 h# h1 {3 I
$ T( b, _% [1 d" @/ g+ n
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
5 U0 x: O% k9 @1 p) {7 R o; }
/ w4 x5 _% g2 j% L8 j! s7 Z
关于边界条件
4 f. H: r9 y7 ]* j+ j* z8 M& S m
6 z/ ^+ W1 E- h9 t- n. t
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
! _, s4 g& j* `" l; P
* `' l; r. o& p0 W( i
而边界条件的作用其实就是找出你想要的那个解。
0 H8 A/ X% R2 }8 h& E4 _
( o5 x/ k" I% z4 F
之前文章中给出的算例包含的边界条件是:
d! G% e- k1 I' |. \7 g
% P* X, w3 b) j# U3 ]8 ?* d2 ]
u(x,0)
6 `! }: R3 e1 y: e e+ [0 G
- J2 e0 F$ H1 [/ n' E
u(0,t) 和 u(1,t)
- X, H/ o8 L/ g1 y9 E0 t
" E3 d. ?7 ^" H
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有
7 Z: E0 D3 i. V+ H4 q# G
* L( a d) K) h6 d8 ]2 E
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
# H* }. f) v4 o
/ Y( A0 K) O) A8 E* \# L& J
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
k% q1 y7 C8 O. c- a3 Z( d& ?
/ ]7 G. ^5 ?7 U& R0 F
比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
$ C* [- A! Y$ t8 i
3 r' O0 }1 z$ W$ N& b& j
这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
5 |. h: f: E( S
---------------------
$ `8 | @& F) ^* ?) A
$ I, V6 n' i/ G; b4 s7 H
% A. ?& h+ H+ ~8 n4 _
* D r; `$ ~- t: _" _
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5