怎么用牛顿法近似求解根号2?最好能给出迭代的前几步。谢谢!
2个回答
牛顿法是一种迭代求根法。
第一步:我们先任意选定一个初始点$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面经
				有python的代码实现吗?
				- 
             ccc225
           
				
          
          2018-06-18 06:00
			
				我补充在下面了
				- 
             MangoCoke
           
				
          
          2018-06-18 12:06
			
牛顿法求根的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
				感谢!
				- 
             myodd
           
				
          
          2018-12-06 16:35
			
    
  相关讨论
  随便看看