怎么用牛顿法近似求解根号2?

  数学 数值计算    浏览次数: 1326
5

怎么用牛顿法近似求解根号2?最好能给出迭代的前几步。谢谢!

 

张球球   2017-02-16 14:14



   2个回答 
6

牛顿法是一种迭代求根法。

第一步:我们先任意选定一个初始点$x_0$和迭代误差$\epsilon$

第二步:$x_{n+1}=x_{n}-\frac{f(x_n)}{f'(x_n)}$。反复迭代直到$|x_{n+1}-x_{n}|<\epsilon$。

最终的$x_n$就是方程$f(x)$的近似解。


对于逼近$\sqrt{2}$,实际上就是求$f(x)=x^2-2$的正根。

先求出$f'(x)=2x$。$\sqrt{2}$肯定在1到2之间,我们不妨选定$x_0=1.5$,误差$\epsilon=0.00001$。

初始0:$x_0=1.5$, $f(x_0)=0.25$, $f'(x_0)=3$, $f(x_0)/f'(x_0)=0.08333$


迭代1:$x_1=1.5 - 0.08333=1.41667$, $f(x_1)=0.00694$, $f'(x_1)=2.83333$, $f(x_1)/f'(x_1)=0.00245$


迭代2:$x_2=1.41667 - 0.00245=1.41422$, $f(x_2)=0.00001$, $f'(x_2)=2.82843$, $f(x_2)/f'(x_2)=0.00001$


迭代3:$x_3=1.41422 - 0.00001=1.41421$


停止迭代,最终近似解就是$1.41421$.

红魔鲁尼   2017-04-03 08:10

有python的代码实现吗? - ccc225   2018-06-18 06:00
我补充在下面了 - MangoCoke   2018-06-18 12:06
1

牛顿法求根的python代码

def findSqrt(x, tol=0.01):
    if x == 0: return 0
    if x < 0: return findSqrt(-x) * 1j
    init_guess = 1
    while init_guess ** 2 < x:
        init_guess *= 2
    r_o = init_guess
    err = r_o ** 2 - x
    while abs(err) > tol:
        r = r_o - err / (2 * r_o)
        r_o, err = r, r ** 2 - x
    return r_o


MangoCoke   2018-06-18 12:05



  相关主题

关于随机梯度下降法(SGD)的问题   1回答

常说的低秩分解或者低秩逼近是什么意思?   1回答

部分主元   1回答

牛顿法到底是一阶优化算法还是二阶优化算法?   2回答

最速下降法与梯度下降法   1回答

用SGD时陷入局部最优解的解决方法   3回答

RMSProp的直白解释   1回答

随机梯度下降(sgd)的收敛问题   2回答

Adam优化算法   1回答

梯度上升算法是什么?   2回答

随机平均梯度法(Stochasitc Average Gradient)和随机梯度下降(SGD)有什么区别   3回答

对于小批量随机剃度下降法(mini-batch SGD),如何选择每批样本的数量?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!