在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 555372 点 威望 12 点 阅读权限 255 积分 171984 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 18 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
2018数学建模A题的简单指导 9 T6 B. O# b$ V) o& V. e" [
e' P9 D2 J, u! d' n7 q 之前写过一篇博客,介绍如何使用差分格式求解热传导方程. ~1 r/ N5 [+ l% O/ G) A
1 v7 m" r r L5 m
今天打开博客,突然发现评论区被这篇文章霸屏了5 V/ o1 A( Y- m) j. q7 @
/ }, @3 q# V$ @( [" B
; ?, Q) c7 n* g# y5 n
$ Z; J! ~+ B: c/ V+ v2 Y6 O 询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了! M& w7 X7 `3 R7 W5 T! \
. S7 v& Q# J) s! L 经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
& i, q0 D+ k3 Y, }
+ V! q7 A$ v0 D$ t! L- e! K 但是!: C0 j; m! ?' I
' n! z" ]$ {$ I8 a# @ 数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
. J3 b, \6 d6 I4 n$ T6 ^ $ f' b, ^. S7 K0 n9 B# M
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。
q1 i4 M" k! J) [7 \4 \
& \+ C6 L7 R, C9 x 这里统一对大家的问题做一个回答:
; R. h7 v) A, x: W' U D% D0 l
" {; ~, o$ ^9 a3 D, q 本题适用差分解法吗?
% L; O* q2 ~1 p% X, d7 m 5 [# S' T# A" o" L& \
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。& R# l/ g' s0 Z4 E
6 {/ D1 ?) ~! l) U. F1 x8 f
差分方法的优点是原理简单,但是只能求解规则区域的数值解。
% N, `; J4 k5 {1 R5 w
+ B0 a2 U% t: c/ v/ z! i& A 有限元背后的理论相对难很多,但能够求解不规则区域问题。
. u4 s6 s4 \) @5 q
8 W1 I, x" d3 o5 r 本题适用哪种方法解答取决于你的模型假设+ A$ }* i1 [* {% |
4 _7 L/ v1 T; R R
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。 B2 g9 S0 Y8 g
0 l7 F7 z: G6 ?: s0 j/ s4 } 既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。 j3 p+ M/ Q: j) i4 H$ x' T" o
" d! b1 A+ z& H, [! G8 L3 F
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。: W% B$ D9 |) f/ M. M
/ C3 @: W& O3 G. O ? H
是否适用于多层壁热传导?$ b& D0 W, u' G( d
# y! i$ r3 h- w( h
评论区有人问,是否适用于多层壁热传导吗?# d+ P9 M* T6 x# ?. e% W$ M
% d; ?, E' ]9 [* B L1 H* p( I 其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
6 L2 B0 }, ~+ v j( N0 z 0 J5 P5 j) \2 O$ M0 R; K
答案当然是能,但显然不能直接拿来用,给几点提示。
0 E' t; T6 Q7 h$ R' Z" Z% Z" ? 0 f" b1 N5 P* Y1 X+ m
思路1:
- f( }) K) b* @1 m( I2 g
3 ?# l1 h4 A2 ~/ D! i 你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。* x) b6 _- [, ~$ O: v
$ q4 O7 s7 b6 r2 a
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。' J& S) S0 P5 v
- D8 U6 Q9 | z3 k6 _/ B9 w 这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。8 b3 Q% |, @$ G' E ]
1 ^) K3 o$ [: ~7 L, t! ~8 c3 M' P 思路2:
( K6 I3 W- f H: y7 g; ^3 z
3 }8 O' j' y8 t5 q. M 我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。. c& w& {- x C# E+ K2 O/ e3 e' y5 H
; F! |- i% h/ w+ c5 x0 O 这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。. h) i8 G* ~# T. O9 ^
7 c* j( E; Z4 q/ {+ p 这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
. Q2 E/ ?3 Z: X! h0 M, [! e8 g# A
- D5 M1 ?3 Q- _ k# V z 关于边界条件
6 H/ E& s5 s# u# p3 E, ?
. V# L8 \# b! \1 n+ V. x 构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。. G* E8 V/ P! Q- K! ^' i
: `: u; T% w& @6 m 而边界条件的作用其实就是找出你想要的那个解。
, p) k; t9 n% `+ A$ N
* \6 W$ Q1 g2 C: j 之前文章中给出的算例包含的边界条件是:5 L2 z5 q# A( R3 n! P9 x) b# A
4 @; t) p% Y; _) X, M _
u(x,0)
. Z. D6 l$ b9 I" ^; q
v3 t$ ?( m8 b* H; g9 g u(0,t) 和 u(1,t)
" J- |7 Q9 y s$ s ) |6 l( h m, e- m
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有" P: l$ r" d# l9 \4 \" W
% Y1 u5 ^/ N5 N) o" ?0 z 首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
+ _) h9 Y4 O, @( q" i - ]; r2 p% {# p6 z! y) E
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。3 v3 z# K: Z2 h9 ?# q
* H, r$ _& N* Q$ I' n' y- B# E 比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt5 h& d0 y. r! S
/ I5 i' r$ t4 ~! d6 ~ 这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
5 f% u2 P$ }- t7 y --------------------- 2 [% K, [" a" G1 ^* h, o9 n2 j: u
3 _# O4 h+ Y, m5 e
! `, t5 n4 H Q8 H4 g4 Q ; q2 @3 R4 A) A+ p# }: Q
zan