数学建模社区-数学中国
标题:
2018数学建模A题的简单指导
[打印本页]
作者:
杨利霞
时间:
2019-4-6 14:23
标题:
2018数学建模A题的简单指导
2018数学建模A题的简单指导
# z7 o! J; ^- y9 X( o! g, \: ~
3 V' D/ q/ s% G& Y& t
之前写过一篇博客,介绍如何使用差分格式求解热传导方程
+ h: P% @9 L" u k% O
& S- h s" p4 J5 E' ^& p5 {/ E- L+ D
今天打开博客,突然发现评论区被这篇文章霸屏了
! a& L$ m" m% k8 x8 Q$ t8 M$ Q
4 i) j# r8 F1 p- t& B3 B
: e# a i2 b' Y" }, v* A! ^& r
8 s$ O: D: l8 n' [
询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了
8 m7 W* O% V7 [, T
" V) c/ _5 T1 d' s" ~1 c$ R; p
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
( ], q! o5 }/ O7 T8 |) Q V
, u) \! T: D3 n
但是!
7 J! \0 ~4 ~9 K9 d9 f
7 s* l0 c5 V" Z% i
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
6 c9 s3 d7 a4 @. z
! B* V Q" R( A' h
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。
. R8 D8 Z; h" J) x: E" _
1 v8 p; ?/ {8 r
这里统一对大家的问题做一个回答:
7 y* T: N5 t2 l2 V, v' m
8 J; Y+ |! {- u; v, d
本题适用差分解法吗?
2 L/ M1 e5 n& g9 r, W
* S+ z0 `* u' v$ G' m
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。
) C5 @1 P# B6 G7 r' D
( w( \* Z* S1 D& b8 n
差分方法的优点是原理简单,但是只能求解规则区域的数值解。
! [% S) M9 h7 T7 [! I0 P6 G6 f
1 H. U. \% Y* |, a
有限元背后的理论相对难很多,但能够求解不规则区域问题。
8 _+ V8 G% F6 Q! \4 Q! n3 y
$ p9 |3 O5 i9 J b, j J
本题适用哪种方法解答取决于你的模型假设
- L5 ?& R; l: }" y7 n3 _6 E# D
; y8 z7 ]$ `7 \; s8 o+ M5 x
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
# Q6 ?/ f. O0 b9 U j; G1 B/ {4 h
4 b! U) k! l7 H D6 f) z4 b
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
6 C3 D, j3 W5 B% s! ]9 I" z
- _) |7 A; L5 F# H" {
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。
) |$ J% V6 m. c$ I: o' U
% A& t0 ^, q4 i* ~5 r; k; f
是否适用于多层壁热传导?
& z9 X! p, W3 u9 \ d: Y d/ e
3 t) e( I2 `$ ~5 Z4 K# W
评论区有人问,是否适用于多层壁热传导吗?
6 a. N% M" S# I& C' H
3 t8 [+ U" [3 s2 m. W7 @$ C
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
. B" S3 @. q6 B. C- M# L
) c& |4 Y9 [7 q, U; w, w
答案当然是能,但显然不能直接拿来用,给几点提示。
3 B9 c' A; r, R, H8 x
) d: A+ b, c- i) `0 O
思路1:
1 [% _4 ]$ h% G0 C) f+ B
" {. E# f$ F; k7 F8 A2 V- O
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
8 q5 Y7 J; [' @
6 s$ V, |9 X4 ]) J% p X0 F9 @
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。
& m6 ~: ~& n% R2 k. D# C
, l% y, U2 B/ G, c
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
5 c5 K: s6 S5 i8 c- h8 \5 h
5 G! s2 G z: ^; a$ Y1 b7 M
思路2:
: r- r8 U: \! G% I$ v# k
5 M. a# j8 H) m( K+ w3 h$ |
我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。
; k. h# W2 B+ D. @8 h4 _
( ?/ V5 f h1 U$ J. u5 k
这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
# L7 {! I& H# g$ E# H$ p4 [
t) o. a$ v+ O) f% x3 m
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
* k% p' k5 a8 `/ V. G
2 V' K3 v8 x2 ^$ v2 v( ?/ M$ o% I
关于边界条件
$ L- A2 k0 y/ g. [, y8 \, ~. d; m
4 _8 |" ^, s9 y' h5 \
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
' c7 \' \+ q& g. k( o H" N
, H; ^1 U0 E: ?2 R6 M4 n5 d s) Q x
而边界条件的作用其实就是找出你想要的那个解。
9 }0 J% u% ] Z( M7 z* [4 A
- h5 E; w; \2 {8 N
之前文章中给出的算例包含的边界条件是:
2 ^5 O7 Y A) s3 X8 l
3 Q( V% i$ Y) |+ S4 j
u(x,0)
: `3 A+ [0 x$ t% f: s' o3 X
: |+ M6 i9 ~% U0 M+ ]1 z/ {
u(0,t) 和 u(1,t)
5 `4 G g; R) Q! D$ l+ G2 F9 f+ \
+ T$ ~8 B/ g& X, @1 h- m9 }5 x
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有
) d' S. E1 ~$ G |: z
1 [. g z& P! {4 T
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
; R5 m! x* u/ W$ k/ ^& v2 ~) r
7 L" e9 w4 `! R+ Y: q6 i$ ^
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
9 _5 Z: w3 D' |; w$ G! l/ `
0 Y) D4 U4 I- V x
比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
7 \, d& K) g% w: r# L9 n# H
9 [# N1 g# K- m9 [8 j7 P+ X( Z
这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
N; A7 J$ F$ W i# ^# M
---------------------
# R) Z: K1 v, n5 F/ w3 d4 o
4 S( Y( I$ x) d( v( Q: ^
1 t, a: v) n& C3 j
* g8 R: G% B6 y. `9 D. x
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5