数学建模社区-数学中国

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

作者: 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; W5 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- W0 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, h3. **评估函数值**: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" P4. **缩小区间**: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( T5. **迭代**:
- i8 A) M$ V( R   重复步骤 2 到 4,直到区间的长度 \((b - a)\) 小于容忍度 \(tol\)。8 [0 o) Y8 ?/ f) ~7 L. K4 {2 z

" w5 e; [& U" b2 o6. **输出结果**:# 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: W1. **初始化**:; 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 a3 _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 r3. **评估函数值**:
. 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  Q5. **迭代**:) 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

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

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






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