文章来自微信公众号“科文路”,欢迎关注、互动。转发须注明出处。
备查手册-梯度法_共轭梯度法_线搜索,本文为第一部分。
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
|
结果还不错,但问题是“锯齿”现象,所以效果很差,实际情况中一般不用。
都看到这儿了,不如关注每日推送的“科文路”、互动起来~