简单粗暴的标题,这个推导是我看了知乎的两篇文章之后,结合自己的理解写的,多画了几个图像,力求通俗易懂
知乎的参考文章如下
https://zhuanlan.zhihu.com/p/25601871
https://www.zhihu.com/question/28838814/answer/42283723
最初我们需要求解的fixed-point函数如下
经过m次average damp后,fixed-point函数变为
每次fixed-point迭代计算,第k次迭代可以写成如下形式,直到迭代结束
以 作为自变量,变换一下上面的公式,可以得到函数,这条直线的斜率为
每次迭代求 就等同于求函数的零点
设函数,该函数零点就是我们所要求的平方根,去掉的下标k+1,得到
为了更好地理解,以一个例子代入,求解,初始值为1
1、不做average damp
两个函数是这样
第一次迭代,,得出
第二次迭代, ,得出
第三次迭代, ,得出
陷入了死循环,非常夭寿
2、做一次average damp
两个函数是这样
第一次迭代,,得出
第二次迭代, ,得出
第三次迭代, ,得出
每次迭代的直线如下,可以看到直线的零点和曲线的零点越来越接近
对比一下上面的两个图的区别,不做average damp的时候,直线是在曲线零点的两边晃来晃去导致震荡不收敛,做了average damp后,直线一直在曲线的一侧,慢慢贴近
如何保证直线不在曲线零点两边晃来晃去呢
看一下知乎大神给出的这个图,蓝色曲线表示,其他直线表示,红点表示这个点,曲线和直线是必然通过这个点的,代入函数验证一下就可以知道
现在看绿线,绿线的零点就是下一次的,和这次的分布在了曲线零点的两端,这两个y值我用绿点标出来了,由上述分析可以知道,每次迭代y都分布在曲线零点两端就会引起震荡,所以绿线这种情况是不能收敛的,红线和黄线的零点一直分布在曲线零点的一侧,可以收敛
很直观可以看出来,只要每次在曲线直线交点处,直线的斜率大于等于曲线斜率即可,上面已经说了交点就是
曲线斜率为,在交点处,斜率为
直线斜率为
因此满足,即