- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564678 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174626
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
2018数学建模A题的简单指导
9 }, c% e; H" ~" s: R* P7 h! ~" T! a/ v) V
之前写过一篇博客,介绍如何使用差分格式求解热传导方程+ Z# T* h' _ n6 m/ |- ~# U% h( K P$ ]
% c0 M# }! Y# F/ y! {
今天打开博客,突然发现评论区被这篇文章霸屏了
/ G0 E( h. M! V8 N8 P: X: g6 C9 B: |
0 K/ \6 H* p7 I5 g4 i" q# R
0 J1 l: J! T/ \& M! J' C7 v1 [" {8 O$ z
询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了$ {: o ?) l9 J6 S5 f6 ^$ ]% }- j. S
' P6 @; E4 o! v; V7 W2 i经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。5 ?- s& g& G$ ]
: q2 J) `/ X# a4 s2 z但是!7 i" h2 \* E, a5 q. A. B5 { ~! c& x
6 n+ ?/ ~( \' |. [
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。! v: j+ P/ O5 p% K; p2 l4 Z. n
( C! X) O/ Q$ h
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。8 d T+ d+ r5 l
/ V) N3 s! v. E; S; I: {6 _
这里统一对大家的问题做一个回答:
# w( }. p& ^# Y" [1 }+ Z, ? k
! p* u' A' f& _* R# C% v" M本题适用差分解法吗?
. m- O4 U0 Y% x1 t5 d/ r. x. v0 y) t; P5 _
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。
, B- u2 i! E8 b% ]7 l' d
7 d L. E2 b/ L9 p6 @1 [差分方法的优点是原理简单,但是只能求解规则区域的数值解。
/ B/ y) [ U/ O& q/ v7 r" W2 e. J. C# {. G9 X9 e
有限元背后的理论相对难很多,但能够求解不规则区域问题。
! `; H& [- _1 m+ } h g5 C' ^. Q* w: q' |& f
本题适用哪种方法解答取决于你的模型假设; N# ]" k+ t6 D
! E9 [& i# s U9 J I! X, d8 d
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
9 }, H, g% \5 Z2 y5 F5 F! W0 s# ?1 y
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
% g! ], ?) Q) I% S1 m
7 h% s% B/ u7 t/ X* Q当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。5 c9 k/ M' g" C G. l9 {2 @
& e) j" V8 ~1 M是否适用于多层壁热传导?
/ D; r j" N/ X( C) y( M: q2 Y+ y9 s3 ]
评论区有人问,是否适用于多层壁热传导吗?
' B% b2 O4 Z1 k E/ Z, y3 ~& s0 a$ [8 e r" A+ ^: m
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~) f/ o3 B- i$ \
6 L3 P* s/ r0 M% v/ x/ m
答案当然是能,但显然不能直接拿来用,给几点提示。8 @* R$ a' u! p: B
1 l' N6 R. L* H8 I思路1:$ W, H: _% K! @# d, D2 n) d
' I' t/ B, @! W) [* a你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
% f8 j0 v+ B* Y
5 O$ V! `; p. A2 k" R) A) t因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。
3 z H0 P9 e* {: w
# Y- s, V# |9 { N这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。; J' k! b6 \6 `9 V* N
3 R x. n) r3 {6 X8 n5 \
思路2:" I3 b, C$ v4 g& d
. `" L* O. {' y: R4 Q! V$ k我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。8 t3 z N1 B; Y; }* T
: _9 H) u( B2 o! ]9 i* z4 f这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
- r3 L! k/ G; q- _% u% E# ~; B
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
' _8 ~, t8 F& p& G D% L: t: w$ x+ B, c: j
关于边界条件! D8 `7 D# P1 D/ d: h% X% q' N" O
, ~5 n2 V3 n& R构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
8 B* G7 H! ]. _: L- L
/ z1 F) ]8 M2 }2 j而边界条件的作用其实就是找出你想要的那个解。
) i4 r/ J# C; h4 q* u
7 S+ Y* y2 M. i! m6 _+ P! m) q之前文章中给出的算例包含的边界条件是: i# s5 v+ o/ x# h7 i
5 ]8 M8 x% E; z' ]) P: R
u(x,0)% f3 l: O+ O* h( @. ]
$ z( {9 F' @ c( {
u(0,t) 和 u(1,t)
9 E4 A% N; P( \( N" @' ^
6 b$ E, I' j7 Q: ^5 k* x在A题中右侧初始温度好像是没有的,也就是u(1,t)没有 O. F3 v# k/ I9 V* G5 @
2 I7 ]8 ?" ]% c) z- B
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
; {* N9 c1 \8 _2 X% R3 ^; J& c2 V/ v) Q8 J. ?8 m% a! t
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
! \* {( I* o" G, `
/ m/ R2 O& s) v; j' t: V比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
" K: B9 n' g) n0 t1 p- i
" v5 t( n) M" q# M- H9 l! d4 o" Q这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
9 b, k1 M8 a9 _5 N5 {--------------------- - g4 `# u, ]. n; \& _" f4 @
, D. `/ Y. {. f h0 Q' A6 K
, C2 Q- _+ f% D* P
1 ~ W/ A7 A* F |
zan
|