数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-9-27 17:17
标题: 黄金分割法求一维函数的极值
### 黄金分割法的基本概念
5 M+ i4 k: j) M! s2 ]9 G
$ A) o4 |+ ?# d5 v4 ?黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。" c5 x. a1 g: H5 O7 t: G: A4 L  S
$ V! ~" @* z3 a3 n* T& ^$ [2 B" M# q! e
#### 黄金分割比: [- c9 ^" X& E1 p0 ~/ B% W

/ u) k4 [  F# A3 y黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。* w, d7 g1 X2 [5 G7 ^1 j. M8 x

+ h! p9 S$ D* Q, N### 实施步骤& w  R" K, y  u+ n$ z% Q* D. H3 w9 B
! h% o+ h' I4 W$ x7 b4 ~
1. **初始化区间**:$ @$ F; q5 P: g4 z5 J  d
   选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。  G/ [* Q8 o2 Y( r$ w% k, g8 t- A
& {" F) F1 X+ F
2. **计算分割点**:7 J5 R/ l( w5 d' D2 w7 @
   计算两个点 \(x_1\) 和 \(x_2\):) u0 |2 Q$ ^# Y, Z& N4 |& e  y3 s
   - \( x_1 = b - \phi \cdot (b - a) \)
+ D4 \4 [! K9 C   - \( x_2 = a + \phi \cdot (b - a) \)8 b- q- |& S- j, t, B1 Y! z0 G

: m; w% h2 |- e" d0 |# z+ W$ a   这些点按照黄金分割比例将整个区间分为两部分。* j4 C' Y5 h. O+ E# _1 ~

, [0 s5 ~: l; b% s& g1 j; g; S3. **评估函数值**:
: P9 b- D* P6 J3 u+ V   计算这两个分割点的函数值:
' z. _2 M# i+ ?8 T# t   - \( f_1 = f(x_1) \)# K5 s4 L2 q( U) {
   - \( f_2 = f(x_2) \)1 B5 {9 K/ R2 W+ [- }
# T, o4 Z2 F: k7 q
4. **缩小区间**:- T, K% b- @- Q8 W
   根据函数值的比较来决定缩小哪个部分的区间:5 K2 M+ e4 I; t/ n  D
   - 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。% x; ]( X5 u1 O& Q$ V
   - 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
0 e( @7 T, i2 N- ~: R: w4 ?. b- v4 C2 l# |8 b4 S
5. **迭代**:: J9 S6 N% X* c
   重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
- z# j2 I4 g" E$ {
# s7 o' |4 T/ u1 v  [6. **输出结果**:
( X; J# K  O9 ^' e9 x: A   最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。: D& M4 t3 J. \# c6 C$ C3 {

& V9 Q3 `% u1 K& G) J### 具体示例
  V# r6 Q4 M1 {. {, l' f
% c  W; g6 t# \# c4 t8 ~假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:, x* h- b2 z1 ^- e7 S2 r! Q

$ e( }5 B$ X6 J  x5 c: T1. **初始化**:  c' K) S$ O# ^; F7 v0 u# I
   - 区间 \([0, 5]\)' W( q% m% f( l* ?7 G
   - 容忍度 \(tol = 1 \times 10^{-5}\)' Q' Q7 z+ ]2 ~' D/ l6 g4 g7 s% M

2 ?& }5 U) [' }" O2. **计算分割点**:9 V% z+ M: }1 h9 k+ u
   - 计算 \(x_1\) 和 \(x_2\)
* W5 \. j% ^5 _& i: S, \: n' u, c2 A: n$ t+ k  C/ O. h/ A  m
3. **评估函数值**:$ g: w4 ^6 \* x0 m. X: V
   - 计算 \(f(x_1)\) 和 \(f(x_2)\)
- j3 s4 l9 O5 f) f. f: K' p
0 \* @& K6 ^, r  b# z: w4. **缩小区间**:5 q3 }1 y' N" Y3 Z0 c
   - 根据比较结果更新 \(a\) 和 \(b\)
8 O8 L5 t5 n3 S+ i. h+ V0 {" S& I) G5 a* ?, V
5. **迭代**:
( W. r: j4 a( e   - 循环直到 \(b - a < tol\)" A  i: w6 L) k; c& K
' Q! r6 i4 F2 |/ X
6. **输出**:# B- l+ ~5 G* v  b$ a- _4 f
   - 找到极小值点和最小值。7 h4 Q5 U4 R. C# E& v5 R( C

. H- E% v* r! G3 Y- Q- i### 优势与局限4 C3 L# X( _0 s  V
8 Z% K: D: Y; U! {
**优势**:
* G( t6 x0 A, G1 I0 U- W3 }  r- 收敛速度较快,特别适合于平滑函数。9 |$ C! P. G" r* `0 g
- 简单易实施,对于不需要求导的函数也有效。
; `) v% |0 U: x# h, Q9 L" c( c; r) y6 F% S, u" i! o1 @
**局限**:% X5 _6 b' q+ |& R! u
- 只能用于一维问题,对于多维问题不适用。: L! u( L3 s) L
- 在函数已有许多极值的情况下可能找不到全局极值。
7 N- h2 ]3 H, M4 T) c$ F9 j9 {" U# w) [2 _+ ~+ i7 u+ N8 E
### 结论
0 I/ Q, u& m6 Y/ n# `! E
, K0 z5 x1 o3 ~* H黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
7 K" K. l& B2 S! s0 v
* C6 M0 o# a% I/ n! K9 S+ b
* j& r% T$ h2 ~0 Z" Y9 t$ S( A+ ~  y: A" `: M

minHJ.m

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

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






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