您的位置:首页 > 其它

牛顿法及牛顿法求解优化问题

2016-03-21 15:52 218 查看

牛顿法及牛顿法求解优化问题

牛顿法

1. 由来和基本思想

牛顿法也叫牛顿迭代法和牛顿-拉夫森法

1. 牛顿迭代法:因为牛顿法的是通过迭代来实现的,每次运算都让结果比之前好一点。哪怕只好一点点,在很多次迭代之后也可以得到一个很好的结果甚至最优或期望的结果。迭代就是我们常说的积土成山,积善成德。

2. 牛顿-拉夫森法: 牛顿和拉夫森两个人都提出了牛顿法,但拉夫森比较地调而且鲜为人知。

2. 一句话描述牛顿法

牛顿法就是通过使原方程泰勒展开的一阶近似等于零不断获得更好的结果的求解方程零点的方法。

3. 详细解释牛顿法

牛顿法是求解方程零点的方法

牛顿法利用泰勒展开的一阶近似的零点获得更接近真实零点的点

牛顿法通过迭代的方法不断的获得更好的解来求得最好的解

1. 泰勒展开

f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x−x0)(x−x0)2+⋯+1n!f(n)(x−x0)(x−x0)n+o(x−x0)nf(x)=f(x_0)+f^\prime(x_0)(x-x_0)+\frac{1}{2}f^{\prime\prime}(x-x_0)(x-x_0)^2+\dots + \frac{1}{n!}f^{(n)}(x-x_0)(x-x_0)^n + o(x-x_0)^n

2. 一阶近似

f(x)=f(x0)+f′(x0)(x−x0)f(x)=f(x_0)+f^\prime(x_0)(x-x_0)

3. 求出更接近零点的点

f(x0)+f′(x0)(x−x0)=0f(x_0)+f^\prime(x_0)(x-x_0)=0

⟹x1=x0−f(x0)f′(x0)\implies x_1=x_0-\frac{f(x_0)}{f^\prime(x_0)}

4. 迭代求出零点

xk+1=xk−f(xk)f′(xk)x_{k+1}=x_k-\frac{f(x_k)}{f^\prime(x_k)}

5. 终止条件(迭代算法一定要有终止条件)

xk<stopping_criterionx_k< stopping\_criterion

4.图像直观解释

图中,橙色的雪花点是前一次的位置,一次牛顿迭代后,变化到黄色的雪花点。

由图可知,每一次迭代都可以是x更靠近真实的零点。

5.为什么用一阶近似而不用二阶近似或者更高阶近似?

因为,1. 二阶及以上的方程不一定有解,而且求解过程比一阶近似更复杂,尤其是三节以上的近似。如果求解不复杂,我们就不用牛顿法求解了。2. 一阶近似已经可以达到我们的目的。

至此,牛顿法介绍完毕。

牛顿法求解优化问题

优化问题

一般优化问题可以描述为:

minxf0(x)min_x \quad f_0(x)

fi(x)<=0i=1,2…nf_i(x)<=0 \quad i=1,2 \dots n

hj(x)=0j=1,2…mh_j(x)=0\quad j=1,2 \dots m

如果m,n都等于0,则称之为无约束优化问题,牛顿法可用于求解无约束优化问题

如果f0(x)f_0(x)是凸函数,则为凸优化问题,牛顿法可以求解凸优化问题,如果f0(x)f_0(x)非凸,则不一定能获得最优解,能否获得取决于初始点的选取

牛顿问题求解优化问题

优化问题的最优解一般出现在函数的极值点上,也就f′(x)=0f^\prime(x)=0的解,所以,牛顿法求解优化问题即求解f′(x)f^\prime(x)的零点。至于求零点,前面所说的方法就可以解决了。

求解具体步骤

1. 泰勒展开

f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x−x0)(x−x0)2+⋯+1n!f(n)(x−x0)(x−x0)n+o(x−x0)nf(x)=f(x_0)+f^\prime(x_0)(x-x_0)+\frac{1}{2}f^{\prime\prime}(x-x_0)(x-x_0)^2+\dots + \frac{1}{n!}f^{(n)}(x-x_0)(x-x_0)^n + o(x-x_0)^n

2. 二阶近似(因为二阶近似的导数为原方程导数的一阶近似)

f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x−x0)(x−x0)2f(x)=f(x_0)+f^\prime(x_0)(x-x_0)+\frac{1}{2}f^{\prime\prime}(x-x_0)(x-x_0)^2

3. 求导

f′(x)=f′(x0)+f′′(x0)(x−x0)f^\prime(x)=f^\prime(x_0)+f^{\prime\prime}(x_0)(x-x_0)

4. 求出更接近零点的点(后面的和牛顿法相同)

f′(x0)+f′′(x0)(x−x0)=0f^\prime(x_0)+f^{\prime\prime}(x_0)(x-x_0)=0

⟹x1=x0−f′(x0)f′′(x0)\implies x_1=x_0-\frac{f^{\prime}(x_0)}{f^{\prime\prime}(x_0)}

5. 终止条件(迭代算法一定要有终止条件)

6. f(xk)为最小值f(x_k)为最小值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: