数学建模社区-数学中国
标题:
2020全国大学生数学建模A题思路讲解与核心代码
[打印本页]
作者:
杨利霞
时间:
2021-7-16 16:32
标题:
2020全国大学生数学建模A题思路讲解与核心代码
* F, J8 \% z; ~% ]
2020全国大学生数学建模A题思路讲解与核心代码
5 L+ \0 G7 v* c) T8 K
0 R; d2 A& t, L% g0 I+ W8 o0 y
2020全国大学生数学建模A题思路讲解与核心代码
+ F" a0 k+ [& Y1 d1 n: g
题目
; e/ F% V/ x9 \8 [' z
核心方法:
D8 z" c1 h5 e: p; _
问题一
+ ]( P, N% I# Y$ ]
问题二
. u; X8 y/ \2 L9 d$ _# l: V
问题三和问题四
9 q9 T. M# w) x6 V+ G
答案如下:
- R" a6 `* Q; z3 b
题目
, `) R3 b3 ]5 e5 v
- P& T7 N; F4 a3 v
! A$ v% j# p2 Y6 L |
$ s4 V! V9 U. {, [$ |! [- } s% K
: E6 ^, x& U c/ g' X
7 N3 x7 J8 _( c- w1 u* C2 M, X, b% K
* L3 x9 M1 \( \8 b A! Z
核心方法:
" i7 _! W& l$ I- Q/ |% D+ X! L
热传导
: j% \. D/ f5 x* I, Y7 D' N3 R
有限差分法
+ ]/ Q8 w" _5 n n6 R5 i
遍历法
7 W; R. ?6 a2 v* ~" s4 b
( P+ a+ ?2 Q2 Z" S8 M- a# `' j2 e
7 e+ p7 s9 h. I$ G$ ]+ q0 [
问题一
5 } ^$ O9 f- H2 P ]6 q" n3 N; R
建立焊接区域中心温度变化规律模型,推出焊接区域中心温度与其厚度和PCB 板所走过的时间的关系。查阅相关资料可知,由于自动焊接过程中热量传递复杂,因此对模型进行简化,只考虑一维方向的热量传导,即单侧单方向小温区对PCB 板的热量传导。利用能量守恒定律和 Fourier 热传导定律推出热传导方程,再利用附数据件求出方程中的参数,进而建立了焊接区域中心温度变化规律型,即炉温曲线变化模型。依据建立出的炉温曲线变化模型,根据问题一中所给出的各温区的温度参数T1, T2, T3, T4 及过炉速度v,需要求出过炉曲线,即焊接区中心的温度变化
, v5 E# i) n& z. T
2 S! g- Y5 W- q- D6 b
. i+ s. f" ?' p2 D
对于热传导方程的求解,需要先确定热传导方程中的参数—热扩散率,这
' G- O/ a1 y0 i5 \- V# O$ o6 C f
可以通过附件提供的炉温曲线数据进行参数估计。热传导方程的求解可以利用差分法进行。
! M3 x/ C3 y1 f m
3 h; v* C" l$ c2 Z
2 D1 @" k, }+ g) D6 c8 p
// lamda的计算的部分代码
7 r% D4 t A! H8 K9 \ p
array=zeros(76,length(x1));
4 ]; F6 Y! x. r1 ~9 Z$ J
array(1,
=y;
# ^5 K3 h: x# @5 \1 b
array(:,1)=z(:,1);
2 \$ I. i, Z# O
for k=1:31
8 o% ~1 A( A, B
for j=1
(1)-1
$ |' j+ F% z; s M) s8 b
for i=2:75
2 X% f8 _0 A& s8 e/ \
array(i,j+1)=array(i,j)+u(k)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
: t( n0 }7 B6 T5 @$ M# U
end
7 \5 n0 ?! Q2 t( X
array(76,j+1)=array(74,j+1);
4 `7 v0 L/ O! @: I4 X$ Q1 t: S
end
; l5 l( Y8 q9 u" k% Y1 ~, n
e1=1
(1);
" S6 z$ s$ Y& p4 y. S
e2=time(1:5,
;
5 a0 N: g( c2 X# Y
[C,ia,ib]=intersect(e1,e2*100);
# S6 e+ F5 ~1 x" b0 w4 H5 F
for i=1:5
% h) p) y; L; z: ^3 N6 d
b(i)=array(75,ia(i));
2 i- h( l* N8 `( r* c
end
9 Q( z+ e- Q% a
for i=1:5
5 j( v( f) q3 q+ y$ b7 g; E& r8 O- d
c(i)=(temperature(i)-b(i))^2;
2 ^. l+ N3 c! M
end
2 b8 p7 |+ E7 Q: q$ {! ~$ ~
rss(k)=sum(c(
);
) _+ b4 ^5 f: A; H% q
end
; S) A' b3 f: v @
result=[u;rss];
, _5 h1 K& y" H8 J/ H. }
1
1 @ _ ]$ P- M1 Y. S$ T
2
8 J) U( I8 ]/ e5 m' E2 g# \
3
8 n1 T- s1 S$ k' N/ b. c- |
4
3 H0 l6 _# P, A* Q
5
* i4 {8 E. o; ^. C
6
) D! R& i0 H$ `
7
" L5 G Z+ J% m( F% m. Y) T
8
* y% {2 z0 w y
9
m! E1 P7 A( T: ]! }
10
$ L& v# \ m; _# i
11
, Y- \- \5 I4 m6 i# j7 H
12
; a* ~, k& ?7 Z( p. V
13
. I/ L, j& A& n7 C& t5 U$ A: ?
14
- a; ^. M7 S, |. r7 G% t
15
4 U7 {( w; }5 i7 i2 c
16
* w5 a/ a1 H# H1 f! i/ u
17
+ Y6 z0 h' k0 ~5 h# @
18
% ~1 A. b0 U7 A* I: {/ p; K
19
7 A( T; g4 |6 U0 N/ k$ U2 ? r
20
9 x7 }, x3 r) C- y8 `9 ?
21
% j) X8 T& F/ H% h6 q% d* m
22
) B! q7 O' Y! I4 k
23
) b3 o* g# P1 V3 G, W
有限差分的核心代码:
. i8 w; s% N' [1 ?1 z; n' V
4 ~& k, y( {3 G: w5 O
& p4 f( f6 J4 H( z7 T5 M
//有限差分的核心代码
- p# a2 C( x! `# c# G
array=zeros(76,length(x1));
0 F/ V( O) M, D1 v
array(1,
=y;
/ l2 H, a( a' v9 A) f$ Z2 [0 c2 u7 {
array(:,1)=z(:,1);
* f3 O2 B8 K4 S1 A* e% U# j
for j=1
(1)
' S. |9 t" @ Y! x
for i=2:75
. [/ ?# k9 `2 ~# L" F6 \) b$ n. H
array(i,j+1)=array(i,j)+u(1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
1 w* L; L+ D4 E6 `3 L
end
+ D6 E2 y" j1 z( u: b
array(76,j+1)=array(74,j+1);
8 Z% D4 Y. K9 ]: W* M
end
+ H/ x& h/ @* I
z(:,2)=array(:,2143);
4 T) f3 }& E! j6 A1 h. o# @
for k=1:9
9 M& F6 J; w6 e# y' L: H
for j=L(k)
(k+1)
3 E' _0 o0 a2 K
for i=2:75
5 L, F" |& e' \/ A1 C/ n9 v
array(i,j+1)=array(i,j)+u(k+1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
t9 |8 q) b: N% u7 [
end
: \7 l. b4 }! k
array(76,j+1)=array(74,j+1);
# Z, P; C. V4 _& e( V& d! v
end
- \# U, R% x* b9 r- m/ n1 ]
end
4 |/ S1 j) C- t& Z0 t2 T
array(:,length(array))=[];
1 S2 j1 s2 h* p- ^5 J5 t
$ Y, w4 ~! D& F3 U2 }
( m$ r. j3 E3 o# }
1
$ Y3 L7 [% C, }: E5 n
2
# I6 t7 k. K; K' P' c: q7 p
3
9 V* U% f: x; D0 `8 X
4
# _/ E% n4 E9 D8 P$ O, n
5
C+ Q1 A6 U \0 [
6
6 j( y& r0 a% j# y* @; c
7
3 V7 D3 f) W8 k) W
8
: b2 J$ c! k7 V) K7 t1 @
9
7 Z) j* W: ]) w
10
, b {; Z* L! g$ L, V& r+ a
11
( ?! \& i" ]) ?4 a R9 v) R
12
, h& p. Q+ R ]; O$ y) J
13
$ k ]2 w$ |! H M' F& T
14
* |1 C0 f0 {. ?/ h
15
8 m- o: ]* z% m5 W
16
* l. f+ b; q5 i8 X) f2 F
17
# J6 `4 I1 |5 C
18
1 G8 m& }6 C4 A2 j E" ?
19
. {) Y. o$ r9 D
20
' C2 U/ d& [" K8 ^
21
$ J W- H3 ?9 r" d* g9 n
得模拟数据和真实数据对比得炉温曲线:
8 q7 |) O" e. B
; G e: Z; p5 d: m, b, C4 ?
+ v: x7 D9 W5 \- U$ L3 B9 K* f
0 \5 v8 S* w+ J+ a, y
6 I: h0 o$ W( i9 H \: A3 a
问题二
1 }$ E$ r+ H5 J- w# J5 ^# u
问题二中,基于问题一中所建立的炉温曲线模型,在四个温度参数给定的条件求取传送带的最大过炉速度为优化问题。此问题可以看做是问题一所建立模型的反问题,即在温度分布
9 \9 P; c+ r. q/ {0 w1 j2 Y
已知的条件下,要求通过该分布计算最大过炉速度v。在具体求解该反问题时,可以利用遍历法对过炉速度进行遍历搜索,这样就将反问题转化为了正问题的求解,从而问题一中模型方法都可以继续使用。
3 r( ^/ f3 s1 M# m! {
0 l; y2 Q. g) K$ F1 m9 f" M% o
2 [+ i$ e1 e5 Z& \/ p
问题三和问题四
% u; u5 A# J7 m9 b3 }& G
问题三和问题四仍然和问题二类似,也是对过炉曲线提出了不同的要求,进而在这些要求之下确定影响炉温曲线的 5 个参数 T1, T2, T3, T4, v ,求解也可以采用与问题二相同的遍历法进行,但由于此时遍历的变量个数增多,如果遍历步长较小,必然会使得计算量增大,因而必要情况下,可采用分阶段的遍历,即:大范围,大步长,小范围,小步长。需要考虑的就是对于面积和对称性的数学描述,面积可以采用积分的离散化表示,对称性可以采用以最大峰值温度两侧取对称点,使对称点的温度差值尽可能小来实现。
% ?2 X1 z: u3 h A
& j; A' G5 g. I; k' s& K( a# Q
/ C p$ d% L' }
答案如下:
; \4 w5 z) W- U# p5 T7 x+ u
* a6 }8 F' x; F4 o5 L
% ^4 U+ ~8 b! D
注:用以上方法算出的结果均在最优解范围内,详细解读请待下次,困了该sleep了
2 z) g7 L; s6 u- X5 }( X w
————————————————
5 h: T8 ^8 ~+ N2 \ G# z; K5 S
版权声明:本文为CSDN博主「盈博简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
4 x9 C' B$ p0 |3 [& {( p
原文链接:https://blog.csdn.net/Sandm_Hou/article/details/112726635
5 y% t1 s+ Z# J$ B: A8 f
( w5 D- l$ X. S
6 h$ c4 p( v& u
作者:
1051373629
时间:
2021-8-9 13:04
谢谢分享!
; g( h- a, r) L! Z3 y. s/ Q3 N
作者:
1051373629
时间:
2021-8-9 19:17
谢谢谢谢!
' y8 L. e+ R. _; S7 B( i# Q4 Z
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5