怎么用牛顿法近似求解根号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