数学建模社区-数学中国
标题:
2020全国大学生数学建模A题思路讲解与核心代码
[打印本页]
作者:
杨利霞
时间:
2021-7-16 16:32
标题:
2020全国大学生数学建模A题思路讲解与核心代码
# g5 _8 o" M5 S9 q, z' j E( _; t4 j' E
2020全国大学生数学建模A题思路讲解与核心代码
; J8 g; K7 }. _. R) j# b
! l( G3 \ K4 E1 u- t7 x
2020全国大学生数学建模A题思路讲解与核心代码
* D+ e2 f& v" q7 _+ a
题目
/ F3 Y. E2 S1 }- W8 a/ ~
核心方法:
3 D5 r0 H) ?$ L& P# {1 h1 X
问题一
A* }' a( K" g6 V! r
问题二
3 n5 i0 h# g* ~- T+ O. j- g
问题三和问题四
+ V* T6 C9 E4 P' q$ X+ E/ s
答案如下:
% Z) H9 T9 {5 c" b3 o
题目
, D, {* r% i2 }/ N2 x$ p
1 Z8 X' Y: s g! r8 n9 M {3 R" W
- t2 Q" b1 E4 h
7 c/ m S% v% u' d7 `
0 W2 Q7 D- T) _3 s% S
) |# Z& C: y! d: f
8 O' r. V" z9 m& t, B6 t
核心方法:
V9 n1 ^! G. i3 |9 \
热传导
1 ^% [( V d2 V) Q2 P# N; q" Z$ l+ D
有限差分法
$ Z/ {" {# Y! a: r: J$ Z
遍历法
8 W) c0 {6 @( g- k1 \
( t. {' B4 E, O7 _/ s; W* |
) X* p* g" r8 _4 A+ m2 B- h1 L; {/ e
问题一
7 A3 `0 X. ]( N. R- ^! C
建立焊接区域中心温度变化规律模型,推出焊接区域中心温度与其厚度和PCB 板所走过的时间的关系。查阅相关资料可知,由于自动焊接过程中热量传递复杂,因此对模型进行简化,只考虑一维方向的热量传导,即单侧单方向小温区对PCB 板的热量传导。利用能量守恒定律和 Fourier 热传导定律推出热传导方程,再利用附数据件求出方程中的参数,进而建立了焊接区域中心温度变化规律型,即炉温曲线变化模型。依据建立出的炉温曲线变化模型,根据问题一中所给出的各温区的温度参数T1, T2, T3, T4 及过炉速度v,需要求出过炉曲线,即焊接区中心的温度变化
# g$ f5 \' g! q! k6 z
% Q& F5 f. C, @5 j
4 R. o0 Y: N2 R6 t3 O1 X
对于热传导方程的求解,需要先确定热传导方程中的参数—热扩散率,这
% y; I5 u! z! a- d3 e' V
可以通过附件提供的炉温曲线数据进行参数估计。热传导方程的求解可以利用差分法进行。
- B+ ~, n; {* J* L" p
, O; ?8 G8 ?; F. ?
4 H! l' E5 I& L9 e5 d# l
// lamda的计算的部分代码
2 A i7 t: G, H( y s8 o# U" l. P
array=zeros(76,length(x1));
( x4 n: W* X3 s# K
array(1,
=y;
. g# b+ A2 v" d+ |& {, A+ z
array(:,1)=z(:,1);
& I) V/ x! d5 R
for k=1:31
" [+ y3 i3 d; k4 c, h9 K
for j=1
(1)-1
) B4 `+ E8 z& \5 E
for i=2:75
: y% W' v+ I, Y9 |
array(i,j+1)=array(i,j)+u(k)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
0 m4 q" a# j, |
end
/ t1 K# g3 `' N, U* A& V
array(76,j+1)=array(74,j+1);
1 z2 o. i! Z% Y- s
end
3 K* _, Q4 x6 c- ~7 X6 X
e1=1
(1);
8 m4 A9 u$ H9 @/ ~
e2=time(1:5,
;
4 P u$ B( n. L; }0 {0 [, Y% `/ G% l
[C,ia,ib]=intersect(e1,e2*100);
5 h% d1 I O* q; [" |% R9 [
for i=1:5
# W9 a- g7 m4 y- B) Z0 |7 p# @
b(i)=array(75,ia(i));
. S) L) k3 k# A0 s9 c% s
end
_8 q8 E+ q7 |1 D/ v
for i=1:5
, K' ~3 q; h( Z; p
c(i)=(temperature(i)-b(i))^2;
6 o0 O% }- J D8 O+ v8 d
end
' A' b9 W5 C1 h- M7 \
rss(k)=sum(c(
);
* ~& f9 `4 K. X/ t
end
1 d/ b( u" ~1 L8 D& [- u" C5 s
result=[u;rss];
7 N9 I O' ^. r; Z
1
+ I4 }0 o- I8 r+ ^6 D
2
$ s4 w! U( _1 l4 V- \, q
3
& ?5 G% A( z* z+ P
4
% h. O W8 H( g( Q3 E B+ J
5
( v8 y1 u7 q0 w; r- L& c4 X# v
6
0 B# N& V) J6 {% w! p; z5 _5 |
7
4 H2 Y: \' x/ u
8
3 C( V% R& G) K Q) t
9
x9 F7 ~7 x7 a- i1 H7 m
10
* r! N3 d Z( _* V
11
6 d- m1 F& N! q6 W8 v
12
2 |/ L4 b/ P4 O6 C2 m. l/ I) Q5 c
13
, E3 L+ _0 Q% W! ^/ S
14
& o5 e% |% [9 y0 s
15
) L$ s% a! v# b' n: p
16
; B7 H1 m C. s8 b
17
! Z) b, x# R- a. T: Y: ~0 p7 j
18
6 C+ W! R6 p/ v
19
G7 b5 B5 D+ B/ q( Q" A3 L1 _6 |
20
( k' n& e9 ]6 C( S% V% v0 I' D0 ]% i
21
, F7 F% C! |2 n2 q8 M
22
3 Q4 f7 S7 q1 `/ d' ~
23
' u- l9 }2 [( ]% b$ p; L6 M
有限差分的核心代码:
% N0 [- }$ o* o' L! \5 Z& f. s
J- [- t3 K. X4 c
6 J; ^, `2 i* l. w/ G
//有限差分的核心代码
; H& b, L% m7 l& X
array=zeros(76,length(x1));
+ k& o$ `) O8 Z( L; l8 n0 B
array(1,
=y;
1 f `/ D$ K8 E, Z9 s
array(:,1)=z(:,1);
5 q( T1 ?& d& v6 C% C, t2 X' N
for j=1
(1)
# a$ |* R( E; _) S
for i=2:75
$ F3 o; r* s0 L5 N# U
array(i,j+1)=array(i,j)+u(1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
' P$ _0 E+ X& E, B& k
end
$ K+ S& Z6 ?9 t) H2 @2 N
array(76,j+1)=array(74,j+1);
& T- L/ L& \) g2 V9 j
end
+ g/ E: w8 X- N6 @3 E* H
z(:,2)=array(:,2143);
2 ]; j8 N, q+ B5 L8 p/ G7 ?# W
for k=1:9
$ O" d# D* t- {. J5 I
for j=L(k)
(k+1)
4 A2 u/ ~2 B- f4 e! Y$ i5 b, L
for i=2:75
! E! ?: ^- p6 N6 B
array(i,j+1)=array(i,j)+u(k+1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
9 i* ~( L1 {. E% F0 y% \8 C
end
$ o0 d6 Q, Z. {+ ~+ U
array(76,j+1)=array(74,j+1);
! ^, _; S: U* K" ?9 Y
end
4 \9 Y4 c% G. J, G! X8 a+ J
end
1 T5 K5 w5 ]# Q
array(:,length(array))=[];
; n8 e" d3 W. D7 G: k& }
0 e; d; _3 T8 H3 b3 U1 ~1 ^
7 a) U8 o( v) ?! R, z& N# G
1
8 ]' v$ ?1 E0 F! ^" f% C
2
4 J* K1 Y. ]# F& l: z- c V
3
! Y j/ ~9 g* ~# O) U# W, c' L
4
/ Q8 k% Z$ g$ X6 K' R& N( o
5
6 W) }6 {# i! w' ?+ V
6
" e7 E7 K5 v% n# t- @
7
) ^7 m8 x4 r9 B* z3 V
8
7 ~: S3 H5 z) J' m- a
9
; i, j/ ^0 B! N9 l8 o/ q& F" O% e
10
- B; ~2 U3 C- C
11
! L3 D4 R4 ^6 S3 [7 o
12
/ d. h Z7 d S6 y9 x7 N5 m9 v4 T- [
13
9 x( J( c: Y% @) y# j; @
14
* Y3 O& Q9 H( L1 e Q" ?9 z
15
6 l) [8 O3 Q j7 Q2 V4 a
16
& r9 m8 d; a0 W9 D$ G
17
" h) X D3 k" G8 M, N
18
3 {; B& g- h' }
19
2 _, h! k5 h W4 x5 h6 T7 I# U
20
2 X% {9 o: t, Q9 C- a
21
& D& A& l0 ^1 N* K0 B& V+ q/ O
得模拟数据和真实数据对比得炉温曲线:
: F! C0 m- W5 n: M+ v+ d* y' ?
$ s4 h& I) f O/ d; f4 [+ v& K
u+ U. E8 V4 L+ ?7 M5 j
" |9 ~8 A7 h& O$ {; I1 P! W& S9 V" r) n
$ _5 f" h2 g7 L& H0 b
问题二
v1 l( y7 K2 x& m; J& }# P
问题二中,基于问题一中所建立的炉温曲线模型,在四个温度参数给定的条件求取传送带的最大过炉速度为优化问题。此问题可以看做是问题一所建立模型的反问题,即在温度分布
+ A6 y) X9 K' H( C$ P" h2 X
已知的条件下,要求通过该分布计算最大过炉速度v。在具体求解该反问题时,可以利用遍历法对过炉速度进行遍历搜索,这样就将反问题转化为了正问题的求解,从而问题一中模型方法都可以继续使用。
$ J' F2 H) a) m& c& q" B
5 }# P1 I' Z4 s K) D
7 _2 k$ o" _0 O+ X6 G4 d
问题三和问题四
; r, g( o$ v& x( G, M& u
问题三和问题四仍然和问题二类似,也是对过炉曲线提出了不同的要求,进而在这些要求之下确定影响炉温曲线的 5 个参数 T1, T2, T3, T4, v ,求解也可以采用与问题二相同的遍历法进行,但由于此时遍历的变量个数增多,如果遍历步长较小,必然会使得计算量增大,因而必要情况下,可采用分阶段的遍历,即:大范围,大步长,小范围,小步长。需要考虑的就是对于面积和对称性的数学描述,面积可以采用积分的离散化表示,对称性可以采用以最大峰值温度两侧取对称点,使对称点的温度差值尽可能小来实现。
$ _+ t- z( n2 W# e
& s |4 M2 K f! V% N3 a
6 f5 S: @9 ]9 @
答案如下:
2 D8 U# f5 O4 L: K, S: P9 K U7 h2 u* T& W
6 |" Q! i2 u% Q2 X* D$ ^# U% G! F
/ b) Y% k3 @6 c5 k% l/ P
注:用以上方法算出的结果均在最优解范围内,详细解读请待下次,困了该sleep了
$ D4 Z6 E5 R7 ~7 T+ L
————————————————
2 M. u5 y* r G5 O6 Y9 _$ c, R
版权声明:本文为CSDN博主「盈博简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# g3 J/ F3 Y2 |4 C: P) ? k
原文链接:https://blog.csdn.net/Sandm_Hou/article/details/112726635
( f. \ W) z' M& _/ b
( p4 M6 `/ L& p& M( R( {
# f: z- q+ j4 W4 W( s0 T
作者:
1051373629
时间:
2021-8-9 13:04
谢谢分享!
7 }& P! M, L. f- T E
作者:
1051373629
时间:
2021-8-9 19:17
谢谢谢谢!
D! ]' W6 T2 Q- f! P0 e7 h
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5