- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563353 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174229
- 相册
- 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题的简单指导3 H# c6 o9 c! w5 q6 i7 u
4 n- ?. |- z/ F( S! Z: y1 s之前写过一篇博客,介绍如何使用差分格式求解热传导方程! _8 F( c2 O: t3 r
7 Y; ^( S! L# a: p; U
今天打开博客,突然发现评论区被这篇文章霸屏了 Q9 p1 ?& r- \. k5 m
7 J: \# r( r$ A- X+ @
1 c% B! y. a. ^! h8 r7 }0 x
$ l/ N& ?1 j2 J- I' ~询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了
* q7 ~4 Y+ f w" ~) _: ~
$ c& S: b/ k9 ?8 O( @4 Q经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。0 F; T( {* ?9 S. r' Y' V
7 a0 n' W% H- ?" s
但是!
- Z5 Z7 k; R9 X! A+ o m# ? o" B' F1 b' x' W$ ~2 M8 J& }
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。2 f0 R% c" y7 s& e# P$ t
3 O% _; m7 r: g% M5 u7 a* m+ s再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。5 u/ S8 h+ _: b" |
* q! ]7 U" @- z' N8 J* K, Y E+ @这里统一对大家的问题做一个回答:6 ]& O. I0 f& Y1 C2 H# s
/ V- v- L8 Q1 R" [: ]2 a# O' R本题适用差分解法吗?
( t' k+ H _$ a: X& P: }8 O
4 {* t4 J" X8 Y求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。9 m! o, T+ j4 z% r$ ?
( ^9 `9 T1 F; N( B差分方法的优点是原理简单,但是只能求解规则区域的数值解。) |& B8 \- L; N7 o/ F0 b
/ X$ {" f3 R9 K3 i+ c: R# h, T有限元背后的理论相对难很多,但能够求解不规则区域问题。& x" U% K& c1 i! Q$ ]
5 \# m5 @. z+ f$ T
本题适用哪种方法解答取决于你的模型假设4 i4 A. F/ C0 c9 l2 X# G, H. B% g. P
0 N2 Q& q7 A! ^; `) [2 t! P+ P U+ Y w
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。" [' o3 ^! w% j4 J/ l: d! O
i- ?4 K, ~3 x+ \9 \既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
; M0 z9 b9 O5 G. ^% X2 W7 `
+ T- ?: b* m* ^+ E) ~; c当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。
% ^: F( e% S- p% {
3 z- @ B! i0 f# e% e' g9 L( }. J是否适用于多层壁热传导?7 N8 I0 E% l, |+ w. y
* ?5 s u- S$ S7 @3 o& ~- d评论区有人问,是否适用于多层壁热传导吗?
! K9 O( a0 o3 Z
7 H) X8 T) f& _7 d1 J: J- y! C8 Z; m* y其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
# Z Z# k$ r- q4 w/ [9 h# Y+ M: d! o) l% x+ r
答案当然是能,但显然不能直接拿来用,给几点提示。
, l/ O/ @9 w. L" ]5 z, Q$ u7 }3 {5 G' k$ N; V) u
思路1:
, D$ b3 B4 I5 z$ o J8 r9 T/ T( q3 t5 `8 K2 z% K( L# E" r: I' k
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。& A9 O8 R: F m8 G9 n* a( A! G- B
) a" q& k+ U! S8 x- E" ^* T
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。( {5 i" ]$ Z! l4 Q+ l* [
# W+ U1 e, s: L* X) f5 Z
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。7 j" Y% h8 Q+ g# f V
7 y P+ p2 D+ h6 ^
思路2:/ O0 `! b* F) F1 f! H- y
* ~- @! t4 f4 `# k6 k
我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。# k* P* q* d1 c9 F1 P" Y
; v# v7 h- Z7 s. I6 w; g W' v这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。: h" W0 s7 G- m3 L& O+ K
, x" r+ y* f" T9 f" }# {4 O
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
' _# s; r) O+ `, t0 m( O$ w5 N4 p9 a" D
关于边界条件7 f s: n7 T6 F
1 t& j5 E- F2 ? P, ~8 D- y. W: O) Y! m! k构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
8 Y4 d6 ^+ O( e5 M4 p' O$ V- l! f$ e- d
而边界条件的作用其实就是找出你想要的那个解。; O6 v+ e) L- K# p1 G
& K) t- D C7 d. V( n2 N0 O
之前文章中给出的算例包含的边界条件是:
6 ~: x7 l- D& H0 Q9 M5 y- g; D( }$ m* Y5 W9 O
u(x,0)$ [! a) ~: x" v' X h' s* c3 t
1 u1 E( D4 q5 e
u(0,t) 和 u(1,t) ^! J7 X$ R4 Q8 r/ j2 R9 I
- F. F6 F% z9 J! l, o: D$ ~* Z
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有5 k; Y- y2 I, D
# R8 r6 H) X* H; Q( t, k, D7 b, P
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
" u8 s6 |! X: }2 }6 n- S7 `
G9 i' b ~( O) s' Y但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。
. V* _, @6 ~5 u; @
$ x# G6 J3 I9 X) F: B: A比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt! E9 L4 D6 B2 u
a+ i$ V( w: y( a( N, V4 ^
这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
4 p- f: A* F8 W: M7 t--------------------- . _! ?3 j( S/ M L5 e- V
; T, o o6 ~( O$ ^, R1 o
' f4 \7 \; P- I4 A- J7 A5 h5 { {- g/ ?$ [; Y% b2 e
|
zan
|