数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-9-25 16:39
标题: 牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。; g9 D- q) k2 @
5 ]& g+ N: d0 ^" _- D: U: |
### 步骤
; T1 z6 w8 `1 ]) @  H+ w  O2 Q; X9 \/ L; t0 Q
1. **定义目标函数**:
& |$ P* y+ B2 a  D) S   设目标函数为 \( f: \mathbb{R}^n \rightarrow \mathbb{R} \),其梯度和哈essian矩阵定义为:, }2 K3 ?- t* r" W& i. \+ K

* W" e" g) f3 ]- Q   - 梯度:\(\nabla f(x)\) 是一个 \(n\) 维列向量,表示函数 \(f\) 在点 \(x\) 的一阶偏导数。
/ e" a1 c+ d- B, b4 o   - 哈essian矩阵:\(H(x)\) 是一个 \(n \times n\) 的对称矩阵,表示函数 \(f\) 在点 \(x\) 的二阶偏导数。
9 D: e$ B$ V4 T0 R1 f
9 Y  l$ a9 c* z# h+ b2. **初始化**:& t0 j8 `+ ]( n$ l, R" P1 W
   选择一个初始点 \(x_0\)。7 I7 V" e- }, G. q- H( b, h

7 i. H1 q! v8 m1 S1 K0 x3. **迭代过程**:, E, D, N, w  q1 a+ }( y( t
   对于每一步 \(k\):% c) Q$ v8 d6 \' J9 ?
   - 计算当前位置的梯度和哈essian矩阵:$ W$ a7 O. K" T5 J
     \[
2 \+ D2 Y' ^. T, L     g_k = \nabla f(x_k), \quad H_k = H(x_k)
$ X  Z0 Y& |, H  V9 v     \], d3 v! D7 ]6 p/ t. w
   - 解线性方程以更新位置:5 S1 t; j, \3 J* M# h. Q5 n
     \[
8 K; G  }) W8 V& s! H. M     d_k = -H_k^{-1} g_k! z* J1 m8 f; d( t
     \]; X# N! m: w$ w& r3 I- n
   - 更新位置:: y7 ^+ @4 S) _
     \[# C; I5 s0 x1 g5 l* [1 k/ l3 h
     x_{k+1} = x_k + \alpha_k d_k
9 z% Q% x; q. O' ^2 `- ^2 n: F0 t     \]. O* p( b2 s% ~  U# _
     其中 \(\alpha_k\) 是步长,可以使用线搜索方法来确定。
( p5 J' f; o& ]: z2 o6 j6 z: A' Q: \
4. **收敛判定**:3 s; |9 F# e  g
   - 检查梯度的模长是否足够小(例如 \(\|g_k\| < \epsilon\),其中 \(\epsilon\) 是预设的阈值),或者检查相邻两个点之间的距离。* W! _# o! j9 i+ l* `3 ^2 Q" C1 i
' U+ \. L1 X) @0 W
5. **结束**:, R9 j: _+ w" D0 b
   - 当满足收敛条件时,结束迭代,返回当前点 \(x_k\) 作为极值点。/ A3 P. n( s6 m0 E

; E9 `" v) g7 A0 \' x4 e### 示例
/ ]* ~- Y6 T8 J8 V) g; `9 ?
1 p. z% e( s0 r考虑函数 \( f(x, y) = x^2 + y^2 - 4x - 6y \)。
9 n8 U, x- r4 C' ~# k) j! Q  d  y2 i$ |" Y1 ^$ g! e) U* o
#### 1. 计算梯度和哈essian矩阵, |" I) v" G% Z" P/ _9 [/ i

0 r8 w1 U8 [/ r" G- 梯度:
) Z& W$ c1 `, P) I7 H2 W  \[& b8 [2 x7 {7 j; x
  \nabla f(x, y) = \begin{bmatrix}- d* K' k/ K4 J- N
  \frac{\partial f}{\partial x} \\' R: E9 U+ f$ D+ h
  \frac{\partial f}{\partial y}2 ?8 j! s# i% G6 Q+ _# v
  \end{bmatrix} = \begin{bmatrix}
& X4 J+ J  Y# s, n% S  2x - 4 \\$ F  g2 l$ F) {  p0 N' b: E3 C# w
  2y - 67 o! ], i' ^  }" v# ^$ ?  h, l
  \end{bmatrix}# `+ q) g' }( g2 S
  \]4 L2 o; O( O3 h

1 a3 u" U* I* h; O. V- 哈essian矩阵:
0 C* Y* p$ T: f  D) M  \[$ ~) t0 X3 B# u
  H(x, y) = \begin{bmatrix}
; T, j# S1 F4 p2 j8 A" \& Q  \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\
/ ]" B0 v" |* F- U  \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2}, O7 u* K! i' b
  \end{bmatrix} = \begin{bmatrix}
8 J% ]  t' l, Y  c; Y  2 & 0 \\
3 S7 n5 h" ^' |3 E* ^* p# [  0 & 2
- f$ L9 a& t' N6 f' r9 `  \end{bmatrix}4 A8 Q  _1 ?1 d2 O' I0 D  Z
  \]
6 B4 ?2 Z$ d$ ^6 l. \9 J0 Q4 J: ?2 p( G1 ~1 x* v0 }; j. k
#### 2. 初始化
* j" Q2 d* [5 e! [0 p
& n: U& U* L+ h3 S选择初始点 \( x_0 = (0, 0) \)。$ D" M9 D) n$ D: G0 v

& \! `4 m0 z: I. S. p8 l$ M6 Q#### 3. 迭代过程
9 u$ C2 t# z* K5 {. E, W4 L% ?
; n( I9 W; C; f1 q/ n2 `" Q- 计算梯度:9 c/ ?: }' @: d, H* {& M" ]
  \[6 P4 U$ ?$ {$ H& k/ [
  g_0 = \nabla f(0, 0) = \begin{bmatrix}
6 s8 Z! y4 O- s7 g* t' p5 w* O  -4 \\
& R8 e$ B1 p$ U' J5 M  -6
! U+ E0 ^  n, i* ^: S. S) Y$ E  \end{bmatrix}
; Q5 |, }, d3 G( ?+ o, Z4 ~  \]
" l5 r2 w$ e' e
  a1 Y: T. C3 r2 K9 a) t. o- 计算哈essian矩阵(在初始点不变):
& i" Y6 A8 U- S1 P9 t  \[6 A! {! W, T. l4 q# D* B5 |
  H_0 = \begin{bmatrix}
* O7 ]! m  |5 x/ K! @" }  2 & 0 \\, B: V$ O, z. }% q& T3 U
  0 & 29 p! f- q1 W. P- Y; {
  \end{bmatrix}: I. A: A. F+ d7 V# v5 p3 X( Y
  \]: }" U) V: L/ A, M
9 ?! ?8 c+ P; k9 n& ~
- 计算搜索方向:2 a" a2 Y6 y5 Y3 ^
  \[+ s2 v, Q' l/ S5 \! b
  d_0 = -H_0^{-1} g_0 = -\begin{bmatrix}! p! ^# M0 ^+ X: P
  0.5 & 0 \\
! p; u3 h# j$ L! t6 D; P  0 & 0.57 F/ j5 @; O4 C7 ?% E
  \end{bmatrix} \begin{bmatrix}
6 e# l5 |% Q! h* k$ ~  -4 \\6 T7 x1 E" ]- |6 o  k
  -62 k9 |' E4 ^  b  A/ }4 d4 l% j+ x5 w
  \end{bmatrix} = \begin{bmatrix}
8 I/ x. P4 f) e0 B  2 \\
/ g  d# F, _8 J7 f& `  3
  E1 R* [% I! l$ P9 j  \end{bmatrix}
- P" g8 N0 a8 B  \]8 t: y: E0 [# k  ]0 G
1 {/ W' j$ }5 q% W1 X
- 更新位置:( K# ^0 D+ n, ?5 A" C; d( @
  \[
/ f9 m& o+ P2 U+ [; m  x_1 = x_0 + d_0 = \begin{bmatrix}
  b  E3 M1 q* m' @  0 \\2 ^- h( X. p8 D( L5 h1 y
  0
) A, H+ g- T2 N; l& c  \end{bmatrix} + \begin{bmatrix}
3 t# B9 W% C  ^  2 \\
( q, ^' x5 Z% I3 g  3
6 P. f; F3 B# S$ l  \end{bmatrix} = \begin{bmatrix}: N# @; x$ n8 f; o
  2 \\
, u; [9 u% r3 z; F: K* E* u  31 a# I5 |+ c; ?) U, |6 S
  \end{bmatrix}
& K4 B& {9 c( G/ Q3 e) T8 m  \]
3 m- f5 L3 x; d$ n8 g2 D0 ?" E9 c% V2 ]' K0 q4 l
- 重复上述步骤直到收敛。
1 Q! ^7 B( i# E; P$ ?' h
! @# I* J$ J( f5 g, m6 N#### 4. 收敛判定
6 D5 M7 H! R, ]5 V* a+ o) U. o# X; ~7 J- ]( U# B7 ]+ C) T
在后续的迭代中继续计算梯度和哈essian并更新,直至梯度的模长小于某一阈值。/ q3 g6 A5 Z% Z8 }2 {2 v
' e# d) W$ A3 R/ P  V5 ~
### 总结5 F* Z  n0 {7 T7 B! e' H5 R- ^
8 M; ]2 S( p8 ?; `2 L
牛顿法通过利用梯度和哈essian矩阵提供了快速的收敛性,尤其在接近最优点时表现优越。然而,它对初始值的选择和哈essian的可逆性有一定要求。在问题规模较大或哈essian不可逆时,可能需要使用拟牛顿法或其他优化技术。) Y5 z. W: R* O. U$ W6 e* b

9 `) W  x" n- Y( J" \* D* K1 |7 Y* b
$ I* y( R5 }  M! ?$ S# N

minNT.m

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

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






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