数学建模社区-数学中国
标题:
黄金分割法求一维函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-27 17:17
标题:
黄金分割法求一维函数的极值
### 黄金分割法的基本概念
: j0 b- K5 ~( y6 C; f6 l
G6 x% L9 [3 G. Y
黄金分割法是一种用于求解一维优化问题(特别是寻找函数极值)的方法。其基本思想是通过在给定区间内选择特定的点来逐步缩小搜索范围,最终定位到函数的极值(最大值或最小值)点。
/ v$ P: T1 E: o' _3 {
* I5 J/ j5 A' N5 ?. c
#### 黄金分割比
! C% q! C) x) N' r1 g
$ r7 \# R3 U- s8 r
黄金分割法使用的比例称为黄金分割比,约为 \( \phi = \frac{\sqrt{5}-1}{2} \approx 0.618 \)。这个比例具有优良的数学性质,可以有效地减小搜索区间。
' K1 d" _1 Y) ?- y$ F
' V3 H" K% @8 V; W) |8 G
### 实施步骤
# i6 s1 S) I2 K5 T
& t' t9 D8 L( |9 f& \1 f
1. **初始化区间**:
- l) W, k% T1 p$ k) s
选择一个包含极值的区间 \([a, b]\),并设置一个容忍度(或精度)值 \(tol\),用于判断何时停止搜索。
: V3 w0 J. u, d0 O: I* l& e% H/ `
. x, _: t! f2 h* i
2. **计算分割点**:
' o' G: W. r6 N" M& i% j- M
计算两个点 \(x_1\) 和 \(x_2\):
$ r+ b4 G+ c" F6 k5 v6 {
- \( x_1 = b - \phi \cdot (b - a) \)
3 I% k8 ]; w+ y: V: j$ _. b
- \( x_2 = a + \phi \cdot (b - a) \)
# u, @* w4 s* `: R3 R
# u q( y; n7 f7 R$ v: O M+ O
这些点按照黄金分割比例将整个区间分为两部分。
+ H0 `5 @( n8 }' J/ Q& `
- H1 X4 @+ m* @, V% {; o
3. **评估函数值**:
, Q2 j4 c( ?2 D3 v0 M
计算这两个分割点的函数值:
1 V! [" \; x8 S5 U. e6 K" D
- \( f_1 = f(x_1) \)
2 Y3 P4 N2 ?4 d
- \( f_2 = f(x_2) \)
! \8 P3 I- \& l# I! P( z4 ^
" w: E( j0 Y: `8 p" Q
4. **缩小区间**:
7 a$ s+ a0 S0 [2 j9 y
根据函数值的比较来决定缩小哪个部分的区间:
# d8 ]4 Y3 V* @ W' J
- 如果 \( f_1 < f_2 \),则在 \(x_2\) 右侧的区间不可能包含最小值,将右端点更新为 \(b = x_2\)。
" a7 M5 N, g3 {1 ^' a- O$ ~
- 如果 \( f_1 \geq f_2 \),则在 \(x_1\) 左侧的区间不可能包含最小值,将左端点更新为 \(a = x_1\)。
; x) E2 H7 o8 `' f8 Z, W2 o
, D {9 m5 M s! \& \+ H" f
5. **迭代**:
7 r9 \, ~" H0 p) }+ l
重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。
% z5 `7 L6 V/ \
) `5 B# u; C# a+ _ S
6. **输出结果**:
Y' N3 o3 h4 R. e
最后,计算区间中点 \((a + b)/2\) 作为极值点,并返回这个点的函数值。
" z9 u( X8 L. p) _
, B9 C2 r& X. p b# R; J; v. P3 v) G
### 具体示例
z8 B$ ^- C9 ^1 Y) B1 e9 E
+ x1 @. L/ C' b# N) ]! P" O y* |- G
假设我们想要找到函数 \(f(x) = (x - 2)^2\) 在区间 \([0, 5]\) 内的最小值。实施步骤如下:
$ j; z5 u; P8 Z/ S
2 ?8 B4 w; a: ?7 t$ v/ s; [
1. **初始化**:
% J, y6 l1 f$ f/ m, c& Y
- 区间 \([0, 5]\)
# Y/ }7 D) H7 r
- 容忍度 \(tol = 1 \times 10^{-5}\)
6 I O0 M7 {# O7 O9 C
8 Q% j6 r% e8 H* M
2. **计算分割点**:
' ^& v- A6 m: q5 l
- 计算 \(x_1\) 和 \(x_2\)
% k4 \3 M3 T# b) S* Q ]
- H7 ~% Q. l7 e, X- |& T9 Q
3. **评估函数值**:
- v$ \' c: u! h& [
- 计算 \(f(x_1)\) 和 \(f(x_2)\)
2 \2 C/ o1 C! U8 h1 y3 U$ i
+ O( e. P) U0 O5 m J1 c
4. **缩小区间**:
! A% I$ P9 y# |& X1 R$ g7 F, \
- 根据比较结果更新 \(a\) 和 \(b\)
% \2 {: A2 n; S6 ?# i
$ A% `! c8 Q& K
5. **迭代**:
2 V% o- J) F& D# [" D3 X( `
- 循环直到 \(b - a < tol\)
4 W: x, H6 d; L! F, q; @
) F% I. e) L9 I5 s4 ?0 k
6. **输出**:
& l2 a$ V* q1 [* ]
- 找到极小值点和最小值。
0 w! Z4 W, E2 e- F' P+ C, h+ h
{( F- K0 J6 q. ~8 p# \
### 优势与局限
2 g$ P0 t7 a5 k# M+ D' R$ U
. c2 ^9 k9 Y9 Y& J( e
**优势**:
! ^/ p/ D9 Q! K$ |' X
- 收敛速度较快,特别适合于平滑函数。
* O# j$ ` i" a9 @: e* G* A4 l
- 简单易实施,对于不需要求导的函数也有效。
$ {7 Y- y6 P2 t+ D' }) b- z
' o" R6 y0 u' M0 o$ n& m
**局限**:
( R" b' I- n# G6 N) y u
- 只能用于一维问题,对于多维问题不适用。
+ ?# { \% R3 q. ~
- 在函数已有许多极值的情况下可能找不到全局极值。
0 e5 S+ M6 e( M" x( [
2 I# r( X; P/ x- N! n* B9 y4 o$ J$ n
### 结论
4 X. w1 [4 f; ]) U# |1 n( x
[0 E4 O H& G. O1 J
黄金分割法是一种高效且简单的优化方法,适用于求解一维函数的极值问题。通过迭代缩小搜索区间,能够逐步接近目标收益,并实现优化。
0 g7 h' u% E- `; Q- O1 ]5 Y- E/ j
5 t" f: ]1 B+ K% _0 |' H$ B
6 _9 ~3 n$ w/ p
$ ~7 R! @; _5 p9 M
minHJ.m
2024-9-27 17:16 上传
点击文件名下载附件
下载积分: 体力 -2 点
841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5