下面总结两种迭代方法:三分法和牛顿迭代
1.三分法
二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以大显身手。 如下凸函数:
类似二分的定义left和right
mid1 = (left + right) / 2 mid2 = (mid2 + right) / 2 如果mid1靠近极值点, left = mid1 如果mid2靠近极值点, right = mid2
三分的原理就是每次搜索去掉2/3
程序模版如下:
double Calc(Type a)
{
/* 根据题目的意思计算 */
}
void Solve(void)
{
double Left, Right;
double mid, midmid;
double mid_value, midmid_value;
Left = MIN; Right = MAX;
while (Left + EPS < Right)
{
mid = (Left + Right) / 2;
midmid = (mid + Right) / 2;
mid_area = Calc(mid);
midmid_area = Calc(midmid);
// 假设求解最大极值.
if (mid_area >= midmid_area) Right= midmid;
else Left = mid;
}
}
2.牛顿迭代

本文总结了两种迭代方法:三分法和牛顿迭代法。三分法适用于凸性函数,是对二分法的一种扩展。牛顿迭代法是一种快速求解非线性方程数值解的方法,具有二阶收敛速度。文中通过具体的例子分析了如何应用这两种方法解决实际问题,如最小面积正方形覆盖、点到线段距离最小、影子最长长度、汽车拐弯问题等。

最低0.47元/天 解锁文章
3250

被折叠的 条评论
为什么被折叠?



