数学建模社区-数学中国

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

作者: 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  h0 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 X1. **初始化区间**:
! 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" M2. **计算分割点**:
  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" {, Q3. **评估函数值**:
, 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: ~' }  p1 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 G0 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) g9 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

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

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






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