- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564663 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174622
- 相册
- 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题的简单指导
' C/ w5 V1 e/ j( H7 C0 p" t% O# `; ]- F) c# Q* x
之前写过一篇博客,介绍如何使用差分格式求解热传导方程/ V L+ ?0 y1 [
Z, R7 s8 Y5 O+ R o- D: P
今天打开博客,突然发现评论区被这篇文章霸屏了
. [& [: q0 o; |. K, M$ ~6 b* n6 \/ Q' B+ B+ G+ c7 O
# I2 o: f0 P9 x7 V( l3 | n% A+ p; J4 S: f7 ?
询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了( }& t9 L/ j% B. ]+ V9 {
& a2 \1 K( E* |7 T
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。
7 A( L4 ] W& F8 ^$ z% H8 b/ C
/ x. [- p' ^8 k6 |; \. a/ m/ o# N但是!
9 x4 K- N, T ^6 }" R8 g: C0 l8 S8 s: }8 a% [
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。, u e& P! X5 m; l6 ]" R: r
/ E' A& _- e9 }- O& X; u
再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。. |3 w: A# f& T$ M9 D
5 ~' K7 {* e0 n3 V2 Q& e
这里统一对大家的问题做一个回答:
) O, p, ]- ~8 k8 P0 ^' W) L0 i% k% h3 l0 z, z+ t
本题适用差分解法吗?8 q6 r2 d! ?2 H3 J8 t* `9 ]2 \
V# T3 W8 [) k0 C求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。, z. z& ?% i# {
# G' v$ j* a$ S* L; J ^# W0 x- N/ i
差分方法的优点是原理简单,但是只能求解规则区域的数值解。# E% t9 r* @2 z+ J7 y9 B. G# G
% T" T9 @0 J" s: q0 X I
有限元背后的理论相对难很多,但能够求解不规则区域问题。6 x4 j1 U: ]! o0 {, O; d- y
. C% ]$ W8 L1 z' g- ]2 ]+ l
本题适用哪种方法解答取决于你的模型假设! i- G1 v" f8 c8 [
. s: d. U0 I5 N% |! e# p" u
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。
9 c. n& ?' X% _7 [/ [7 q6 j- z, s7 X( W9 h
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。
. p8 V% p; X9 N w" g/ b4 h% ~# a9 ~% a. r' n8 u
当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。* d, f7 B/ `1 J+ S# F' ^% [$ p- V
6 e: G" T5 \9 T0 L/ ]是否适用于多层壁热传导?! X( Z# C* G2 R# y/ y
4 P: S, d$ b/ |: o0 F% q+ N
评论区有人问,是否适用于多层壁热传导吗?
; H( q' r. r5 _1 ~
5 j! z3 v" K! J* Y( r9 J其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~
- B! J8 M! K4 c. `3 o# |
7 X" w' l& I6 B! D' p s) j( X答案当然是能,但显然不能直接拿来用,给几点提示。+ H2 y6 K; W* r5 v3 x
" G+ E6 A. D% i思路1:
; x; Y8 I* I; p# G9 W0 t- C3 D; J# @0 z. C! A& E! T: ~0 F+ O
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。0 X; p( r! B' U1 z8 x. V
# {6 c& v3 a9 B: M$ h$ O) e n7 T4 h
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。: {$ V; o! e1 |
$ M/ J D% i/ W, T这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。
/ o% v: I6 ^- u* V$ z% _# T B: E2 ?: Z N4 ]. S
思路2:
?, b8 G# p/ S/ y- w
$ P7 K" V8 {: N我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。# W& |; k! p$ y. ~
2 B6 C V6 a4 B) [$ S0 C: b/ S M& d这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。! Y0 ^/ B0 n8 D8 q& ?& R( n# D/ A
1 c1 P8 U; K6 X& l4 w
这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。" F7 |! \9 k2 A3 ?. @. T
" `6 D) k% X" E# }6 `2 T9 B7 a
关于边界条件7 |8 U( j; k6 t/ s, ~2 J7 B
! m9 Y4 ]4 N& N9 W0 D
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。
: j7 X4 W6 u. `" w: [6 J& S7 O' a" ?1 x, S G; h0 R9 F
而边界条件的作用其实就是找出你想要的那个解。4 H# a8 m# p5 y$ a7 S- A9 Q
' C- f9 X( ]2 {
之前文章中给出的算例包含的边界条件是:- u8 t3 H* Y5 p$ v9 S
: f. d# y* n. Pu(x,0)
; ]$ J$ P2 v8 P7 x' }/ e+ v9 l# Y: D5 K
u(0,t) 和 u(1,t)9 I! q& U8 b' f
9 E( C& L* n/ P* Q o6 N
在A题中右侧初始温度好像是没有的,也就是u(1,t)没有
- F! m* g7 O. `5 q" M% z0 |+ F" X4 X+ W3 l2 K" D# `1 A# n- \
首先,你要知道的是,求解需要的边界条件并不一定非得是这几个1 j9 g) K* K/ D/ }# x$ a( \9 A4 s
' }( [" K, j$ G. {3 M( N# E) q7 W
但是少了一个边界条件,你就要想办法补上一个边界条件, 边界条件也不一定是已知函数的表达式,导数的表达式也是可以的(当然,代码是一定需要相应修改的)。. h# [9 u& F$ n3 O q) D
& Y$ V% s% B8 g3 P: h, ?
比如没有u(1,t),你可以想办法构造 du(0,t)/dx 或 du(0,t)/dt
, G p% h1 N* b) t* k: F- m' i, i9 D
这就看你如何理解原问题了,建议查阅文献,看看别人使用的是哪种边界条件,相应的对代码进行修改。当然也可以通过模型假设,将问题向你期待的边界条件上面靠。
) [1 S2 \4 n7 J! C--------------------- # O" Z% {, D0 d" [% r. D
; x5 @( n, J5 |. ?
; L8 H$ n/ ?8 w2 W* Y) r: L' X1 v1 @( N2 g: U) Q) g
|
zan
|