数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-27 17:17
标题:
黄金分割法求一维函数的极值
### 黄金分割法的基本概念
E) z6 N4 [9 R5 y, ~- v# c( D
; g. n& N, q9 p* j
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
4 i5 c7 s2 b8 e' @% x; W
5 W2 r" @9 t0 u, i, z
#### 黄金分割比
2 ~) a! o7 X+ y) q" Z# b8 h
: t7 ~ f- X; U: i) P1 q
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
9 k- c2 k C$ E6 u) w$ j6 @. Y
$ Y+ M' ^9 Y! r9 |! |1 ?
### 实施步骤
7 J4 F: j8 K! m- W
0 s% @, I O& O
1. **初始化区间**:
8 k' h# v/ P: ^) Q1 _9 k' k
选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
- l+ F7 F j. ~* `8 B5 c0 m
! {+ T, m" m7 v! E1 l6 Z& ]
2. **计算分割点**:
, W' E9 o- _3 g! m
计算两个点 \(x_1\) 和 \(x_2\):
5 b; T0 U1 h! o+ Q
- \( x_1 = b - \phi \cdot (b - a) \)
k+ U, E4 ?6 f5 Y
- \( x_2 = a + \phi \cdot (b - a) \)
# p6 }* _" }! {5 D: B# t- y
" V* G8 a3 [: M6 U3 D
这些点按照黄金分割比例将整个区间分为两部分。
5 E* V! h; L* Z5 s
5 o% p" x9 ]; j- A, h
3. **评估函数值**:
5 q$ e8 h, t" M0 R- O& |
计算这两个分割点的函数值:
( M+ m* {$ C- [5 b
- \( f_1 = f(x_1) \)
3 _ x( }& l9 [
- \( f_2 = f(x_2) \)
! n8 q" i7 k5 y& W9 s* i
& o. q2 \3 x Z: J" P
4. **缩小区间**:
7 f6 p- c. e6 Z
根据函数值的比较来决定缩小哪个部分的区间:
) c8 _. D% ~* C) x3 {! d
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
5 Z2 L+ n n) u, h: x
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
* P# H9 A5 N0 n! |# b
7 c6 k# W& H% {% a( T
5. **迭代**:
- i8 A) M$ V( R
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
8 [0 o) Y8 ?/ f) ~7 L. K4 {2 z
" w5 e; [& U" b2 o
6. **输出结果**:
# m; b7 H" \. ?9 y& C
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
0 V( U3 h" s+ C; f0 J* v/ c
U0 h, o% G" s* E* A% c
### 具体示例
. v+ u/ l) v1 C- ~ x8 \
; y2 l4 t! C. I& Q
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
7 |5 o! Z1 l. c- V% q+ d
( Y3 t; |9 z+ Q6 u: W
1. **初始化**:
; k$ E" ]! N$ Z' G
- 区间 \([0, 5]\)
8 h( @5 Q7 D6 w5 y! S" u/ \( N% @
- 容忍度 \(tol = 1 \times 10^{-5}\)
8 S/ U) n$ F6 Y2 a1 Y9 a
3 _6 J- G) f0 o: @/ K
2. **计算分割点**:
$ B5 f2 A3 l3 M O: T" g: U
- 计算 \(x_1\) 和 \(x_2\)
, |. K9 Z! X+ t
7 l" Y5 B' G. H4 r
3. **评估函数值**:
. l9 ^1 R |+ T& {1 D) y4 p) u
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
w, E" c4 t2 s
4 ]1 x" T& U& e# I6 D( d8 y( ]
4. **缩小区间**:
/ B6 p( h! h1 E" _4 L6 ~0 r* z
- 根据比较结果更新 \(a\) 和 \(b\)
~0 O3 k# k2 g8 a. ]2 d3 f' R
1 L) d1 X4 h& C' ?7 t Q
5. **迭代**:
) H; ^8 u7 a3 D: B5 Q. h; u
- 循环直到 \(b - a < tol\)
* p* o6 O2 ~. s8 }4 _* @ @4 W# [1 s. ^
, k2 N4 n& H1 i" i- R9 N( K3 p
6. **输出**:
7 k4 S- W& @" j
- 找到极小值点和最小值。
- S4 Y; Z: v; q$ ~& H
7 o J; \: `' g
### 优势与局限
' [6 q( Y# v x; ?& m7 H, ^4 ]
( @8 |) L; W! b; P7 N# [6 w- F7 s$ x
**优势**:
5 _! u# e2 Q( n
- 收敛速度较快,特别适合于平滑函数。
! ~5 ^4 Z& K# W# R1 ]
- 简单易实施,对于不需要求导的函数也有效。
: \9 T2 M7 M% l: [2 r
" t+ s4 K! w- s; I9 z
**局限**:
& O @% b" I) d6 r; S# I. e7 }
- 只能用于一维问题,对于多维问题不适用。
' l* N$ M) [" j0 M
- 在函数已有许多极值的情况下可能找不到全局极值。
% v9 m# f7 h2 W2 V! |
) M( I5 H, |+ J- B8 S
### 结论
# T: F3 y- \" ?
1 u7 }2 `5 M: u# _# g1 }
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
3 j8 b% ~& r' n' P. C- d0 D( h
7 ?' `& b% ]9 f) x, |- O" d& P
9 Q$ Q: F7 C1 I7 N
' k7 X2 V: a) _7 p
minHJ.m
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5