5 C; ?: S8 t. U# P" a' B( `今天打开博客,突然发现评论区被这篇文章霸屏了. x9 G r C/ |' `" x ^
* L7 X" p4 S/ O4 |3 \2 \. T% _9 p) l/ P) n4 d
% ?# r- p2 k2 `9 \# O: x询问实验室的小伙伴才知,原来是被可爱的建模学子们攻占了8 P3 h I/ Z. Q8 m
W- m! ?$ _" \+ ^+ i8 s! o
经过简单的了解,发现今年建模的A题的核心就是求解一个热传导方程,因此之前所写文章的程序基本可以算是神助攻了,完全可以帮助大家构建解题程序的基本框架。6 Z& H1 D" y H% H% ]0 N
. B- u# M* `" c: ^; f但是! : B4 P/ ]" [) b5 A; B# j2 }3 H( n; U2 Y
数学建模比赛考验的就是大家的学习能力以及解决问题的能力,我只提供简要思路,不要做伸手党直接找我要代码,不要问我怎么写,请对得起你将来获得的一等奖。 - V, w' l$ ?' d M* w" d 3 ^' r& n2 J, p2 ?再有就是,你要先确保你能看懂我已经提供的源代码,否则下面我提供的思路你可能看了也白看。4 @% i2 Z3 J8 K8 C% j
* g0 z. L; b3 {3 \$ a0 n5 k% w
这里统一对大家的问题做一个回答: 8 x; q* R" M, E1 M% h2 N3 F' i, o* E# H5 D4 [2 t- F, z/ q) [% ]
本题适用差分解法吗? / F. _0 ^' [1 r5 _* E | 8 k9 L' J3 L! x/ ]1 ~7 N4 d5 N求解偏微分方程的方法中,差分方法 和 有限元 是两类最主流的方法。- O( a6 P1 G$ C' e- y
# z5 c3 H2 j5 t1 p7 I% _$ w
差分方法的优点是原理简单,但是只能求解规则区域的数值解。2 m/ Z+ a; E+ z1 P1 X
# \2 z6 K7 Z, r Y& J
有限元背后的理论相对难很多,但能够求解不规则区域问题。: e" a# Q# M; N3 U$ o
: p i" z* v# _本题适用哪种方法解答取决于你的模型假设 + T/ j% X4 b2 L6 r' b) U# Q: a" l! N. }4 x% h3 ~ }
本题中涉及多种介质的热传导的求解,我的建议是,如果不想给自己找麻烦的话,将每种介质层假设成规则的矩形。 . J }8 z) `% u+ _! l/ j7 Z1 h* {! ?& O) [
既然带求解区域是矩形了,那么本题使用差分方法来求解更加合适,关于差分方法,你可以随便找一本介绍偏微分方程数值解的书,都有介绍。: p* _% i% I+ \& ]# Y T6 U
# v& l4 }, ]- D0 ~4 G当然,你如果将模型假设定义为更符合实际的不规则问题,能做出来当然是亮点,但切记不要搬起石头砸自己的脚,毕竟建模时间紧任务重。* {- O- K2 z B9 h, W+ {
6 B* t" d9 u4 f% a& W$ K/ h
是否适用于多层壁热传导?# E0 p9 j; o0 n8 L! }8 ]- I- w7 t" n
+ x6 G: ?" e/ u- I
评论区有人问,是否适用于多层壁热传导吗?- C' C) q9 r2 @
$ Z3 g5 F$ |7 x+ G; T% |% V9 \
其实就是问这个程序能否求解A题嘛,O(∩_∩)O哈哈~9 B& x7 U) w8 E6 E; i
p7 _! u/ D0 `8 F) E
答案当然是能,但显然不能直接拿来用,给几点提示。( I& H; M+ @, S+ @ V2 \0 M
( R; V" |+ B1 D思路1:9 p. F! I$ m$ U( K" V# I
# s) z+ ?2 a2 w; f% A# ~9 \$ d* w
你单拿出其中一层来求解,和我提供的算例已经没有本质区别了。/ l, z U* A; k3 @. Q
# N8 O5 M" H$ V( [$ h$ [! O
因此,你可以一层一层的求解。先求第一层的数值解,第一层的结果一有,第二层的边界条件也就有了,于是第二层也可以求了。 & t! Y, n( j, F+ a' S8 t+ Q' a5 }- o, N5 U* f6 k, N
这样做的潜在问题是,第一层中求解的误差,必定会传递到第二层去,数学上可能不太完美,但是好理解,代码改动也少。/ J3 A2 E; ?" V5 r8 @' r; \ h
, J, r( ]; B1 a: Y+ Q4 h2 L
思路2:& E! N3 P# m1 Q) \. o0 E
- B9 y2 y7 J# R8 Q3 C' |# y
我认为数学上更好的方式肯定是整体一起求解,但这就有点困难了。& O; l+ v# O9 w4 a; R/ W( N. c
9 `3 T* C k9 o$ N; i
这样做时,你需要对每一层边界在系数矩阵的相应位置处,都按照边界处的对应关系进行相应处理。 # }5 y3 X6 @4 u( x8 n; H6 F r; ^ ! W9 N- ?6 u2 S$ \! P& T8 B这需要你对差分方法有着很好的理解,如果我提供的代码你无法完全看懂,建议就不要考虑了。' |0 p7 J$ P7 Q& [/ q
# g- Y* I ?8 A( m* c关于边界条件 ' S9 s W" \1 F8 u# Y; t4 b. F4 p+ D- ^4 Y) `# t
构造的差分格式是保证解满足对应的方程,但其实满足给定方程的解有无穷多种。 / Y/ S' x/ w* _' ^# X& l" o; n# m
而边界条件的作用其实就是找出你想要的那个解。4 ?' i4 W6 F6 v5 C. E. C) S
! a/ N6 p" ^6 Z' b) r. S4 [6 X; R之前文章中给出的算例包含的边界条件是:5 d! c* I; G, _, K' b
$ r! M# i [% ~) V5 t0 [, x. U$ n
u(x,0) . r* a3 |6 W8 g( Q 0 u9 o- g1 G- z3 H( w9 ru(0,t) 和 u(1,t): E& t" P' r7 ~0 i3 M3 e% R8 w; Y