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

  数学 数值计算    浏览次数:14070        分享
6

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

 

张球球   2017-02-16 14:14



   2个回答 
11

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

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

牛顿法求根的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)可以被并行计算吗?

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

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

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

SGD with clipping是什么意思?

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

高斯消元选部分主元为什么要选最大的?

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

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

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

  随便看看

python sklearn模型中random_state参数的意义

前馈神经网络如何选择隐藏层的数量

hyperparameter与parameter的区别?

如何在numpy array尾部增加一行

AB实验的哈希分桶技术是什么意思?