数学建模社区-数学中国

标题: 黄金分割法求一维函数的极值 [打印本页]

作者: 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 f1. **初始化区间**:
- 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" Q4. **缩小区间**:
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" f5. **迭代**:
7 r9 \, ~" H0 p) }+ l   重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。% z5 `7 L6 V/ \

) `5 B# u; C# a+ _  S6. **输出结果**:
  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 c4. **缩小区间**:! 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/ j5 t" f: ]1 B+ K% _0 |' H$ B
6 _9 ~3 n$ w/ p
$ ~7 R! @; _5 p9 M

minHJ.m

841 Bytes, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5