数学与统计-梯度法

文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。

备查手册-梯度法_共轭梯度法_线搜索,本文为第一部分。

1 问题提出

$$
\min_{x} f(x)=x^4-3x^3+2
$$

即求上式中 $x$ 为何值时,整体值最小。

2 梯度法

2.1 梯度下降法

simple gradient method

梯度下降法的思想很简单,每次下降方向选择梯度反方向,这样能保证每次值都在减小。

$$
\begin{cases} x^{k+1}=x^k+\alpha d^k\d^k=-g^k\end{cases}
$$

下面用 MATLAB 实现算法,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x_k = 6 # The algorithm starts at x=6
alpha = 0.01 # step size multiplier
precision = 0.00001 # end mark
previous_step_size = 1
max_iters = 10000 # maximum number of iterations
iters = 0 #iteration counter

df = lambda x: 4 * x**3 - 9 * x**2

while previous_step_size > precision and iters < max_iters:
prev_x_k = x_k
g_k = df(prev_x_k)
d_k = -g_k
x_k += alpha * d_k
previous_step_size = abs(x_k - prev_x_k)
iters+=1

print("The local minimum occurs at", x_k)
print("The number of iterations is", iters)
1
2
The local minimum occurs at 2.2499646074278457
The number of iterations is 70

结果还不错,但问题是“锯齿”现象,所以效果很差,实际情况中一般不用。

都看到这儿了,不如关注每日推送的“科文路”、互动起来~

Author

xlindo

Posted on

2022-04-20

Updated on

2023-05-10

Licensed under

Comments