公式:
f(x)是代价函数(二次可微实函数),展开成泰勒级数。
f(x)≈ϕ(x)=f(x(k))+∂f(x(k))∂x(k)(x−x(k))+12(x−x(k))T∂2f(x(k))∂x(k)(x−x(k))
为了求 ∂ϕ(x)∂x 的平稳点,令:
∂ϕ(x)∂x=0
即:
∂f(x(k))∂x(k)+∂2f(x(k))∂x(k)(x−x(k))=0
设 ∂2f(x(k))∂x(k) 可逆,得到牛顿迭代公式:
xk+1=xk−(∂2f(x(k))∂x(k))−1∂f(x(k))∂x(k)
例子与matlab代码:
min(x1−1)4+x22
x_old = [0;0];
x_new = [0;0];
for i = 1:100
x_old = x_new;
fx1 = [4*(x_old(1)-1).^3; 2*x_old(2)];
fx2 = [1/(12*(x_old(1)-1).^2) ,0 ; 0, 1/2];
x_new = x_old - fx2*fx1;
end
x_new
结果:
xnew=[1;0]
特别对于二次凸函数,用牛顿法求解,经1次迭代就可以达到极小值:
设有二次凸函数
f(x)=12xTAx+bTx+c
其中A是正定对称矩阵。
利用极值条件求解:
▽f(x)=Ax+b=0
得到最优解为:
x=−A−1b
利用牛顿法求解
x2=x1−A−1(Ax1+b)=−A−1b