数学建模社区-数学中国

标题: 2020全国大学生数学建模A题思路讲解与核心代码 [打印本页]

作者: 杨利霞    时间: 2021-7-16 16:32
标题: 2020全国大学生数学建模A题思路讲解与核心代码

1 `5 y( p! M& k4 x+ R2 V2020全国大学生数学建模A题思路讲解与核心代码
% ]' J- K) u' Z9 F
" F# @  J8 K* R; ^2020全国大学生数学建模A题思路讲解与核心代码4 L$ I( {8 t; G7 g4 n7 o
题目
, u, T3 c4 M0 L7 [$ S核心方法:4 S! q4 r7 g  V* u5 G: M
问题一
& Y0 f; X7 C" _8 p/ S2 k问题二
4 F! ?; ]2 p, A. W9 @, S问题三和问题四5 s9 Y, }, |1 y& [
答案如下:4 f' W' j2 e/ {! h7 c) S
题目
% {! U9 l# l% X- a, `" e
5 v1 s2 L4 D; [: L, d5 J9 C: s9 j

% N0 z9 K& T, j7 }% n. [
) T' e6 x7 o: R6 O! Q- u
6 V6 Y* W6 j$ y, H" _  e# @. A6 E
# ]/ J: _$ A+ Y7 l2 ~6 S: b* l
1 l4 E% f& }, L' s( j
核心方法:
, {3 x; H+ u' S- w热传导
7 k) Z' g3 F% T, m, n有限差分法
4 H; }0 r6 |! a5 `+ {遍历法# O+ D2 `, q' W  K% t$ _6 x" S6 `

  }: E2 t9 x$ {7 R  r. z

# D7 l' P: n8 Y& V0 T问题一' Q3 e4 M% i, g
建立焊接区域中心温度变化规律模型,推出焊接区域中心温度与其厚度和PCB 板所走过的时间的关系。查阅相关资料可知,由于自动焊接过程中热量传递复杂,因此对模型进行简化,只考虑一维方向的热量传导,即单侧单方向小温区对PCB 板的热量传导。利用能量守恒定律和 Fourier 热传导定律推出热传导方程,再利用附数据件求出方程中的参数,进而建立了焊接区域中心温度变化规律型,即炉温曲线变化模型。依据建立出的炉温曲线变化模型,根据问题一中所给出的各温区的温度参数T1, T2, T3, T4 及过炉速度v,需要求出过炉曲线,即焊接区中心的温度变化
/ a+ r9 `6 M4 @- }
# m( {+ ?: C% D7 h
% ]( p3 ~" p1 C) ~: D: `! o/ `) d
对于热传导方程的求解,需要先确定热传导方程中的参数—热扩散率,这
$ W' y3 ^8 E9 j* W可以通过附件提供的炉温曲线数据进行参数估计。热传导方程的求解可以利用差分法进行。
% K( I6 n  p+ G* C5 P! J4 _) P- P  l, A) G2 t3 e# D  @# K
1 p6 o! q7 B( E! r+ h
// lamda的计算的部分代码
0 b7 I3 O* m$ Q8 I$ Y1 S+ harray=zeros(76,length(x1));2 s3 B$ o+ Y0 V  }
array(1,=y;
3 I) l: y/ i# p8 v/ }array(:,1)=z(:,1);
! u1 m8 j* x  F- j* |for k=1:31
# A: K! W6 S2 U3 s  P+ f    for j=1(1)-1
% z/ N0 s1 q% {  G* U. E        for i=2:75
" T0 g1 V+ I% P2 D. P5 k            array(i,j+1)=array(i,j)+u(k)*(array(i-1,j)-2*array(i,j)+array(i+1,j));2 d& |# R) N$ ?
        end
+ p& u9 a; F$ G# g6 g        array(76,j+1)=array(74,j+1);
! ]: {; H9 c. [! q/ W    end6 v+ y% K( N- _$ \4 K( u1 m
    e1=1(1);
- N& W  Q6 g& d    e2=time(1:5,;
3 ]. T+ w4 Z' Y' X* @    [C,ia,ib]=intersect(e1,e2*100);% x7 Y2 ]+ S) O
    for i=1:5
( @9 U- N* s; g1 ?8 w        b(i)=array(75,ia(i));9 y2 \* [+ A  Y0 x3 l% ]6 {8 I/ U' Q
    end
/ Q! X4 Q; s$ W* V    for i=1:5
" e0 S( m8 y3 j        c(i)=(temperature(i)-b(i))^2;
8 [) b# ~  v+ N  e! g5 v% k+ v    end4 \) \% e2 L$ o7 _: b- |
    rss(k)=sum(c();; c, w& X; |9 R: K4 u' R; X
end
$ M! B" }8 V5 \/ V4 Z% lresult=[u;rss];
1 R$ [# W" h9 b* \' z5 K4 w2 X1: A+ \8 |+ _8 i' [) C+ h
21 v$ d6 \! c4 ]6 L! T7 U9 y+ R
3
9 G% O0 i- D3 l- c0 [6 Z0 N4 m3 h4
6 L0 {8 a! O& P" ^$ T5
" v. u+ ]5 [% `1 @; S5 n4 h6
, Z3 s6 o5 d9 u! C5 z% D7$ ?, f/ n* o" I
8
/ k0 H4 B$ t; }) |! c& I- D9
6 e5 l  P+ ?: `/ P% l2 U4 u10
) U& g2 b! ]% {) m* e9 _- q11
' l/ C$ u0 h) S, ~6 J1 o1 S12+ g( ]2 n5 g+ O
13
: \" }+ b4 p! |9 [14
; @+ m1 `) H  _7 @9 N; u: b. _0 [15
2 x  D$ a( g6 W2 {, y( j/ ?16
; T- G" K, a' V3 ]% C  a* w17
: T. w& Q3 }  D9 l9 r18
& F& b7 u( L2 d) Z7 d196 C" Z. t( R- m- `+ b8 c" ]
20
  c; J: b3 p$ [5 |$ b" G- \9 p21
0 V; l. T; J- E$ G0 }, w22" h7 o! T; M8 T7 q. h" X) F7 q
23; P* e% o- M# r. }* ~
有限差分的核心代码:( l) A9 y$ ^# f2 G! Q* T
: s" j, V' q3 u1 b6 e- D! }

/ R$ j+ n) H3 {//有限差分的核心代码# P" M7 F1 o2 ?
array=zeros(76,length(x1));+ p7 W/ t+ X. V
array(1,=y;
7 P6 ^9 r' o8 Barray(:,1)=z(:,1);
& |$ f8 _9 `# ]+ s: y4 zfor j=1(1)1 ^1 ^5 L* x- z- G( i9 Q* ^
    for i=2:756 K9 v0 b" N, L3 O
        array(i,j+1)=array(i,j)+u(1)*(array(i-1,j)-2*array(i,j)+array(i+1,j)); 5 H3 P( h. B9 N5 Q3 E+ @0 [# v
    end9 T: J" _- b3 B5 r9 D3 X  u
        array(76,j+1)=array(74,j+1);% p0 p* M7 j7 B) G: [
end. D* `9 T9 {$ h' Q
z(:,2)=array(:,2143);$ \. K4 k- m2 G' X# ~- M: o" _
for k=1:96 I0 D: D/ [$ X2 Y$ V, p3 o
    for j=L(k)(k+1)
4 S2 X( ~9 K$ [" M        for i=2:75/ p; ^. `" h* Q) g9 H% n
            array(i,j+1)=array(i,j)+u(k+1)*(array(i-1,j)-2*array(i,j)+array(i+1,j));
6 ~. H# x2 V& y- I4 H$ C  k        end
! O0 u- |. d, {0 q$ F            array(76,j+1)=array(74,j+1);9 B& O& x9 X( O' g
    end  c" L' B* J6 ^+ P
end
' D* {: x* c& u* sarray(:,length(array))=[];
. F% G# ]1 Q- g. m
# s/ f* g5 x4 {

) u; S; T- I" F- e2 G# o12 {+ n+ x5 k" y7 O! a- ?, J$ L3 ]% K5 s
26 }, |& y: D. i! K- q# h
3/ ^# C& z8 {0 v. w. B
4% u7 a, a5 D8 D4 C
5
- N! Q5 Y0 l! c67 Q- D( ^4 j+ d3 R5 E" F
7
  v! z+ E6 _; b% U- \6 M+ o8
, l# d; i0 |( R1 o/ y& `2 r9 [9
2 N/ v: ^& c, F( ]4 W10
5 P' M5 Y8 `# }3 z% A11
' l: v4 y3 ]0 n3 T* B: i12
+ J/ `8 S( I. n$ ^1 g/ Y1 ^& t1 W  L139 W: e7 e* p; }" L% J" i
14
# n3 C% K+ `( o15$ k  m+ O7 Z! t4 d3 L
16; S4 t# P7 M6 c
17
% ^( F$ ~! H2 d; J5 B* w18. m* b+ L1 n; e2 P$ N. {3 N7 O
19* p6 C+ f( j) [' t
20
1 j# e0 D, F3 B, A$ Y21
7 |' T7 ^3 _; d8 Q得模拟数据和真实数据对比得炉温曲线:
) v4 g+ {6 _4 J. p1 l$ `' K) X/ _0 V, J9 ^/ a7 @6 u2 t' j1 c  z

: I$ B) N- V0 x1 \2 B/ e1 g) i/ E% T$ N- C5 A  c, ~- m
- v$ q1 z/ R% Q% `1 k% w% j% {( w
问题二
# }/ I9 g( z# b9 I问题二中,基于问题一中所建立的炉温曲线模型,在四个温度参数给定的条件求取传送带的最大过炉速度为优化问题。此问题可以看做是问题一所建立模型的反问题,即在温度分布$ C1 `. Q& p% ]3 i# h
已知的条件下,要求通过该分布计算最大过炉速度v。在具体求解该反问题时,可以利用遍历法对过炉速度进行遍历搜索,这样就将反问题转化为了正问题的求解,从而问题一中模型方法都可以继续使用。% y; N, Y: h5 ]: v8 O  y5 {

) W$ Z  Y' Z- H5 |, {5 [
0 Z: E; v2 o* N0 W- }/ c; Z/ Q
问题三和问题四
9 i/ H6 L- z* w. e+ H7 B问题三和问题四仍然和问题二类似,也是对过炉曲线提出了不同的要求,进而在这些要求之下确定影响炉温曲线的 5 个参数 T1, T2, T3, T4, v ,求解也可以采用与问题二相同的遍历法进行,但由于此时遍历的变量个数增多,如果遍历步长较小,必然会使得计算量增大,因而必要情况下,可采用分阶段的遍历,即:大范围,大步长,小范围,小步长。需要考虑的就是对于面积和对称性的数学描述,面积可以采用积分的离散化表示,对称性可以采用以最大峰值温度两侧取对称点,使对称点的温度差值尽可能小来实现。
8 X# M- l! h6 H/ o2 L& @/ z. S
. q1 e+ H4 g& i3 w+ h) C" \5 L5 E9 z

8 J% z) L; y1 d4 g- ~答案如下:2 ~5 L; C* T% m* A, Y( p8 M. L
/ w  w- B* f3 [4 q

7 m, I. V# Y6 P. J- b& b7 Y注:用以上方法算出的结果均在最优解范围内,详细解读请待下次,困了该sleep了+ V; }8 K9 }, o
————————————————
: e; L  o$ g% U版权声明:本文为CSDN博主「盈博简」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
3 @& j1 Z9 y. f7 j原文链接:https://blog.csdn.net/Sandm_Hou/article/details/112726635
: `9 s0 k+ p7 E" W4 I0 b! z5 \6 x4 M* Z9 F
* d" T, K: S4 P+ }

作者: 1051373629    时间: 2021-8-9 13:04
谢谢分享!5 ^) z! E1 ~) g0 j

作者: 1051373629    时间: 2021-8-9 19:17
谢谢谢谢!
8 ?! s! n4 l; ^, v




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5