在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 563297 点 威望 12 点 阅读权限 255 积分 174212 相册 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题的简单指导 ) z& W# c! D7 y0 l5 k
. b( O/ P- l3 {, T
之前写过一篇博客,介绍如何使用差分格式求解热传导方程
+ E0 {! H2 I3 M8 `/ }" S/ w$ x % u. E6 Y2 R) F
今天打开博客,突然发现评论区被这篇文章霸屏了* a0 D/ T& [3 v0 i- R8 l) \: I
+ `0 Y1 l6 z! y" F9 r+ E5 _, k 7 X/ Y: w2 Q' A4 I( t, v
' N8 j P9 D2 K; l. i 询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了- T9 Y/ p' G& O( _
# B; Q% O( J# E7 A" e1 o) P E& w7 N( D
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
* N1 N; P& A0 B' K L1 y
, f d `0 J9 c$ V: r/ ]- p. g 但是!. }( n1 v& c# u
l3 h8 q# e5 Q- H6 _$ i" q% k* J 数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。1 s& |+ L/ y$ U; o& I. C1 S
0 \. K6 A1 k* {7 q- h9 f% a" |9 K7 F
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。
, O2 j# b4 m3 h$ H6 h* A' Y
8 C& x$ N- p1 `4 {) E; |! O 这里统一对大家的问题做一个回答:
& w" k* x+ K7 r& i$ Q0 |5 f
. E* n# N4 u# d7 I% T0 a 本题适用差分解法吗?$ t: i6 t9 ]3 X: b
" u+ a+ Y: l5 k% e+ ]9 j' b
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。0 x1 K+ `4 I0 S
7 _/ F+ `, M$ V, o( b7 K* f 差分方法的优点是原理简单,但是只能求解规则区域的数值解。7 H+ D, c. C2 V4 J3 Z! N) y! l$ v
' Z( i5 [# u4 J# L/ [ 有限元背后的理论相对难很多,但能够求解不规则区域问题。
+ Z7 ~/ {' H! Z' O- u( k+ e
; j( S' j7 {* \1 N 本题适用哪种方法解答取决于你的模型假设
' E5 K8 R- R/ p2 |; @& q0 F # b9 {) `: r: j$ W
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
' @, X% H% d( \+ o; L( Q
. S' \: m" M' I$ ] 既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
1 }4 `+ g. G0 {+ n
2 j' c, t& }" G i$ E 当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。4 C! _$ [+ b1 a
1 F+ x% R2 I& v
是否适用于多层壁热传导?4 ~3 G3 E- Y/ W* o: O$ H8 o
& y2 R0 ?( {' ^3 m, T. e 评论区有人问,是否适用于多层壁热传导吗?+ b$ k9 I4 x c( S2 G7 s# l
. x; D$ W3 D0 d! g
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
" v% U R2 l* D3 R0 k 3 K, P( t# B; \, P, i0 D
答案当然是能,但显然不能直接拿来用,给几点提示。
. e4 ?& c9 g# [5 S
5 P& P0 l l8 ?9 Z 思路1:3 F5 ?( f4 c; Z+ `$ s Q
9 D8 r( u7 F0 b, s1 ?: o' w 你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
2 D" a X1 x% @3 k3 y0 r " }% |/ _/ V! }; c' A1 a" `7 I
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。+ Q$ J* c9 b3 @# |; ~! g
7 \. h/ I( A7 |! r# U& Y
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
3 |9 U# T+ g9 v# O3 r& g: q
4 g8 l% j4 A& p. g, X 思路2:
1 `6 F1 c" j4 Q
H; F# X* F6 n/ u( D' i, Q7 C/ P& e 我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。. N) e4 D3 A' `1 g% W
; [4 r/ s o+ A5 [/ v 这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
2 @: u/ G/ d2 \/ x6 T4 V 0 t* D; s5 t0 o) y
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。% ?, @( K) c9 E2 P7 q5 X" Z1 }
5 f6 M& w/ p' ^" P$ Q$ `$ T
关于边界条件
; y" n9 b( j! r6 l' L- Y$ o
8 t9 A- ]! v7 R+ s9 h 构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
`: @6 ^8 m. L; b1 T & ? v3 I, r6 s2 f
而边界条件的作用其实就是找出你想要的那个解。
# o, U2 L' G2 H9 G 6 G5 T) Q/ {' e3 z- \" d7 l. H
之前文章中给出的算例包含的边界条件是:! z$ s9 f/ F. |) P! ^# s' d
2 [# R$ x+ E. N$ \% j u(x,0)% X A5 T- \; h' T; s- {
: r. z" e+ q" G+ U# W1 F/ ]
u(0,t) 和 u(1,t)
- S0 x: Q) K ~: _) u H
: E/ |$ e7 q. i6 |, \1 g# R1 x 在A题中右侧初始温度好像是没有的,也就是u(1,t)没有
( R* H' o- ]! l9 y- ?
. ~" d$ f R8 r9 C% { 首先,你要知道的是,求解需要的边界条件并不一定非得是这几个) `, U. J F+ ]% m1 p; T) E
" X3 ~2 o) x: T, i 但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。' x' X" ?2 V7 s9 Y, ^$ f
. \: L6 m% M: o) Q; f0 f* @6 B3 d
比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
5 N9 C5 U% k8 v
9 b- j: @0 t$ V: ?/ U \3 _* K 这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。. f2 d3 m! J3 ^% ]4 `. m/ B! k7 y
--------------------- 2 U( m( Y& N9 l Q- g2 J* {& _
" B; u5 h \8 u
4 w. l. v, O0 ? 0 \3 `+ }9 u4 H
zan