- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563327 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174221
- 相册
- 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题的简单指导/ U' E/ C9 R" X" m+ A* U+ O. `
0 Q: _0 Z& F! S- h5 P: g2 s' Z$ a之前写过一篇博客,介绍如何使用差分格式求解热传导方程
8 X! V& s0 ?" _! J4 Y& i! {: z
6 x- I3 T' r/ t. F今天打开博客,突然发现评论区被这篇文章霸屏了
( E$ Y; {, \% [7 {: ?
* y1 c( D6 @ L' f1 X! P$ u! E+ z8 s3 {
! X: _0 h/ ~- |' X询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了% l5 ]2 w# H3 z5 k( n! D3 b1 W" v e
8 M8 a# D- u* Y. }* S- a- j8 t经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。: o$ ?1 k5 u2 D# z( R( [* x
9 h3 }' Z2 l! ~% {8 `1 Y& j' [
但是!
: T3 G4 f, P; J$ q0 p6 X
8 C3 D9 {& ?% s, \( x数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
' Y7 n" p7 m) B9 |1 [
& v" K+ c: p% A) a$ L再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。- T5 @ f( | D4 K' s/ o$ C" z M. U
' G1 g2 I7 x* x8 U
这里统一对大家的问题做一个回答:
0 d. h2 P9 }- Z& P: \' o8 F, S! l% Y- g& y5 F/ B8 ~' y
本题适用差分解法吗?( Q( ^7 L3 t6 ~& f; Q( T
( I" y8 }2 P# U- a: o1 p求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。
) q0 K8 F6 C4 i9 d- V9 ~' D9 P5 Z, b' i. O$ S( ~8 n+ T) k! Z, j
差分方法的优点是原理简单,但是只能求解规则区域的数值解。$ u, D3 T* ?) u; \. T
: n: {" `/ r, \; |# r2 D* ~
有限元背后的理论相对难很多,但能够求解不规则区域问题。
" m9 a" u9 {1 R1 \+ J2 o
! m) }2 q6 O# {+ ~) d! h& u本题适用哪种方法解答取决于你的模型假设
4 r8 f* x# p4 ~& y* H8 W) w# G/ X$ @
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
4 g- _; o* c8 ^5 i# U9 h6 p9 P# q! y7 @4 I0 i9 g, N
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
" u2 P4 q. |! E5 r/ L- T" i3 P. g( Z8 o7 [5 t/ e
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。4 ^( u* A& }3 q a/ y
8 n% Z) Q7 z* r# _0 I是否适用于多层壁热传导?" [& l; E; z' `1 P/ m
4 [. B* D" _9 {- s评论区有人问,是否适用于多层壁热传导吗?
9 I% P( O1 n" l# e$ \3 ]
6 x$ @$ L7 l9 x+ J其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
& ?( W9 W6 b- v1 t
% E/ P3 C& }8 s8 E6 q答案当然是能,但显然不能直接拿来用,给几点提示。 `) P9 o# O4 {# J4 s
S3 s* E( ?( m- s. q1 {思路1:; K3 L/ z0 o: U8 n/ m. Q- F
) y( k: z2 ]' @/ ?8 z( W5 q; Y你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
" Q% k% e! z3 X q
' [. y1 t$ x& |" G因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。
+ d( a0 e9 v; t+ Z8 v/ f1 w0 t' L( L. V3 \2 w
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。0 A& J, \3 F' p, d
- ~) V2 x E: G6 Q思路2:! o/ {. ]" z) g" ~
5 [/ M1 n& }$ u' g R" g我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。
/ o. O9 h, W d5 g* O% U1 L' ]& u e9 F4 ~5 Z7 e. t" j4 S
这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。3 t4 c, c! x, ^6 S, O; ~
" u7 J2 Y4 ~$ F5 g2 s% i3 O7 O
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
4 C) S+ t2 S0 C+ [+ |( O4 x3 i! U
* c) i; k4 M& D( [2 Q" F% X关于边界条件: |1 A$ z4 U& Y$ `% Q# L
. }3 L( a# a9 r$ L& e
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。5 U a. p( i, L
; i& U' j/ p+ o; W0 G( }而边界条件的作用其实就是找出你想要的那个解。4 w& Q! d* h! _. J
% |" Q" d+ r$ f8 w/ o2 H+ f7 }之前文章中给出的算例包含的边界条件是:
" J8 A8 j l5 h: b9 v
2 J) n5 ^) d8 m- Ru(x,0)
& A0 l2 G$ R* O7 x# J3 e4 |& b8 ~8 K; Y- g
u(0,t) 和 u(1,t)$ @- m3 N$ m* h5 y4 H
6 D! N7 N% i# z: P: B
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有9 Q9 x. c# p7 o& ~
8 G& }5 G5 I% K8 h
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
9 @9 ~& \$ n L1 s! T, V1 J9 b) m. w
; ^1 Y4 j, L; v但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
) M+ g+ @ J2 h8 ?, w& K
8 s7 H" ]. {8 |比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt4 f: B! R, Q% @3 r, W/ C
: ~2 y! E6 o6 }这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
" B6 W& d5 ]! J Z1 s/ t s--------------------- # J5 B2 ]$ `( Q1 a- W. E$ d3 D
9 d; v0 F9 ~' x! b
& \& G7 C/ \1 }, N, I5 X" ?6 k! P2 ^5 }4 l0 g5 F+ f6 s |# G
|
zan
|