数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-27 17:17
标题:
黄金分割法求一维函数的极值
### 黄金分割法的基本概念
& U" n. x0 k- V' ?0 m+ R4 r+ \0 v, O
5 O' t: h1 l" S
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
! G' `! ` I! {
7 n0 E$ ~( `+ u) ~
#### 黄金分割比
& x1 n4 O; o( x' T# m. h
2 m/ @, X1 _1 q Z
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
* q( R: _; m q; {( @# w
& a6 m2 m8 ~% w3 ]. [
### 实施步骤
8 x; N6 c1 t4 b5 f, w" y
, b! F1 ]9 K: @5 j( B, \
1. **初始化区间**:
4 f+ T1 R9 z: S; ~* U) a9 o) T
选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
; l" v% X% s! ~+ }7 t
1 ~: i( b$ B9 Q! \
2. **计算分割点**:
* i: `% D- z* x+ H6 ~& T* k- Y
计算两个点 \(x_1\) 和 \(x_2\):
, M6 C6 t! D$ Y6 E% D
- \( x_1 = b - \phi \cdot (b - a) \)
% t- k! b" d8 v0 O2 a
- \( x_2 = a + \phi \cdot (b - a) \)
* A" K$ G- F, A' n
k- y9 ^) O: Q" q
这些点按照黄金分割比例将整个区间分为两部分。
# J9 x, O* z2 o5 e) b
+ v7 |9 d0 l6 W' P0 k; u6 x/ o
3. **评估函数值**:
6 E' M( C' b8 a) T ^/ v' E
计算这两个分割点的函数值:
+ L: p* S/ T9 v- D( a6 G% j
- \( f_1 = f(x_1) \)
" N. E) f" |4 r2 G& ]
- \( f_2 = f(x_2) \)
. |+ ^( Y4 x( q+ l( C3 J
) _: K0 T: y4 u6 B
4. **缩小区间**:
$ m9 n: g1 G, v2 ]: B
根据函数值的比较来决定缩小哪个部分的区间:
9 o3 t& j$ d' z+ S2 E% Z. W
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
5 o O9 {& T& A) I/ b- F3 c/ A
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
/ c+ h' C' J' { F! j
( @% j5 L. E. l2 l. [5 L5 A5 ~
5. **迭代**:
+ j4 Q' M8 t; _" r" S
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
1 K |, A. p- G5 E7 |
7 p4 z( ~! r1 A1 i; }# w
6. **输出结果**:
5 V! W, Z; d2 D1 ~. {6 _2 n
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
5 I2 P6 j: y: \% ` z5 a
2 H$ l0 _1 L0 K
### 具体示例
2 j4 G1 w( { x. a
# e5 O( T0 h5 F) E
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
3 r, l* {2 ?& T/ e4 D& ]. l
. Q9 [# \6 P( s( s* c
1. **初始化**:
0 R' X) Y1 g. w0 S
- 区间 \([0, 5]\)
/ f3 z8 `! A4 }
- 容忍度 \(tol = 1 \times 10^{-5}\)
: Q/ t$ ^. z8 ]& |1 o0 @1 I
/ P, q. ^& E5 b3 Z$ B
2. **计算分割点**:
# M* }) R' S; _, v
- 计算 \(x_1\) 和 \(x_2\)
% D2 Q3 g3 t) D
) c0 O y D) ~4 |! q" R- y7 c
3. **评估函数值**:
$ {" O* k0 ~& ?; ~2 k0 R
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
, F, h" {# C! _3 s
; q* e' n3 t7 u0 Y) H4 }% p- B
4. **缩小区间**:
9 l6 i j, E$ [$ c
- 根据比较结果更新 \(a\) 和 \(b\)
+ R# @& d4 e6 e, t: k/ e9 F; d. V
: _: M e+ X! [+ c8 M- u: J3 n4 Q
5. **迭代**:
3 w6 M9 s5 e/ r8 B; L& K7 a
- 循环直到 \(b - a < tol\)
4 M/ j9 C& ]. s! |7 L
+ ?3 S v X8 n+ F N! y% c8 Q I
6. **输出**:
0 [( u$ l7 L7 }3 E, N
- 找到极小值点和最小值。
$ [" P& D0 H: @4 Q) G2 r
( q; o( T$ H' t0 d0 s0 o
### 优势与局限
; G) S0 m+ h% {- U4 k, T- h, N, V
/ n2 A7 I5 Q; N4 G1 A
**优势**:
1 s; `( Z; ]+ C% V# [5 F8 F
- 收敛速度较快,特别适合于平滑函数。
' \. ^- h/ `$ L
- 简单易实施,对于不需要求导的函数也有效。
& [. x" F+ }9 F: X0 F& G, r
" ^5 O `1 Q3 Y+ \2 r
**局限**:
. K. P/ I0 T% X' y
- 只能用于一维问题,对于多维问题不适用。
+ ]* t7 C* w! x1 j. `# V) Y2 x
- 在函数已有许多极值的情况下可能找不到全局极值。
7 i5 [3 P, E5 O$ u1 m& E3 B
6 g, h7 o- t0 y# A7 _
### 结论
r$ j) R* U9 d2 q2 v: Q
) z/ v$ T0 v8 `* t0 x7 ^; y
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
; C6 z$ Y6 @$ ^9 e
7 ~, ]+ o4 t" w' V, d
( t" Y+ O0 O) _6 v: b2 ~5 e
1 D8 x: M* R! f7 L( l+ U+ U
minHJ.m
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5