用牛顿法求算术平方根python |
您所在的位置:网站首页 › 求平方根的vb程序代码是什么意思 › 用牛顿法求算术平方根python |
用牛顿法求算术平方根
要求
不用数学库函数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)+21f′′(x0)(x−x0)2+⋯+n!1fn(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−2xnxn2−m=2xn−2xnm 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 |