数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-9-25 16:39
标题: 牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。
6 D; k) r/ u+ E' V. a1 ]9 y6 d
### 步骤/ p3 W8 e1 @) z+ U* N8 W3 [! s; I
! I3 r* \0 {& ?! ~
1. **定义目标函数**:
4 S; a7 X5 ]: U& a- [& [   设目标函数为 \( f: \mathbb{R}^n \rightarrow \mathbb{R} \),其梯度和哈essian矩阵定义为:0 i6 c2 E6 n0 H+ q

* p+ b6 k, T  f+ q) \: K   - 梯度:\(\nabla f(x)\) 是一个 \(n\) 维列向量,表示函数 \(f\) 在点 \(x\) 的一阶偏导数。
+ e# u9 Q8 ]1 N- A   - 哈essian矩阵:\(H(x)\) 是一个 \(n \times n\) 的对称矩阵,表示函数 \(f\) 在点 \(x\) 的二阶偏导数。5 n0 ~1 f, \% m6 w

" C( `# Y/ V$ f1 C; n2. **初始化**:# |" S1 ?3 k- a' ]' s
   选择一个初始点 \(x_0\)。
3 `& x$ {/ x, T* j3 A) h# i8 s! [
1 V! D* U& j. t3. **迭代过程**:: M2 q5 ~2 J& U4 U8 E' d, i0 ~- |
   对于每一步 \(k\):, t) O9 U* L- W# v+ z
   - 计算当前位置的梯度和哈essian矩阵:; A6 `3 a! i" C' @* l2 X$ P+ o" F
     \[* n  t$ n) Q9 L; h: Y
     g_k = \nabla f(x_k), \quad H_k = H(x_k)
9 N  U, |; U* k' z& Y  ~: Y     \]
5 q7 T2 D& H/ L. S; A8 M+ q   - 解线性方程以更新位置:8 c; U* ^6 u9 W% n  ]. f
     \[3 M, C8 [7 ?3 }9 w  U8 L1 G' |
     d_k = -H_k^{-1} g_k& M, b  ?6 T4 y2 l. z3 K- u0 N
     \]
6 U4 V6 F( t; k8 A5 K& w9 r% A3 m   - 更新位置:
, f1 C3 K5 M3 B) J0 v     \[! z  x/ U! B9 T. I3 I6 ^
     x_{k+1} = x_k + \alpha_k d_k
  r1 L0 q- d* H  m* o. e     \]
' W8 D( M% ^9 F( w5 ~     其中 \(\alpha_k\) 是步长,可以使用线搜索方法来确定。) z. c$ F) _2 o" u5 b

: z8 u  Q1 M% N* F6 p4. **收敛判定**:
% _! |5 f1 s+ ~& R   - 检查梯度的模长是否足够小(例如 \(\|g_k\| < \epsilon\),其中 \(\epsilon\) 是预设的阈值),或者检查相邻两个点之间的距离。- @$ j/ d9 ~( [4 b  N
$ [# k# C  W  k# c: T8 K
5. **结束**:
1 ]% a) o- M# n   - 当满足收敛条件时,结束迭代,返回当前点 \(x_k\) 作为极值点。
) D/ E6 q" j# O" E/ m/ R6 p" J( q% Q+ K' z0 t7 Q
### 示例7 t. d6 s; p6 ~& _+ J
: Q: T  N  [8 V. B' }/ x
考虑函数 \( f(x, y) = x^2 + y^2 - 4x - 6y \)。- A- S) k4 x  F: w' Z+ E

4 n! T2 t3 W4 J! V#### 1. 计算梯度和哈essian矩阵1 O8 A6 U! E+ }9 F; g* A
/ H. k$ c' e! d
- 梯度:/ R. p9 [) _2 ~; f  k# K4 A4 c9 f
  \[0 F6 C0 Z; ~* z$ {3 B0 D2 n
  \nabla f(x, y) = \begin{bmatrix}
1 h& ?* T  k4 ]: p; x  \frac{\partial f}{\partial x} \\8 c) }' o$ b  V, F7 j
  \frac{\partial f}{\partial y}: R* X/ G* V0 M5 M* N' y
  \end{bmatrix} = \begin{bmatrix}
5 t7 E0 Q/ c/ h! z% Y7 T, N* u, q  2x - 4 \\# o  y7 A7 x( m) R: Z
  2y - 6
' z$ E! h5 F9 Q" ?  \end{bmatrix}
2 R/ c; d8 Q/ O5 C" P! R  \]) r8 D! _4 i5 Y
/ Y4 R7 L' H" P7 C5 U( l2 K* L
- 哈essian矩阵:& h: R2 {/ ~) v% p# H3 F- F# v
  \[# T) }  i, s6 \6 Z9 q8 e
  H(x, y) = \begin{bmatrix}: D# F1 B* W+ ~/ o
  \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\
/ @' p. _& V  q  g' @3 X& }  \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2}3 c' x5 x9 H. X% O8 ?0 R
  \end{bmatrix} = \begin{bmatrix}7 l$ U6 m7 s* k& p) f# n. e" u3 {7 g
  2 & 0 \\
7 l4 ^3 k- G/ g) `; q$ ~  0 & 2
# @! s% x3 A1 N8 k. b. n& u9 I  \end{bmatrix}
; C3 ]7 X8 w$ W# m  \]
; S) P) p; P7 y1 k" o; Q+ q- P
( X3 m/ g& `6 f5 D; t4 ?6 |, q! o% n#### 2. 初始化
* d. X) l" W- C. `8 E! @8 @3 V1 a" v0 _! g' A
选择初始点 \( x_0 = (0, 0) \)。
8 d8 Z5 _5 f' D- S9 e! v+ n8 ]
#### 3. 迭代过程
" I" t* M# Q$ X( n9 v3 M, |( F6 M' W: }3 P
- 计算梯度:
$ k! D: D# {8 Y7 g) C8 J  \[
; n/ c0 h  X( t  g_0 = \nabla f(0, 0) = \begin{bmatrix}+ @" B' r# `7 K( N: K$ |7 I. h
  -4 \\
' H' a: k6 ]( u3 e  @  -6
+ i! a$ g5 i+ N0 S  Y# y  \end{bmatrix}
! T6 |, P$ Y1 \; [+ N) ?) w  \]
6 U8 b! L* d8 K7 m1 k
. u0 e" @8 g  T! V3 t/ o, R1 [- 计算哈essian矩阵(在初始点不变):
( h1 u- q4 k5 i  \[! b( l' g0 k& b: R
  H_0 = \begin{bmatrix}
* S7 t% Y7 Q- p4 C2 F  2 & 0 \\$ B" V- X$ a: o* B3 K. ~
  0 & 28 }  ?' B: ]' }6 |% s
  \end{bmatrix}4 F. X5 \1 a/ K% ~5 V& D( O$ {
  \]" }- m4 [/ T4 X% o- J. ^
2 a8 R2 K5 g) p- {5 f
- 计算搜索方向:" V7 S% n- q& `3 j# l" s
  \[7 X6 L* A( x. h
  d_0 = -H_0^{-1} g_0 = -\begin{bmatrix}
2 k) e7 Z( F* C; Y* G  0.5 & 0 \\
* S4 L( x- W5 N  0 & 0.5
5 b+ \! N* O5 |6 ^' }  \end{bmatrix} \begin{bmatrix}% l+ Y" P0 p- E( J+ H' h
  -4 \\2 S7 c4 g4 @0 V1 x
  -6
5 i' U; _2 {- k- J& J5 S  \end{bmatrix} = \begin{bmatrix}
& f7 H1 P# ]5 V6 h  2 \\
8 D1 Z" {. N7 I9 ~# N4 [+ s7 H+ f  3
8 p1 l& P, j0 ]2 e2 _) s  \end{bmatrix}
! T/ X7 z7 l: B* d  \]
9 f: q! [4 V( ^" l# e% G* f1 ~4 t; {2 `( \/ K' M
- 更新位置:6 e% u% P  X7 p1 O. s
  \[
# H$ z% }* K- U  d* @  x_1 = x_0 + d_0 = \begin{bmatrix}, T1 V- k/ N; I* s
  0 \\
5 }5 i+ w& n% a8 \, k7 V  0$ h; U2 r+ i8 V9 B2 P. [
  \end{bmatrix} + \begin{bmatrix}# |! y. T' r% c
  2 \\" }( Q0 Z* [- ?8 y
  3
/ w# F! ?0 _0 c. t6 ~! ~! H4 ~  \end{bmatrix} = \begin{bmatrix}
, [- J; t9 d$ Q" Z8 ]! p% j. x  2 \\* G3 S% i5 e0 ]) G3 `* ?
  3
' g( ?% \6 K5 _  \end{bmatrix}
/ Q* c/ x2 u8 y7 T+ Z  \]
* e/ ]1 |& F  A/ _& p: T% o- O  r, c+ V( @- u
- 重复上述步骤直到收敛。4 \2 h  I' C- |/ `1 ~3 C
' U( y. c1 H" W* S( l8 `
#### 4. 收敛判定# v* d3 z  G! T) P) Q1 X

  t1 M7 R. {2 k7 W. q$ l在后续的迭代中继续计算梯度和哈essian并更新,直至梯度的模长小于某一阈值。3 O! q9 L& P* |) F1 c
- B- v$ l3 Y& G: b, u& F& Q
### 总结
) z! L4 l' @" ]0 G3 x  M" I7 v6 d, ~0 V- b8 |; Q
牛顿法通过利用梯度和哈essian矩阵提供了快速的收敛性,尤其在接近最优点时表现优越。然而,它对初始值的选择和哈essian的可逆性有一定要求。在问题规模较大或哈essian不可逆时,可能需要使用拟牛顿法或其他优化技术。* q/ {  [: v8 z- M- R4 L1 f

% _0 W1 j# ]/ s! o. t
3 [8 d* m. Q+ N0 d, g/ b1 ]: C; B0 `! M5 S% I6 I

minNT.m

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

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






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