- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564709 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174636
- 相册
- 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题的简单指导
1 N; u4 J- V9 e5 T3 k( U' z2 t9 n8 U1 l
之前写过一篇博客,介绍如何使用差分格式求解热传导方程
0 T' G- `& |$ d* H" f* d* H8 s8 {4 X6 ~- v3 h
今天打开博客,突然发现评论区被这篇文章霸屏了: R% C H1 v% h6 ^+ D
, `0 P: B! |8 @' Y3 L7 k( ~2 w4 m1 P. Q! E. c- s4 [
- B( T: d, [0 j询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了6 T3 U& U J+ z
* {+ M5 S; c- ?2 G% p
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。9 F7 [' K5 h6 H
( O1 _. Y' R4 X( s4 T$ _" I+ Y
但是!
6 |- u8 y" D! |/ S M3 Y' }6 K1 H% {. z! g4 y0 ?, u- X
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。
0 r" Q% D9 b! e5 F: r# u& I: u3 U/ S7 ~+ A5 v/ \
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。) p8 b" Z! I/ a+ F F3 J" Q9 C
( z0 Y$ L$ B) a$ v+ b5 w, ^+ ?这里统一对大家的问题做一个回答:
* t- v$ }, l$ N8 O* L" G4 A; ]
7 U* I" F/ Y4 J本题适用差分解法吗?
) Q" ^8 x) E2 f' P# f% v; F, J1 X/ b+ M* ? e4 Y
求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。
+ U" y! G \& M' {" ^ ]1 m! E* b7 e. h8 J
差分方法的优点是原理简单,但是只能求解规则区域的数值解。! @2 Q; G; p$ }/ \8 c9 t) E/ r9 A
5 G `2 W7 ~8 C0 w8 q* m有限元背后的理论相对难很多,但能够求解不规则区域问题。) L, |3 c+ f4 y$ @) x2 T* C3 x
# n; v; A: j4 Y, M3 K: K
本题适用哪种方法解答取决于你的模型假设
; O: B5 A% G: D! |! W* T6 P' h% C( X; `
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。: V/ I( J# n/ t) h
8 D& J0 w; q l# R既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
( G' S6 Z) f9 C- @
; ~( q( I+ \1 g: H当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。
: B( y/ U2 |: h7 R) h/ _& e2 [8 e. v2 I, Z+ Q
是否适用于多层壁热传导?6 t4 k/ H" o2 ?1 z
- |+ O2 Y" r' f1 |评论区有人问,是否适用于多层壁热传导吗?' m2 s |4 u& a8 D
" K4 q! @$ [1 e
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~3 @/ m& N! z" ?* R( K) Q
y- X2 z1 _, N: Q2 _6 X答案当然是能,但显然不能直接拿来用,给几点提示。
& g9 i+ o) H8 |9 }2 |6 ~3 e: |: v T+ H+ A1 ?, N" E9 B
思路1:
; x) D9 {- E- L! D* L4 N7 A+ E- _+ o3 y) N2 T2 n+ K- A
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。
2 x# T4 y1 w J) Y+ X+ a+ J8 q/ j) \
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。6 [' s- ^0 w+ w! z
4 x9 O9 { Q2 B0 m9 @这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。8 E" A( `2 L, q5 X: p
- d9 O2 n1 j. m& {! N$ Q
思路2:
" e% f4 a2 ]' O8 \7 c, X
) H9 u# N( `& u- J& y3 C我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。
# Q, Q: i# T3 F' q" c _0 P% j2 X; N6 ?% J0 z# O0 M
这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。
6 U$ {! U" F. C$ t
& f; r* C: @3 d( O! B$ \, B这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。
& H/ s/ a+ f. g( S0 H0 c; \) ` h5 B9 a2 r9 w
关于边界条件; R) J) L( y4 s- l5 o- N* m" I
/ g" C* F0 `. l6 ~构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
' g9 @! G0 i0 ?9 }6 p" a! |$ h8 k) s# t
而边界条件的作用其实就是找出你想要的那个解。
9 x1 l0 b% ^3 y d
" h9 h) @8 r4 i! W' a6 z* [( _) f之前文章中给出的算例包含的边界条件是:
# v7 q- E. P1 U8 K# q+ V+ `3 [8 F+ N$ R- d) f, F" [
u(x,0)- }' H* t3 H) R3 p
4 X, u1 F s& F h6 su(0,t) 和 u(1,t)! t/ q8 w2 y) i% i9 J
6 a& I% L) `" S) ]在A题中右侧初始温度好像是没有的,也就是u(1,t)没有) M( w( ^+ ^6 W8 l4 |5 v$ z2 \
3 H; M/ x i. y8 c/ l8 K8 z+ \9 f: J. Y首先,你要知道的是,求解需要的边界条件并不一定非得是这几个
9 L0 b- x0 }) I* [6 ~/ f. t8 ~$ Q# O; k( b1 ?5 Z6 F4 z
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。5 |6 E+ y+ v f# ^; h" O
4 A* @4 x) l& W* A) N比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt9 ]' T% e( N3 Y# G* l0 P3 D
% O% R$ D$ }4 ~' X# J$ }: z- C- }这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。6 r. o6 ?. Z, _
--------------------- # }6 ]' [+ S8 g: O$ t
3 w- j7 _- W( C- n0 V: g" t4 I0 [& |
0 M" k' j) L# O. n# |( E J
" f% s2 Z! D+ q: x3 a. t |
zan
|