牛顿迭代算法求根

公式推导:f(Xn)+f‘(Xn)*(X-Xn)(切线方程)

让求解的切线方程为0,即:f(Xn)+f‘(Xn)*(Xn+1 - Xn)=0

进而推导出:Xn+1 = Xn - f(Xn)/f‘(Xn)

当Xn+1 与Xn之间差值无限接近时,即得到最终解。

例如求取方根,令f(Xn)= Xn^2 - n 代入即可 

 

python3.5代码实现:

#coding:__utf-8__
import math
class Solution:
    def qiugen(self,n,m):
        """
        牛顿迭代法   https://www.cnblogs.com/liuyu124/p/7332493.html
        公式:Xn+1 = Xn - f(Xn) / f'(Xn)
        :param n:  要求根的数
        :param m:  求根次数
        :return:
        """
        eps = 0.0001  #精度
        result = float(n)
        while True:
            last_value = result
            result = (m - 1) / m * result + n / m / result**(m-1)
            if math.fabs(result - last_value) < eps:
                break

        print(result)

if __name__ == "__main__":
    sl = Solution()
    # n, m = map(int, input().split(' '))
    sl.qiugen(125,3)

 相关理解:https://www.cnblogs.com/liuyu124/p/7332493.html

你可能感兴趣的:(机器学习)