数学建模社区-数学中国
标题:
2020全国大学生数学建模A题思路讲解与核心代码
[打印本页]
作者:
杨利霞
时间:
2021-7-16 16:32
标题:
2020全国大学生数学建模A题思路讲解与核心代码
, T! a% }! s$ B% Y2 @. Z# w& u
2020全国大学生数学建模A题思路讲解与核心代码
4 x2 k. H8 p5 ~/ x
0 Y" }% l4 C, W3 y3 s4 L
2020全国大学生数学建模A题思路讲解与核心代码
$ l2 L: a8 S, S3 Z
题目
5 p. @& [0 `2 y6 p) d! n' q# o
核心方法:
$ z) W& r% h( ?3 [. H0 j; \
问题一
8 m9 g5 }2 D- C$ b6 ]
问题二
( B I+ }2 o2 ?9 d7 R( m
问题三和问题四
& g2 D; O5 i) T/ k) b6 N2 [4 @: T+ C
答案如下:
( f M& X: P. C) Z" s. y6 Y) b. B. L
题目
' J0 [9 D; `3 A* M. S5 N
) f! i' v( u, {, a* D
) T' j# U- k4 {
) k5 a( Y4 c* U% s) V q, s. q
3 c7 Y( ~. R, r" M9 H! k
3 V1 R6 {3 x7 v5 `2 N5 ~
0 K1 M4 E2 I, c S! R
核心方法:
; i6 ^/ M8 b* e# F- p* {$ Q+ E7 ?
热传导
$ O( }: b: M r+ P8 t
有限差分法
8 A% y/ ~! u. I9 ~1 b* `1 m
遍历法
, z' Z4 P% _* T: H& f
( H% Q9 K- n0 a3 B
# {4 H; q4 ^7 a
问题一
( a# N _8 _$ r" }6 |& e
建立焊接区域中心温度变化规律模型,推出焊接区域中心温度与其厚度和PCB 板所走过的时间的关系。查阅相关资料可知,由于自动焊接过程中热量传递复杂,因此对模型进行简化,只考虑一维方向的热量传导,即单侧单方向小温区对PCB 板的热量传导。利用能量守恒定律和 Fourier 热传导定律推出热传导方程,再利用附数据件求出方程中的参数,进而建立了焊接区域中心温度变化规律型,即炉温曲线变化模型。依据建立出的炉温曲线变化模型,根据问题一中所给出的各温区的温度参数T1, T2, T3, T4 及过炉速度v,需要求出过炉曲线,即焊接区中心的温度变化
* _; ]0 ^" R- y } n/ d
4 N* W; b# Q7 k% o' Z2 f
+ C3 m# ~7 o+ p
对于热传导方程的求解,需要先确定热传导方程中的参数—热扩散率,这
) \) m/ z" s* O' P$ o& K. p. y
可以通过附件提供的炉温曲线数据进行参数估计。热传导方程的求解可以利用差分法进行。
7 n/ o. B! F; z( g& S
9 ^+ {2 S k9 f+ B J
. W0 T1 x8 f/ x# R
// lamda的计算的部分代码
& E6 J) d3 T+ o& f$ U
array=zeros(76,length(x1));
! u) [, c7 W+ K( Y- Q
array(1,
=y;
3 k* {' E- Y8 r
array(:,1)=z(:,1);
3 h- M$ L# b5 g. ]$ i- g* T" f* x
for k=1:31
/ `! `- @$ y4 j- _/ D* x) g
for j=1
(1)-1
# E. C6 c- e- k* |
for i=2:75
2 G& |) K; e% {, C' {( x
array(i,j+1)=array(i,j)+u(k)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
' M9 s8 _4 U+ a' B4 I
end
W: O+ V- G& U4 a+ I8 O. D! @
array(76,j+1)=array(74,j+1);
) W$ w7 E0 k, G* j( a5 W4 I
end
3 A7 K2 J9 v! i. M& L8 k5 w3 V
e1=1
(1);
3 d1 \6 G' X" c2 S& D7 o
e2=time(1:5,
;
! o' s7 j% c- g7 h2 t, E% X
[C,ia,ib]=intersect(e1,e2*100);
" }# N# {% O1 b* k( n& x
for i=1:5
# J) E9 z" W2 }: m- p2 Y$ Z8 Q
b(i)=array(75,ia(i));
' ~4 `: |4 ]8 `
end
; z$ a' \! {* r; o: m8 E
for i=1:5
. ] B. p2 @+ z
c(i)=(temperature(i)-b(i))^2;
" D) A* \7 X$ i6 w0 i- I
end
5 O0 s( K! Z% O" n w& | s3 I
rss(k)=sum(c(
);
* U0 ^( \! S5 Z
end
: j8 y6 X* C2 Y! T$ }2 i! P
result=[u;rss];
4 H' v4 A! H4 l# u$ N2 N7 R) P
1
- n, Z7 j. H R2 o6 E2 g4 r% d% Z# q
2
/ t4 y7 K: Z* h$ R2 C6 P9 Y+ v
3
# L/ k" D" N; |$ o. M! A) ~
4
4 n. f& ^. o" u
5
) S; t' W; V) i* v5 [
6
* T t) s5 P4 W$ S* ? L
7
. o! r$ F$ d: G7 B5 M. u9 ]0 h
8
$ L' w2 ?, [8 g- `# P- F5 t1 w
9
+ ?/ `* r% q+ ]" H) `$ z
10
4 ]6 j& d! Y( e+ A9 a
11
' I9 Q; }1 n" m/ P* R' ^
12
1 s5 _+ B, K. V9 g
13
( r8 O& J8 ]3 I
14
% S) w- t9 T, p1 h# Q
15
: `& I/ f# Q& c0 F9 c) _* m2 Z! S
16
5 U8 D8 `' r8 B3 e) s
17
5 K; I% e0 d. J3 ~1 [/ t5 c2 n
18
7 ?) D: ^3 g8 R3 W4 F5 W3 k$ r
19
3 W9 H7 G/ G/ \
20
& m+ W7 S( l8 j+ b5 \: y% S
21
( m6 Q( K$ c+ u0 K% \+ C/ _5 B/ N) K
22
- a. X# h% U1 V& D6 f8 H' j [
23
) ^5 m) H! H# q8 d8 W/ {
有限差分的核心代码:
5 X: v* j( {) s! d' V9 f7 T% N
; C+ t" B6 }+ l9 F0 F3 u5 a
3 y$ N' y C8 `& [
//有限差分的核心代码
& k/ x) k' l$ @. g0 |% m- R' L5 A0 v
array=zeros(76,length(x1));
; W" O& K$ r4 a3 d+ i6 U
array(1,
=y;
: c& G( u" Y4 d0 K
array(:,1)=z(:,1);
% @& ^' L2 N; n7 C
for j=1
(1)
( ]7 A: I4 ]6 q
for i=2:75
* H3 i8 _7 v7 \9 r' w1 F; W. S) i- J
array(i,j+1)=array(i,j)+u(1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
% s3 {6 e/ G6 B6 z- `1 U$ ~
end
- y+ k( J H, G; L4 ^& W8 u- r7 H
array(76,j+1)=array(74,j+1);
H4 @9 n/ e* N x g) l
end
& p I: k* o+ s
z(:,2)=array(:,2143);
; p+ i* ]2 O( h* e. \
for k=1:9
+ m& ]7 R/ w- v( z
for j=L(k)
(k+1)
$ D" d0 L# x$ [
for i=2:75
0 B B) b/ l/ L x2 z
array(i,j+1)=array(i,j)+u(k+1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
$ m) n H6 e* c8 J8 m) g* Z% y
end
# B1 B( Q8 k! r2 I& D
array(76,j+1)=array(74,j+1);
( a2 f% C7 f( d* t1 q
end
9 N3 R. @2 ]. k& L: N8 [
end
- _: w& r1 @/ _3 t; z
array(:,length(array))=[];
, R% q# ]& {+ d+ \5 r5 W) Y
; W0 |% ^9 y+ g* B/ u% f. N4 X
4 N9 x/ E" U0 Z
1
6 k1 ?. D/ \! |& |; t8 M
2
7 N2 ?0 A4 J! N
3
- ]* X$ U! V2 M- Q
4
! v' y8 Z. A" `0 p* H+ y
5
- U. L0 [% p' C2 M( M+ c W7 ]
6
6 n: W* m n- B: Z9 n4 P
7
+ e! [( l* C( A6 l4 j5 M
8
5 j4 ]; M0 P7 R! `. |
9
1 c6 T% b; Z s, y! o
10
6 T, o+ O2 s, p. Q% h. N
11
5 O& L% H* @2 L$ S$ b6 i- v
12
) J0 c( M4 x* @4 |8 G7 u" l1 ?
13
) N0 ?4 [8 O7 |/ S+ {
14
2 f/ D% M0 l: f
15
5 R8 U% p% F& D6 R* V Y1 @
16
1 k. ]/ ?5 h. b0 V; U$ s
17
9 q4 ^) U0 z' m$ Q ]7 z
18
3 n/ C8 n# {# s i: x N A9 g
19
; G% [# a* F9 N% F/ Z
20
& _# d2 b3 C8 ^- x/ g
21
6 L) v7 t) S( A8 W1 m3 e3 r
得模拟数据和真实数据对比得炉温曲线:
, [' c! ~1 r- ]9 ?4 ^' R
5 a( e' V \; ?! o# F: \8 T
8 V6 y6 P T2 P) N0 s( k
) l A4 ]7 Q) |- r: v: j+ }+ u
& V1 G/ W$ h- }; p3 j
问题二
; h, b* n) e2 D5 |" W- u0 N
问题二中,基于问题一中所建立的炉温曲线模型,在四个温度参数给定的条件求取传送带的最大过炉速度为优化问题。此问题可以看做是问题一所建立模型的反问题,即在温度分布
2 c8 m. x) m G" X
已知的条件下,要求通过该分布计算最大过炉速度v。在具体求解该反问题时,可以利用遍历法对过炉速度进行遍历搜索,这样就将反问题转化为了正问题的求解,从而问题一中模型方法都可以继续使用。
& X. F; |9 x0 E0 e' e/ A+ q
; F( p( p* w: J2 _* ^$ V
; c! b) Q2 a' j0 N( P
问题三和问题四
! D( m: o" r4 D' S+ @1 Z; x' B% _
问题三和问题四仍然和问题二类似,也是对过炉曲线提出了不同的要求,进而在这些要求之下确定影响炉温曲线的 5 个参数 T1, T2, T3, T4, v ,求解也可以采用与问题二相同的遍历法进行,但由于此时遍历的变量个数增多,如果遍历步长较小,必然会使得计算量增大,因而必要情况下,可采用分阶段的遍历,即:大范围,大步长,小范围,小步长。需要考虑的就是对于面积和对称性的数学描述,面积可以采用积分的离散化表示,对称性可以采用以最大峰值温度两侧取对称点,使对称点的温度差值尽可能小来实现。
$ s# [4 w" P3 @# x" @9 _" K
# E7 m; C6 F7 {4 ~ c- R! Y
/ B, I! R* m, v5 i; w
答案如下:
2 s8 L: p; U7 ]
5 ]" ]( X9 s& G1 e! m) a q
) Q7 o# Z, `& q) S0 o9 @
注:用以上方法算出的结果均在最优解范围内,详细解读请待下次,困了该sleep了
) `. R1 K9 R. i) `9 C, b% P/ I1 H
————————————————
- X7 z2 a4 Y% L" F& @2 a
版权声明:本文为CSDN博主「盈博简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1 v. {" V" s4 D7 @# ]6 v
原文链接:https://blog.csdn.net/Sandm_Hou/article/details/112726635
H$ o, `( M$ n6 C' y- ?$ b9 }
# \$ U; D0 f7 U
) a# _2 B! i) \' H
作者:
1051373629
时间:
2021-8-9 13:04
谢谢分享!
# g0 Q1 v* X! T$ h# T3 L
作者:
1051373629
时间:
2021-8-9 19:17
谢谢谢谢!
7 ]" t. ~7 I3 Z" g6 q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5