数学建模社区-数学中国
标题:
2020全国大学生数学建模A题思路讲解与核心代码
[打印本页]
作者:
杨利霞
时间:
2021-7-16 16:32
标题:
2020全国大学生数学建模A题思路讲解与核心代码
: } H7 ^- ^) n
2020全国大学生数学建模A题思路讲解与核心代码
$ D& _& v+ q* e) ?6 Q
; G, ]7 j1 @2 K) n8 }
2020全国大学生数学建模A题思路讲解与核心代码
% V' o9 P( o3 G7 H1 \4 x9 [
题目
1 ?8 Q; \" C6 U4 s# r d2 a
核心方法:
! `' O7 O& c5 a2 E6 k" t; G" ]3 `
问题一
, ]5 Y7 o4 r. q5 T
问题二
1 l6 M5 I+ I" N7 _% ~1 L
问题三和问题四
8 |' T2 z5 u4 H* l9 E; l. a8 V" _
答案如下:
% n) ~8 o( V1 I
题目
. a/ U0 @- h, X n& W1 o
9 v l1 F3 T, t; s2 I! P3 z6 k, p
& q4 `9 A" @7 ?
, x' g- k( g' g4 q0 x, k% ]
1 B. w4 k6 Z% m) U
' e5 D2 N9 G1 e. g3 b
: x3 Z% [, C% Q% c9 K; l
核心方法:
, R; ?& W- i" d/ y5 m
热传导
% h- J7 d4 E: Z) v: p
有限差分法
2 J7 T) G( @7 x
遍历法
5 Y1 N' i/ S5 t$ m0 L9 Z. k
9 P/ Y$ `3 |4 l# W
1 p/ u6 M |9 o4 d/ M
问题一
! A* o1 b7 ]1 y4 {3 u6 u
建立焊接区域中心温度变化规律模型,推出焊接区域中心温度与其厚度和PCB 板所走过的时间的关系。查阅相关资料可知,由于自动焊接过程中热量传递复杂,因此对模型进行简化,只考虑一维方向的热量传导,即单侧单方向小温区对PCB 板的热量传导。利用能量守恒定律和 Fourier 热传导定律推出热传导方程,再利用附数据件求出方程中的参数,进而建立了焊接区域中心温度变化规律型,即炉温曲线变化模型。依据建立出的炉温曲线变化模型,根据问题一中所给出的各温区的温度参数T1, T2, T3, T4 及过炉速度v,需要求出过炉曲线,即焊接区中心的温度变化
; ~3 X& f& _$ s. S! N* ^: e
" ~- I N: X( g# }% `& j
( i! r$ i' ~, D
对于热传导方程的求解,需要先确定热传导方程中的参数—热扩散率,这
3 u' T) l3 X$ l- ~' j3 q! @" d
可以通过附件提供的炉温曲线数据进行参数估计。热传导方程的求解可以利用差分法进行。
: u3 Q* _/ {4 t9 T( r2 P* _
4 u' @6 D* W& p- @0 I+ A: |
1 ^; |+ w/ j& i/ h: I
// lamda的计算的部分代码
$ @( C! m. B) E3 [& w" {( x
array=zeros(76,length(x1));
0 U/ H! p5 V n9 p4 w
array(1,
=y;
) u3 f5 |$ A# P7 q% n9 V# {# m/ Z" l _
array(:,1)=z(:,1);
# [4 K& h/ t% b: p( y, T1 J B3 P
for k=1:31
7 I: T* @9 G6 v+ f! F
for j=1
(1)-1
6 K4 R' y+ h, ~# P
for i=2:75
! }' [) D8 @7 c
array(i,j+1)=array(i,j)+u(k)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
i1 i; B# K% y9 O! q3 b
end
7 V$ a/ m- g* v! t2 @
array(76,j+1)=array(74,j+1);
3 ?' S( \! V) ?0 n% O. {
end
5 ~' v5 @9 K( G t$ o
e1=1
(1);
4 G, D% X& y3 O
e2=time(1:5,
;
; ?' h' ]" a3 ] B9 \
[C,ia,ib]=intersect(e1,e2*100);
! g9 F7 O6 R& O7 b; C- m
for i=1:5
6 D+ ]! b E# O; C/ {
b(i)=array(75,ia(i));
7 J2 V' C, m$ z% E7 L
end
& ]/ k4 }# Y2 R9 U2 C @" @
for i=1:5
/ W# c0 l. z1 Y. i
c(i)=(temperature(i)-b(i))^2;
+ f- ?% @, f* b1 U
end
0 K E5 G& n Q3 c; D" q
rss(k)=sum(c(
);
, ]8 ~' a1 D9 e# o' g' u; F% k0 R& x
end
3 o) ?1 n( _5 r a
result=[u;rss];
) o; ~! J( R7 V) r4 f
1
( Z9 { X) A- l& O2 i) y# z
2
: Y0 J& n& x9 `, Y
3
) {9 T/ j3 r, e8 [* a% `7 U2 _4 v
4
7 f2 c8 A( a1 q! h3 B, `4 `
5
3 x( v0 N, v3 b/ m: q9 N. i( ?
6
* `) C3 ~. i# @
7
- j* E( F7 l. v4 ~( _
8
9 [% F' M& b3 f7 k
9
( \8 J% I1 C) }) C+ ^/ d
10
4 l) k) D+ @% W9 c
11
! T5 l( u0 t! C. i, ^ `- V
12
% K4 |6 Z( Y6 l) h6 D
13
0 U8 E1 ?9 j4 t3 n
14
. V' d4 j- a: T8 J/ n8 _
15
1 ?/ m1 |" y- ]6 {. R0 w% u( `% `
16
) o: U" i& Z0 i5 M1 d
17
6 x2 r, J* s5 D* E& r Y
18
) _6 t( \9 @# a; I8 U4 M
19
/ o) W, m8 a1 R' Y" G
20
) Z- `% g# S7 x1 B: @
21
0 P6 }. D* f n6 O6 U9 f: s7 |
22
- V# c9 _/ @6 ^' E# C1 U7 n1 l: u% u
23
2 p9 l# \' G# \. b5 ^6 s) J
有限差分的核心代码:
) u+ Z7 }4 V# g( d' y/ w7 b
7 ? S7 s0 }6 Z! q; w
& ~/ [8 `$ A, b7 j
//有限差分的核心代码
K% U6 Y4 N! A* x3 N% k
array=zeros(76,length(x1));
7 q7 h. ~- g- i: ?/ m c
array(1,
=y;
+ s" V8 X) J3 v. f
array(:,1)=z(:,1);
: R7 q9 b9 E! o' ^* _ d/ b/ C
for j=1
(1)
: x3 B( [( v! t6 s. H
for i=2:75
" v4 u0 p; q8 d
array(i,j+1)=array(i,j)+u(1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
) ^- ~: [) [- F! N, J4 E" k
end
. f5 Q+ M2 j4 X" ]" J
array(76,j+1)=array(74,j+1);
6 _! |+ W7 l" B, @8 x$ p- M! c! [8 a
end
, E0 i- h# Z0 O1 y
z(:,2)=array(:,2143);
2 @* W8 p; Z% L. C% u) r, G9 Q" l5 a4 [
for k=1:9
8 S6 ?7 [; n+ h! g7 u$ {
for j=L(k)
(k+1)
8 m+ j' ], ~" `4 {' j( u2 ]; ^
for i=2:75
- E; d$ Z# Y' A E$ b6 k
array(i,j+1)=array(i,j)+u(k+1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
! s h( E9 C# M6 I
end
0 F1 o) I1 @7 F
array(76,j+1)=array(74,j+1);
% o1 K9 \. P# W. Z2 M# j7 a0 L
end
7 }) p: J5 A, G' n
end
: s3 d" u. |7 S! L. I
array(:,length(array))=[];
+ X, v) f' g9 D$ I! w! S
+ \& H2 c3 B3 ?
1 m5 m: D5 Z) X8 t% P. t
1
' k5 g& o3 z4 U: U0 t$ Y; ?
2
' a& }9 n) R& q+ ~" [3 Z6 ?) x
3
, {! S2 S/ L8 |7 K' }3 y$ O2 @
4
/ l$ {( ?) N& |( c' j8 K8 Z) I5 m
5
* e' `& M: X" y: u
6
9 }! o2 L: w* q# l
7
% s1 U$ O9 l# T" `5 d& Y7 F
8
# m8 P" g0 x- x; |9 S# l Y
9
/ r5 O# L2 c0 a+ q( f! E B
10
" X5 ~# \9 M( z7 }- z$ C( A! R
11
/ c+ ~2 W }. c) X, l e0 }
12
: {3 [) l$ ], w$ L" w% Z* P4 i
13
8 M# R' h. |2 _. }( w1 F$ L$ {8 |7 V3 {
14
, Y2 s: M0 b b$ C( h0 P9 o1 D
15
: f. ~# b; q3 \1 a* f
16
3 U- V0 `0 ]4 a
17
8 F2 c' \5 S# c1 `3 @
18
% l- ?* F$ A. t+ ^ _+ k
19
% p, a5 r4 c) V. S
20
2 s* l7 v! g" K0 p
21
1 i% H0 q6 u1 q
得模拟数据和真实数据对比得炉温曲线:
" a/ m( L4 i1 N) H. Q
* i! ^# q$ X1 z
% H6 m* U' h; F' w) a( Q7 j
5 U0 \% S. [5 h+ N) \" K3 ?1 Y
; k: I& Q* E4 Y' M/ K
问题二
) m0 _8 ]+ \/ }( @. d
问题二中,基于问题一中所建立的炉温曲线模型,在四个温度参数给定的条件求取传送带的最大过炉速度为优化问题。此问题可以看做是问题一所建立模型的反问题,即在温度分布
9 ~7 Z& z& c; d6 ~( E
已知的条件下,要求通过该分布计算最大过炉速度v。在具体求解该反问题时,可以利用遍历法对过炉速度进行遍历搜索,这样就将反问题转化为了正问题的求解,从而问题一中模型方法都可以继续使用。
j! v* T4 d& i8 _/ w# b. `4 c
" I$ G0 x; d/ M- @+ T4 `* J0 F
& ^2 r. f0 P! c* N, ^8 w
问题三和问题四
& e' j' t, `2 i4 Z: g; m9 |8 \0 ?
问题三和问题四仍然和问题二类似,也是对过炉曲线提出了不同的要求,进而在这些要求之下确定影响炉温曲线的 5 个参数 T1, T2, T3, T4, v ,求解也可以采用与问题二相同的遍历法进行,但由于此时遍历的变量个数增多,如果遍历步长较小,必然会使得计算量增大,因而必要情况下,可采用分阶段的遍历,即:大范围,大步长,小范围,小步长。需要考虑的就是对于面积和对称性的数学描述,面积可以采用积分的离散化表示,对称性可以采用以最大峰值温度两侧取对称点,使对称点的温度差值尽可能小来实现。
5 t# Y' G# b- P2 N1 ]1 a
& h7 W. t0 a- g+ v
6 |/ L, Z4 i# n: C4 I0 y' B. k( N
答案如下:
0 n" m( P# O3 o- D6 `- k0 {* P$ e
6 X" s/ V) t) p7 b
1 {$ \) y4 i9 A4 t
注:用以上方法算出的结果均在最优解范围内,详细解读请待下次,困了该sleep了
: T! n( v5 j# P$ b$ x
————————————————
$ d. {9 ~, t3 c6 z% _
版权声明:本文为CSDN博主「盈博简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- @0 |' |( v: n- w" W4 U9 ?/ T
原文链接:https://blog.csdn.net/Sandm_Hou/article/details/112726635
+ j K5 h1 R; }6 R) U, ?6 b1 X
z0 L; B* }( K& t J
7 C T. }. E3 X
作者:
1051373629
时间:
2021-8-9 13:04
谢谢分享!
c: p+ v- O' |3 g
作者:
1051373629
时间:
2021-8-9 19:17
谢谢谢谢!
3 O" P2 u2 Z' B2 K" f# H* Q
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5