数学建模社区-数学中国
标题:
牛顿法求多元函数的极值
[打印本页]
作者:
2744557306
时间:
2024-9-25 16:39
标题:
牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。
1 N Z0 q% y6 v, G& W- p
7 y" ?0 R" }! |+ L! y$ t
### 步骤
" d3 ~6 `6 x/ R: `
0 h7 P Y" X& T, b
1. **定义目标函数**:
- 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 W
2. **初始化**:
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. U
4. **收敛判定**:
. 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- P
5. **结束**:
$ 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 h
0 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; x
6 }! n8 [# A' U0 }
minNT.m
2024-9-25 16:39 上传
点击文件名下载附件
下载积分: 体力 -2 点
517 Bytes, 下载次数: 0, 下载积分: 体力 -2 点
售价:
2 点体力
[
记录
] [
购买
]
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5