数学建模社区-数学中国

标题: 牛顿法求多元函数的极值 [打印本页]

作者: 2744557306    时间: 2024-9-25 16:39
标题: 牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。) b& G# k3 k+ D- ]& G1 G

7 h5 U. w& N; y### 步骤- n# U4 b6 e9 D% r( C' e

/ F3 \* f' n* u, Q9 e9 Q1. **定义目标函数**:
; `2 p; Y/ U' a) |$ M3 {9 f2 A6 m   设目标函数为 \( f: \mathbb{R}^n \rightarrow \mathbb{R} \),其梯度和哈essian矩阵定义为:
9 {+ a3 G3 u- L  ]4 e1 w1 V) G% n6 r: k9 ~% J. L' }" @/ _' i* n
   - 梯度:\(\nabla f(x)\) 是一个 \(n\) 维列向量,表示函数 \(f\) 在点 \(x\) 的一阶偏导数。
1 {  q! c% O/ r& ^& O   - 哈essian矩阵:\(H(x)\) 是一个 \(n \times n\) 的对称矩阵,表示函数 \(f\) 在点 \(x\) 的二阶偏导数。
1 f3 k- x* A( Q6 y' ~- J+ ?0 r/ }
2. **初始化**:- a, T( L+ x* H; Y  G
   选择一个初始点 \(x_0\)。5 u5 {& K0 ^4 A- }! _; K
7 u# |" L/ q) @5 P+ X
3. **迭代过程**:, x6 p) }- X4 F8 k" G
   对于每一步 \(k\):/ I4 A' ^" Z' [+ [
   - 计算当前位置的梯度和哈essian矩阵:
$ ~9 m' G( d' s" J7 ^     \[
/ E9 o& X. }- P; z- z6 d( n     g_k = \nabla f(x_k), \quad H_k = H(x_k)
: B! b5 M+ V  F4 v4 }     \]
) b$ j8 C& U4 e1 Q' F( N   - 解线性方程以更新位置:. n7 }$ N6 p# b2 w( Q
     \[) g4 v1 ~8 h3 y6 l- E- Y- w
     d_k = -H_k^{-1} g_k1 z! k* k! U( E* O- `
     \]& M/ N- B* Q  \: w9 L
   - 更新位置:' p3 r* T' s1 i- w  F5 `
     \[
9 x+ j) W( p! D. e+ U     x_{k+1} = x_k + \alpha_k d_k+ j& w1 N3 y5 j2 ?! }6 ]) X3 g% O9 I$ X
     \]' _4 g- ~- r/ A. g( P; `  L
     其中 \(\alpha_k\) 是步长,可以使用线搜索方法来确定。  U, @( J$ Z9 a* `! y  K

3 Y7 R8 b+ v' H- g; w) C* G4. **收敛判定**:
6 l0 [6 e) d# q! e! A6 u5 {   - 检查梯度的模长是否足够小(例如 \(\|g_k\| < \epsilon\),其中 \(\epsilon\) 是预设的阈值),或者检查相邻两个点之间的距离。
' n- V5 i4 i2 l" z; T4 p0 i, S8 q. s9 p8 v6 s- q  b5 h$ O
5. **结束**:
3 H. D1 r0 {/ {2 ?4 s# d   - 当满足收敛条件时,结束迭代,返回当前点 \(x_k\) 作为极值点。
* V! ]* [2 G; ~$ u4 @! s$ J% p, ]$ W' E9 X
### 示例; v  U3 ?8 V/ E: W" U6 d$ E

9 k7 d5 y" S2 q* `- W4 L! I3 c' F1 e考虑函数 \( f(x, y) = x^2 + y^2 - 4x - 6y \)。
$ U3 F% T5 T3 ~0 W" D' K
) j+ d: Z, h7 G( ^+ Q#### 1. 计算梯度和哈essian矩阵
( M7 n0 T" @1 B4 F( O; @: f2 @  M
- 梯度:
1 l( A* ?, E% h0 d( @4 n  \[
$ O4 x0 s; A% o- o  \nabla f(x, y) = \begin{bmatrix}4 h2 x9 V4 m, b+ o& g/ a
  \frac{\partial f}{\partial x} \\- u: Z0 N2 U- |0 H* }. t. F$ v1 _
  \frac{\partial f}{\partial y}/ K/ M/ t( b0 @
  \end{bmatrix} = \begin{bmatrix}
5 f( J7 ?3 ?9 d  Z1 {, [  2x - 4 \\3 q6 [4 L. v* l( {: k3 h& P. t. Z
  2y - 6, V* v# V' T, W4 L
  \end{bmatrix}2 P4 `) L6 N4 d" ^- ]% [! d
  \], ^9 E- ~+ l) q
! B+ I' V2 @/ ~' y3 e. ]) Z1 T
- 哈essian矩阵:/ m0 _8 G, n9 d) f$ R+ W
  \[
9 q$ P; Y8 N8 Y3 W' `/ Q  H(x, y) = \begin{bmatrix}
! [( D& _4 i- |9 N  \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\
; ]( `, B! `2 S+ u: W1 P' ?2 b  \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2}: s; N7 p1 c. O4 `
  \end{bmatrix} = \begin{bmatrix}
2 [, c9 Z1 g) K1 g- |( f  2 & 0 \\" q: t  Q$ c6 F2 v
  0 & 25 A3 `" e4 K6 s5 f& L, X
  \end{bmatrix}: n. w' r2 ^8 k3 v6 A% w5 b
  \], r! h/ h8 c$ {7 S. s
$ b; E# M" l! x/ ]0 w- |
#### 2. 初始化
+ e9 K  C: O* S1 D0 r4 l9 J+ }  H; J# _# d. L! N
选择初始点 \( x_0 = (0, 0) \)。
- W- Y! Q8 p) n+ n4 h3 m3 p' c  r% Z/ C# u' p# \" ~% `
#### 3. 迭代过程
- u, Q1 x6 c5 i# }/ U' ]6 ~2 M3 V+ M- e% S
- 计算梯度:" m' |$ G0 ~* X9 q2 `  ]5 i
  \[
- U. o; I( x5 _& s, Q) U8 E  g_0 = \nabla f(0, 0) = \begin{bmatrix}& d+ E+ j: c" v, \6 |
  -4 \\7 H7 U; H! I$ f. Q& O8 o
  -6  I; g4 W: I3 l6 {0 Z
  \end{bmatrix}* D1 w) f0 A" q3 C) L  N
  \]
2 K# p, [/ A! Q0 L/ `2 k
  M( W; E+ b& L/ M1 I- 计算哈essian矩阵(在初始点不变):
" R$ A! H5 ^0 Y6 d/ [8 P- }  \[
8 Y3 P* l2 Q& g  H_0 = \begin{bmatrix}
$ w8 C. n# a, o& U1 G" S! @  2 & 0 \\: N$ z3 ]! C7 L3 G  A8 S; ]1 }
  0 & 2, J* _6 X! i' K6 D
  \end{bmatrix}
  }+ Q/ P, Z6 C6 a0 a  \]
6 Q4 n$ g4 U: t6 c9 m6 W  r9 }1 F) o6 b  X* v
- 计算搜索方向:
9 N/ h$ {* Y9 J/ f: r% t5 J  \[# [8 v7 g; T9 }- n1 R
  d_0 = -H_0^{-1} g_0 = -\begin{bmatrix}
" d* B& [: W+ K+ ^2 G3 a  0.5 & 0 \\- P+ x- `8 s, u* F" x3 m
  0 & 0.5- E& [# ?- x9 k3 o
  \end{bmatrix} \begin{bmatrix}8 l6 O, I8 P0 }" n) N
  -4 \\  V1 w% X/ P& m8 W7 f3 M
  -6
! R" U4 Z9 a  _. j) n  \end{bmatrix} = \begin{bmatrix}. Y7 v9 O, X. {$ j$ a5 l1 I% c! I# J
  2 \\
/ o3 X; V: t% R0 h- Q5 E* P& m- t  3  ?; p8 e- E, s" t) }  f9 W5 F
  \end{bmatrix}
' g: o0 w* E+ g4 q3 h) n* }- Q( v  \]5 w* G, g, N9 ~+ l* \+ W% J0 J

* \0 V/ Y; W% d$ }  B7 R- 更新位置:
7 B0 P/ h/ S4 x; ~) {  \[, M* S8 |3 ?' I& w) t& d, h
  x_1 = x_0 + d_0 = \begin{bmatrix}
2 A; U8 h8 r% V  0 \\; N$ p0 g8 y- X; L$ G
  0$ A3 Z9 x7 x2 h+ E5 E2 P: Z# |
  \end{bmatrix} + \begin{bmatrix}; m0 A, U# D1 W: x
  2 \\# E+ }# c) {  D) N$ c- L* g, f" K
  3/ @; L  p% G3 p  r1 J& M
  \end{bmatrix} = \begin{bmatrix}
" ]& P/ b6 ~9 i8 w- s. ?, P1 c% J  2 \\
' h6 ^$ k$ E1 h1 F7 v  3
: B2 N$ S  i4 L: [- w  \end{bmatrix}  F0 A( c- M: h% A. y) w4 b
  \]  C* q7 H, v- |2 P
* Z6 U# D1 p: w$ ^4 F
- 重复上述步骤直到收敛。6 W3 r* }% U6 Q

6 w5 m! g/ u7 W+ R#### 4. 收敛判定; x8 U0 I/ u, w* t' G; d
# c7 p) L$ Y% m* F7 Y  e) ?6 J" G# _! F/ ^
在后续的迭代中继续计算梯度和哈essian并更新,直至梯度的模长小于某一阈值。
6 y  C. \5 \2 }7 }0 ]. y4 q  W1 L- w
! D3 B5 H/ T/ L6 }3 N5 N### 总结( ^2 Z  o% ]( H% [) [% B7 }
! Z1 E2 T2 |; B/ A) X( f7 Z7 p
牛顿法通过利用梯度和哈essian矩阵提供了快速的收敛性,尤其在接近最优点时表现优越。然而,它对初始值的选择和哈essian的可逆性有一定要求。在问题规模较大或哈essian不可逆时,可能需要使用拟牛顿法或其他优化技术。
* M* L  f. j  c" ~- }( O: R. o% C$ u" u" r$ d( P# n
$ S8 B! p/ p: z& a# H" D0 ^- ^
7 O/ _& [8 g1 S! P8 ~9 ?; E

minNT.m

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

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






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