数学建模社区-数学中国

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

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

: }  H7 ^- ^) n2020全国大学生数学建模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    end0 K  E5 G& n  Q3 c; D" q
    rss(k)=sum(c();
, ]8 ~' a1 D9 e# o' g' u; F% k0 R& xend3 o) ?1 n( _5 r  a
result=[u;rss];) o; ~! J( R7 V) r4 f
1
( Z9 {  X) A- l& O2 i) y# z2
: Y0 J& n& x9 `, Y3) {9 T/ j3 r, e8 [* a% `7 U2 _4 v
47 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 ~( _89 [% F' M& b3 f7 k
9( \8 J% I1 C) }) C+ ^/ d
10
4 l) k) D+ @% W9 c11
! T5 l( u0 t! C. i, ^  `- V12% K4 |6 Z( Y6 l) h6 D
130 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
176 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: @210 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% karray=zeros(76,length(x1));
7 q7 h. ~- g- i: ?/ m  carray(1,=y;+ s" V8 X) J3 v. f
array(:,1)=z(:,1);
: R7 q9 b9 E! o' ^* _  d/ b/ Cfor 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 yz(:,2)=array(:,2143);2 @* W8 p; Z% L. C% u) r, G9 Q" l5 a4 [
for k=1:98 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        end0 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' nend: 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 ?) x3
, {! S2 S/ L8 |7 K' }3 y$ O2 @4
/ l$ {( ?) N& |( c' j8 K8 Z) I5 m5* e' `& M: X" y: u
69 }! o2 L: w* q# l
7
% s1 U$ O9 l# T" `5 d& Y7 F8
# m8 P" g0 x- x; |9 S# l  Y9
/ r5 O# L2 c0 a+ q( f! E  B10
" X5 ~# \9 M( z7 }- z$ C( A! R11/ 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 D15
: f. ~# b; q3 \1 a* f163 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. S20
2 s* l7 v! g" K0 p211 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  J7 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