数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-27 17:17
标题:
黄金分割法求一维函数的极值
### 黄金分割法的基本概念
3 H1 t! ~: [; K5 _7 Z
# Z' c- z( @$ V" g! v4 j" @; N
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
9 f* P3 t4 B2 L) m h
0 s7 Q0 n* m# Y- w+ a6 P
#### 黄金分割比
9 B- _7 c/ G$ K2 B$ h1 a9 M+ [) N
, d U' [& D; N! N4 Z( Y0 |
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
- J8 ?! J# b& ]/ B& C
4 I2 ^; [/ ^% s" }
### 实施步骤
0 s8 M& J& d+ I" r4 P
+ h. b8 E& d; W; x# h8 X
1. **初始化区间**:
! q% y* g5 o6 d' h* w6 T3 J1 F I
选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
% u& I; q' M+ W, ~3 {9 p5 J, N
6 ^# r! e0 i9 s" M
2. **计算分割点**:
X3 [8 U) h6 Q- p* |. L j
计算两个点 \(x_1\) 和 \(x_2\):
1 d& G* u, P7 T$ X: a: }# v7 d
- \( x_1 = b - \phi \cdot (b - a) \)
6 q3 X w+ [- R6 n4 m p
- \( x_2 = a + \phi \cdot (b - a) \)
. n' Q% |3 S3 y9 w2 H+ y* d# M
- b/ W8 T7 n) m2 Q! z% r/ {
这些点按照黄金分割比例将整个区间分为两部分。
% I! C& P, X& L0 X+ M9 S
6 F) O+ w5 k" {, Q
3. **评估函数值**:
, s6 v) r2 ^$ m3 N
计算这两个分割点的函数值:
0 n' s/ P, m' a3 u/ K: j
- \( f_1 = f(x_1) \)
( ^5 ~. S2 T/ b h! U
- \( f_2 = f(x_2) \)
' Q8 R% |5 X# F; |+ |5 \
4 s0 _/ W2 Z: z7 k$ V
4. **缩小区间**:
8 a7 E) M% k5 ?$ }& k, D
根据函数值的比较来决定缩小哪个部分的区间:
; d) w3 C) q7 M
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
/ t6 K1 u( A* T* {8 I/ r
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
5 }; q. z8 w* Q3 s: C& m4 T( {
; h4 N+ s; D; d# I* ?
5. **迭代**:
" v# }; b9 ~. [ T6 x, e, d, ?6 b) x
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
5 E& x& a0 E( w% D9 |7 t) t
Q* j& v7 B/ C( l
6. **输出结果**:
; J, K0 E4 N% n j' _, R% U
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
2 G* }; x1 f4 A: ~' } p
1 h* `- K. }. [5 ?' k' C
### 具体示例
; E/ H0 t* Z0 W9 ~
6 V* F$ c$ i) D$ e% e+ {
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
% Z) U0 u: {( X* ]8 k( r2 w6 i
# b; j7 o( F8 B+ i$ R/ s V3 \
1. **初始化**:
3 K6 I' b" [1 q4 X* Z" T2 p7 @, d. }
- 区间 \([0, 5]\)
3 [% ]3 a. T) j! }
- 容忍度 \(tol = 1 \times 10^{-5}\)
8 O+ `& w% s8 U4 G
0 S; y: U" t/ @7 M9 K* u! a" n
2. **计算分割点**:
# y8 G7 A& h. G& c* X) K
- 计算 \(x_1\) 和 \(x_2\)
3 R2 c$ l8 ^2 p1 ~9 b7 U$ A- e) z: s
; b1 ~3 C& f8 C0 `5 H* s1 K# q
3. **评估函数值**:
9 J+ Q. ]( i2 s. `+ X) i, s" D }" g
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
9 P2 B7 S) h) g
9 a# ~2 k! ^; c) r, f% n, R. z
4. **缩小区间**:
* p+ s1 l2 ^9 z& B6 T: W
- 根据比较结果更新 \(a\) 和 \(b\)
* c& F3 ~! b& `: }
! p, }2 t# W- Z# V
5. **迭代**:
- J5 t4 O* H* Z) x* c
- 循环直到 \(b - a < tol\)
- y! h0 e4 z- K- P. K8 _: G- k
/ D9 p# A2 ]: x; ^
6. **输出**:
2 t, R1 {5 O% x [3 o; d
- 找到极小值点和最小值。
/ d6 W0 m& U! R" N! _
0 U8 E8 k0 t% w9 w5 N4 C
### 优势与局限
5 J7 `! w( \( x, X/ X8 `
# ?. q4 N% d! \; l! U& o% z6 Y
**优势**:
8 `2 Z; K( u1 o$ {* j2 ?$ A
- 收敛速度较快,特别适合于平滑函数。
; i- R' X+ I) U' {6 w: v
- 简单易实施,对于不需要求导的函数也有效。
E* t' d7 p* ^* [
T9 ^' h4 R- ~
**局限**:
6 m: Q$ T0 C. x1 u
- 只能用于一维问题,对于多维问题不适用。
: D* Q( t" J- Y1 h! H' S+ T
- 在函数已有许多极值的情况下可能找不到全局极值。
" r, P8 U" Z2 K0 A4 H/ {9 v9 U
( T9 t' v: K0 Z; x: X
### 结论
0 C# `: _' H8 k- U( }* ~
6 k3 M) Z0 `8 Q2 @. F
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
0 C, F* x" N5 Z9 I5 h5 `
* F. I6 M+ u2 f' m, `& R8 u
5 k9 K) Z; Z t/ m
/ c3 n- a7 P0 Z2 G. o
minHJ.m
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5