数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-27 17:17
标题:
黄金分割法求一维函数的极值
### 黄金分割法的基本概念
9 l7 Y$ J. i5 P! Z. i# j. l3 ]
7 G1 g. @9 P4 ~/ M
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
9 ?; b# U5 a" ?% ~' G6 r
8 k/ E1 U9 t% k9 [9 M8 N! f
#### 黄金分割比
5 P: L. D. g/ }4 n4 D v) A
0 K2 u9 h' o4 ?( @& ?$ b, E( H5 w
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
: K; J" R0 D! n( `( Y. O( A: N0 v- z
! r3 n! }: V+ {* E0 U% h9 q
### 实施步骤
' f+ m2 `& ~# p" Y# Z5 f& D
* b1 y! j. U- S3 t1 n
1. **初始化区间**:
6 d% h1 F. k0 s2 a# A, G# r1 P
选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
; L0 U, B* M* @; G3 Y8 [
* ?& h: a1 s2 P- S8 Y% j
2. **计算分割点**:
, A) Y5 p4 Q) w2 j! f/ S8 H/ d
计算两个点 \(x_1\) 和 \(x_2\):
; @1 m8 ~7 `) b
- \( x_1 = b - \phi \cdot (b - a) \)
7 {( n8 e/ Z- H
- \( x_2 = a + \phi \cdot (b - a) \)
( W# q- ^9 ~5 [) D' A
4 Y8 [- i( @) W6 x
这些点按照黄金分割比例将整个区间分为两部分。
$ h4 d9 j$ U2 ^3 i' z# A/ l0 @
) Z2 i. M: x, l" J! K0 r
3. **评估函数值**:
+ z# g) w9 n& w+ N8 {1 A3 I$ C8 m
计算这两个分割点的函数值:
! R/ t. E& ]. z( \/ |
- \( f_1 = f(x_1) \)
* X3 r) ]* G8 A0 o: n) z& B! G
- \( f_2 = f(x_2) \)
, } h* l; G9 J9 P6 {2 c( y; h
- J/ r. b6 v* O9 M
4. **缩小区间**:
4 z) E2 |2 j/ b, }0 S
根据函数值的比较来决定缩小哪个部分的区间:
6 ^3 R& s( M0 r8 u) }. ]3 c9 g
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
5 P9 D6 L4 k1 [' ~8 k8 G
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
) G( M# M f6 e2 G: P& X
; G: W0 G% f9 `
5. **迭代**:
: k3 p' z# M& r$ s: e% T, j
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
- u& e8 ~8 b- i
i+ P* g! d$ K/ [
6. **输出结果**:
, g2 k$ Z( j6 U+ M
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
6 n1 J( @. \* g. J1 w, J' ?
/ ]# h9 X7 ]9 H0 m
### 具体示例
/ t4 O2 i! J" `: s7 H
! l9 U- z7 |$ Z6 ]7 ]( W3 D
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
3 H7 E( o+ u7 }* u( W9 f
! Z5 I) R6 L$ t# Z! l
1. **初始化**:
7 ~* `) l/ V) W4 y; e" C
- 区间 \([0, 5]\)
8 _+ |. z! W: @2 n7 k% G
- 容忍度 \(tol = 1 \times 10^{-5}\)
! O" e0 j" P3 e) f$ i7 a
. ?7 y3 d0 @9 W3 g
2. **计算分割点**:
2 h1 S& ~( Y0 y4 i! [
- 计算 \(x_1\) 和 \(x_2\)
$ A' \& s$ q9 U f) D* x' t
4 @- ]8 K- ~3 u8 _
3. **评估函数值**:
2 G+ z, R/ U, _! W; q$ d1 N! w
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
6 ?* f8 M$ {' m1 H. u7 W
; W# u9 ^. y( x7 ?
4. **缩小区间**:
% @5 _( E. Z4 J! I' f( K/ z# i' a
- 根据比较结果更新 \(a\) 和 \(b\)
. I8 W! R7 S5 x
, ^3 H7 ]8 p4 k' I7 k: q r
5. **迭代**:
* {9 }- R9 e. m* S3 I1 Y
- 循环直到 \(b - a < tol\)
6 i/ i a& a" \& T3 w' R3 w
- c1 z' o& j: F: }
6. **输出**:
2 M8 d5 k9 F3 D1 ?, `
- 找到极小值点和最小值。
/ v5 A8 f f1 y0 O
, Z: D' H% P/ p4 s+ @
### 优势与局限
; }) z7 c/ j' K' ~& W/ _
6 A% x. t0 R( x/ v. s6 k
**优势**:
- g# |7 k F( O& I* {
- 收敛速度较快,特别适合于平滑函数。
P' a& o% `7 b8 x. D
- 简单易实施,对于不需要求导的函数也有效。
- A( b: V8 a3 P" P/ W
0 [/ N& g0 o9 H9 E; s
**局限**:
: u" S$ f2 M/ u- a
- 只能用于一维问题,对于多维问题不适用。
' \/ _5 F9 _8 ~7 G
- 在函数已有许多极值的情况下可能找不到全局极值。
0 ~8 r; e* P/ E8 ^
2 W8 z& J/ E' }
### 结论
9 A2 K: Q! \" a. X: N
& C- u+ \; M1 h; A) j& D
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
6 `: F T1 \6 K+ R+ \& a) t- W
! o/ N; X6 ^/ J
( Q/ B1 B% Z" C
' _3 G4 U9 |% x% V. |. _
minHJ.m
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5