用牛顿法求算术平方根python

您所在的位置:网站首页 求平方根的vb程序代码是什么意思 用牛顿法求算术平方根python

用牛顿法求算术平方根python

2024-07-12 00:15| 来源: 网络整理| 查看: 265

用牛顿法求算术平方根 要求

不用数学库函数sqrt()函数求一个数的平方根

解法

采用牛顿迭代法也就是牛顿法求解

通过迭代公式来求得f(x)=0的解

x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n- \frac{f(x_n)} {f'(x_n)} xn+1​=xn​−f′(xn​)f(xn​)​

这个公式源于泰勒展开式 f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + ⋯ + 1 n ! f n ( x 0 ) ( x − x 0 ) n f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{1}{2}f''(x_0)(x-x_0)^2+\cdots+\frac{1}{n!}f^n(x_0)(x-x_0)^n f(x)=f(x0​)+f′(x0​)(x−x0​)+21​f′′(x0​)(x−x0​)2+⋯+n!1​fn(x0​)(x−x0​)n 如果只考虑前两项的话,那么就可以得到一个近似的等式 f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x)=f(x_0)+f'(x_0)(x-x_0) f(x)=f(x0​)+f′(x0​)(x−x0​) 令f(x)=0,对x求解,就可以得到一个近似解 x = x 0 − f ( x 0 ) f ′ ( x 0 ) x=x_0-\frac{f(x_0)}{f'(x_0)} x=x0​−f′(x0​)f(x0​)​ 得到迭代公式后,就可以进行求解了

求一个数m的算术平方根,也就是对 x 2 − m = 0 x^2-m=0 x2−m=0 求解

将f(x)和f’(x)=2x代入上面的迭代公式,可以得到 x n + 1 = x n − x n 2 − m 2 x n = x n 2 − m 2 x n x_{n+1}=x_n-\frac{x_n^2-m}{2x_n}=\frac{x_n}{2}-\frac{m}{2x_n} xn+1​=xn​−2xn​xn2​−m​=2xn​​−2xn​m​

python实现 def newton(m): x0=m/2 #初始化初始点,任意点即可 x1=x0/2+m/(x0*2) while abs(x1-x0)>1e-5: #精确到小数点后四位,近似解十分接近的时候停止迭代 x0=x1 x1 = x0 / 2 + m / (x0 * 2) return x1 print('%.4f'%newton(2))

运行结果

1.4142


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3