数学建模社区-数学中国

标题: 黄金分割法求一维函数的极值 [打印本页]

作者: 2744557306    时间: 2024-9-27 17:17
标题: 黄金分割法求一维函数的极值
### 黄金分割法的基本概念
8 r& m1 n( W7 i" B; V: I+ Q$ }% Q( ?  N1 K" t( @0 E
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。/ t3 R+ W2 }4 j# X7 _. c8 Z4 a
: J) b* s# i( o
#### 黄金分割比
7 d. P) c) H5 n4 P
4 ^2 Q% ^5 J8 X. i& F2 Y黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。3 K& ~; U/ }# ~7 m+ W0 E( Q
/ Q8 d2 P8 v2 o, F* b
### 实施步骤3 t! `! h- B4 m8 V; w3 I3 }0 W5 _
+ X7 Q6 h4 o; T
1. **初始化区间**:  U$ R0 |4 T- q) i; ?  @3 Z( k
   选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。( W; n5 j8 Z) e, c& ?( A

7 c) X+ q  B; D- A" e2. **计算分割点**:
/ M1 _/ {# a# d! w( n- I   计算两个点 \(x_1\) 和 \(x_2\):
& f. S3 T4 w& z" l   - \( x_1 = b - \phi \cdot (b - a) \)* B' T2 h6 {2 J9 L, m2 W& f% f
   - \( x_2 = a + \phi \cdot (b - a) \)
. V& v8 i  N, Z3 x0 e: ^8 G! v0 R9 Q( ~7 a1 C" F
   这些点按照黄金分割比例将整个区间分为两部分。( V2 F6 ^. ]; ]5 i6 G: v# I4 a
5 ^9 i7 T& Q8 K1 O, {! c
3. **评估函数值**:
2 ]' m# `3 \1 r   计算这两个分割点的函数值:9 G/ R9 j' h  Y1 z  N
   - \( f_1 = f(x_1) \)+ ]+ H1 [% R& \: z5 U( r2 t( @
   - \( f_2 = f(x_2) \)9 Y: w& i- T& r* v; I! F/ d

! F1 _, _! ], d% P/ _. X4 Q$ m9 o4. **缩小区间**:  @" d" Y8 M5 P6 P& |! o8 C
   根据函数值的比较来决定缩小哪个部分的区间:
* A: i2 d) C- |/ C4 K( K   - 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
- c" {" C( J7 P& P; Q4 F( |   - 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
' o3 J' E- q/ E; N" ~2 C' C  l+ u6 w* f, i" x6 t0 n
5. **迭代**:, N! [; s! o8 T5 L* J0 c
   重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。& w6 y5 i8 d3 c4 u
8 k7 Q1 h( V  b/ y8 N% T2 H
6. **输出结果**:( B; `! A" d* z5 k* t
   最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
* t1 [+ P! Y/ W# ]
- C: d% U# h% ?& V7 b### 具体示例
& [( l+ z! d' b9 k0 n+ U4 e5 D; l% l; M8 R4 L$ R/ i5 H* ^
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
  S- Z, }2 T. W2 F
1 E" I  F1 E( V, a. Y- U& o. I1. **初始化**:2 C8 [( q: f. H' W! A0 G- L
   - 区间 \([0, 5]\)4 W% m6 X4 F( n
   - 容忍度 \(tol = 1 \times 10^{-5}\)( F1 O% O: m9 C

: i; ~- o: @4 m5 R& ~; n2. **计算分割点**:
9 u! Z/ Y8 O, x$ a$ ~! b# T   - 计算 \(x_1\) 和 \(x_2\)
5 r  `% ~6 B' N* Q
) H4 c& V2 h# W; y" r8 _* I6 \+ Q3. **评估函数值**:
  I  b4 ~0 x2 o2 y3 y) ~6 ^6 f0 D   - 计算 \(f(x_1)\) 和 \(f(x_2)\)
& D1 G/ a, _' V+ o3 F
* v, ~" o. r6 I# ~' R. i2 I4. **缩小区间**:
; {) M' t( l( H1 I& ]7 X   - 根据比较结果更新 \(a\) 和 \(b\)
% \. w+ z3 r* `  D4 P9 U& s7 c7 a- @0 Q9 ~. o8 W/ b
5. **迭代**:
- O" N' ~+ x6 b9 [$ I. j" F" }   - 循环直到 \(b - a < tol\). e9 s( z- N. U8 }1 H1 w

* U, k* M1 Z+ v$ Z$ f6. **输出**:
5 C, v. {' Y* F0 E7 S3 d   - 找到极小值点和最小值。4 F4 n) B! u8 e& b' _: A3 `
* @, ]- o: ]8 R
### 优势与局限. A( }, y: S* b  z
# s5 n& T  a& A. E: U8 C
**优势**:
4 N1 G! F5 j4 r$ L& k% Q- 收敛速度较快,特别适合于平滑函数。
" Q% P' b; W' Q+ U- 简单易实施,对于不需要求导的函数也有效。
2 X0 c) V  x, r4 O. C6 w: b- r9 Z9 C4 x/ m
**局限**:! M" x# W: S) u$ x. r& F
- 只能用于一维问题,对于多维问题不适用。- q: p+ [# ^9 ?0 e, K; I
- 在函数已有许多极值的情况下可能找不到全局极值。
. L' Y( U  x/ E+ @
6 i; `( }# L5 |### 结论
" k3 G& N  X8 B" _9 F
& d0 V5 L4 r' `) u4 i黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。9 e) B- z5 w& x6 s
; ?" x' V! m, a( L

$ C1 U) |( z# M- Q! l
9 I$ e+ |" i" W( `0 X4 I

minHJ.m

841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]






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