数学建模社区-数学中国

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

作者: 2744557306    时间: 2024-9-25 16:39
标题: 牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。
1 N  Z0 q% y6 v, G& W- p7 y" ?0 R" }! |+ L! y$ t
### 步骤" d3 ~6 `6 x/ R: `

0 h7 P  Y" X& T, b1. **定义目标函数**:- k" i1 N2 v+ m, B6 |3 h/ V7 u
   设目标函数为 \( f: \mathbb{R}^n \rightarrow \mathbb{R} \),其梯度和哈essian矩阵定义为:; V% C1 R4 n: e" K9 o% P
2 [0 j" R1 V4 J3 i
   - 梯度:\(\nabla f(x)\) 是一个 \(n\) 维列向量,表示函数 \(f\) 在点 \(x\) 的一阶偏导数。: Q- K' i5 x( k/ W
   - 哈essian矩阵:\(H(x)\) 是一个 \(n \times n\) 的对称矩阵,表示函数 \(f\) 在点 \(x\) 的二阶偏导数。" b# k+ b, X6 t3 W* J; p( d, S  }

! r; _% l3 P$ j7 W2. **初始化**:
3 k- G; s, Y* F6 \# S   选择一个初始点 \(x_0\)。
" P) q' l1 `: t5 I$ t
2 K% v0 V) @+ f9 A& v6 |3. **迭代过程**:
" t% d! k9 D# f' u7 S+ E# c   对于每一步 \(k\):0 k+ |3 {, ?; J: H) B& D2 Q$ U
   - 计算当前位置的梯度和哈essian矩阵:! [: t! L/ R  A+ J2 A
     \[$ {2 g, W) ^: c, c% @2 l2 i
     g_k = \nabla f(x_k), \quad H_k = H(x_k)
" H4 K! O9 O/ U' o. u2 i' p     \]
) r9 R7 y$ U% f" l$ z4 ~   - 解线性方程以更新位置:" o0 C5 [& H( y* }  d' n
     \[5 B) Z8 e, a) J4 z# X- n
     d_k = -H_k^{-1} g_k+ f4 V4 G6 t3 f, b- q
     \]- Z2 E: `( S, {: R$ [
   - 更新位置:
& H& V* K* c, z     \[7 L0 N  E4 Z  F2 O/ `5 ~
     x_{k+1} = x_k + \alpha_k d_k$ i) r5 h. ~2 U7 ]0 `
     \]* N9 C6 G* G2 ~( _" E* m8 v* p
     其中 \(\alpha_k\) 是步长,可以使用线搜索方法来确定。' `& G4 s& O8 \0 n, _3 A0 _

% H. n. \+ {( G; Q. U4. **收敛判定**:
. Q' W- y* G5 _3 `0 e; G0 _   - 检查梯度的模长是否足够小(例如 \(\|g_k\| < \epsilon\),其中 \(\epsilon\) 是预设的阈值),或者检查相邻两个点之间的距离。
& D5 Z+ c1 M8 Z+ C/ s9 O
6 K2 N& z  }3 M; C/ L- P5. **结束**:
$ E+ q4 N, ^7 Y   - 当满足收敛条件时,结束迭代,返回当前点 \(x_k\) 作为极值点。5 q6 B) R8 V$ _/ \! ^
" {: j+ O# O# F% h0 n5 R4 R; r1 A
### 示例- l% f3 ]0 }0 B

- r. g* Q2 L+ h5 W$ \; U考虑函数 \( f(x, y) = x^2 + y^2 - 4x - 6y \)。  Q' a# k2 M0 [! V- ~
$ @1 w8 y( t; N% q! _
#### 1. 计算梯度和哈essian矩阵( Q) Y) y3 T& z  Z5 L1 o
' u! ^( N+ j, Y+ L' Z2 k( _# B& P
- 梯度:
: b  i4 p/ s. D- X6 b. v4 H# w! Y  \[
4 j7 ?7 K; g7 F% Y' R0 _  \nabla f(x, y) = \begin{bmatrix}/ H' k/ Y" b5 ~, a
  \frac{\partial f}{\partial x} \\/ _. B2 X5 D  }7 ^$ B7 V3 ?
  \frac{\partial f}{\partial y}
" O+ Q; {% I1 [; j" `9 ]  \end{bmatrix} = \begin{bmatrix}
  j) n4 _5 f5 s5 |3 |  2x - 4 \\
% c' c* x. k8 M/ {# Y9 g/ m+ ]  2y - 6, q# m* R. q- Q8 [  r8 Z
  \end{bmatrix}
* G, s0 X0 A8 I- o9 L  \]: k; u4 ?' g1 x: Z+ P& z

) e8 `( c- h% v' U- 哈essian矩阵:/ l) q. g* y  ]- J% f+ ?! [! U4 ?% }# n
  \[: S6 C/ L* c- [8 |" T+ `
  H(x, y) = \begin{bmatrix}
! X4 @9 e) @: h# \1 p" m$ w  \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\; g- H) Q: C& a  |
  \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2}
$ F9 G+ Z5 U/ S/ b: \8 o. A. U, `, f  \end{bmatrix} = \begin{bmatrix}
. o# S1 e9 C+ J9 S  2 & 0 \\
% ?8 w5 _& p% Y0 x* m# s6 Y; [  0 & 2
$ Q$ t0 \, T, [8 Y& a; Z  \end{bmatrix}
* h9 b/ L) \( l6 m) r# b  \]- C4 H+ H7 {& u: T
" g" t: y# b9 m  L) \4 Q; E9 g
#### 2. 初始化
" h: J! d/ W, e  e* |3 V- A. @
, r0 `. H; J/ y+ G选择初始点 \( x_0 = (0, 0) \)。
" ]' F9 w9 i% @
  J5 T, U3 n+ C0 N1 ^/ i0 E#### 3. 迭代过程
/ }4 K0 x- G3 N* ~3 w) m* E# K1 V( C# A& P- D) s
- 计算梯度:
# E4 l% ~& J% l  \[
& }4 S  Q8 k* v  g_0 = \nabla f(0, 0) = \begin{bmatrix}9 J1 |/ R% c, b5 q& w' Y
  -4 \\
8 j6 n  g2 W( m  -6
, Y  ^3 M& `' I  \end{bmatrix}
2 o4 ^* p6 K3 x( Q; o  \]
8 x" U0 u; B" f1 X# _  V0 d( r. c
9 F( ]- a; |8 ]8 |* ^- 计算哈essian矩阵(在初始点不变):# C4 S3 {: U5 o) I$ o
  \[
  Z3 [1 M5 e' Z' T% R  H_0 = \begin{bmatrix}
9 w; q- T6 i5 s) J  2 & 0 \\$ y$ h  w' v4 C0 @; e2 L" T/ c1 K
  0 & 2# A" a; k) n+ ]  R4 o
  \end{bmatrix}% d4 k+ ~: C: J  @/ K0 S0 L: F
  \]
* B. S2 {9 T) S; D- J8 n" P2 X! y9 Y7 K. F6 [/ ^9 ?/ j- }, k
- 计算搜索方向:
# ?- l+ N2 s8 L! m# u1 I  \[3 x( g# j& u" L0 b
  d_0 = -H_0^{-1} g_0 = -\begin{bmatrix}5 y6 o8 r* }! U1 k, ?
  0.5 & 0 \\
, s3 L; L; Q+ u1 j5 a; ?: I  0 & 0.5: L! v& f9 [, s
  \end{bmatrix} \begin{bmatrix}
9 [; }2 F+ d1 Y" v( V  -4 \\
, d9 A% d: H. b' k) R% e2 c0 D  d4 S  -6
7 d9 j( @; O2 B$ z  \end{bmatrix} = \begin{bmatrix}
; a3 L( N% l& u' e8 K/ t( S  2 \\4 K5 i2 S" s9 y% [$ a
  3( i+ t! h/ ]" e4 i+ E- W' l
  \end{bmatrix}
# E8 E  h$ M' U) U; r  \]
$ Q: q3 ?  C0 n, @& C
% O. F" b: `- x- 更新位置:. w* v8 Z& S8 x5 Y7 a# m( v
  \[) C1 N5 t0 `+ _0 \; u
  x_1 = x_0 + d_0 = \begin{bmatrix}
$ r( P0 d! v" v2 E  0 \\
( z: a7 Q( ~: {2 ^6 V  0) R6 b2 M" o+ m; `6 s* a
  \end{bmatrix} + \begin{bmatrix}
4 m+ g9 R0 t- O" e, S: ~6 k. _8 `  2 \\
6 `$ F: i& Y: a7 b& Z5 x7 ]1 ~0 j  3
9 A3 m9 H; C5 q" O8 x/ o$ n  \end{bmatrix} = \begin{bmatrix}5 Z( z" E' r+ V3 e+ d
  2 \\6 R- t2 `0 m, f' G+ Q
  3
- x  O- \+ B, ^+ |6 t3 ]3 U: @  \end{bmatrix}0 t7 P# H9 t  k4 E$ C" ]$ u
  \]# S$ `/ n9 D) z; P: v3 D; N* E

: E8 e" d8 p$ m/ o5 S# L- 重复上述步骤直到收敛。; U  r# }4 o2 c0 @
1 z: X/ F1 f# n, K5 {
#### 4. 收敛判定
! g4 y, v7 g: l' `+ \5 \5 D  N2 B$ c
5 z; n; {6 e2 S2 f$ ~, H在后续的迭代中继续计算梯度和哈essian并更新,直至梯度的模长小于某一阈值。
# t2 D4 D+ U9 D5 Y  q2 n$ m6 }9 g
! O: Q( m. b+ L& M7 j( F### 总结
- J/ ?( N' p3 ?. A6 P$ i3 O3 h0 K3 H+ u" [  `7 k. d: W
牛顿法通过利用梯度和哈essian矩阵提供了快速的收敛性,尤其在接近最优点时表现优越。然而,它对初始值的选择和哈essian的可逆性有一定要求。在问题规模较大或哈essian不可逆时,可能需要使用拟牛顿法或其他优化技术。9 c, ?4 x# ~& ]7 u/ P7 Y5 w; B% }
! T5 R  ^( ]2 d! q" J2 f, ^

, q% l9 W3 f% g' D1 F+ a$ I; x6 }! n8 [# A' U0 }

minNT.m

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

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






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