数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
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; S
3. **评估函数值**:
: 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: T
1. **初始化**:
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) [' }" O
2. **计算分割点**:
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: w
4. **缩小区间**:
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) y
6 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 j
9 {" 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
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5