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

  数学 数值计算    浏览次数:7811        分享
5

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

 

张球球   2017-02-16 14:14



   2个回答 
9

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

第一步:我们先任意选定一个初始点$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$.

SofaSofa数据科学社区DS面试题库 DS面经

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

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

牛顿法求根的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


SofaSofa数据科学社区DS面试题库 DS面经

MangoCoke   2018-06-18 12:05

感谢! - myodd   2018-12-06 16:35


  相关主题

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

随机梯度下降(SGD)可以被并行计算吗?   1回答

能不能用梯度下降法求平方根或者立方根?   2回答

计算中的截断误差是什么意思?   0回答

SGD with clipping是什么意思?   2回答

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

部分主元   1回答

python里怎么求矩阵的条件数?   1回答

RMSProp的直白解释   1回答

学习率不当会导致sgd不收敛吗?   5回答

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

nesterov’s momentum和momentum的区别?   1回答



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

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

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

我们谢绝答非所问。

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

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