用牛顿法求算术平方根python
用牛頓法求算術平方根
要求
不用數學庫函數sqrt()函數求一個數的平方根
解法
采用牛頓迭代法也就是牛頓法求解
通過迭代公式來求得f(x)=0的解
xn+1=xn?f(xn)f′(xn)x_{n+1}=x_n- \frac{f(x_n)} {f'(x_n)} xn+1?=xn??f′(xn?)f(xn?)?
這個公式源于泰勒展開式
f(x)=f(x0)+f′(x0)(x?x0)+12f′′(x0)(x?x0)2+?+1n!fn(x0)(x?x0)nf(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(x0)+f′(x0)(x?x0)f(x)=f(x_0)+f'(x_0)(x-x_0) f(x)=f(x0?)+f′(x0?)(x?x0?)
令f(x)=0,對x求解,就可以得到一個近似解
x=x0?f(x0)f′(x0)x=x_0-\frac{f(x_0)}{f'(x_0)} x=x0??f′(x0?)f(x0?)?
得到迭代公式后,就可以進行求解了
求一個數m的算術平方根,也就是對 x2?m=0x^2-m=0x2?m=0 求解
將f(x)和f’(x)=2x代入上面的迭代公式,可以得到
xn+1=xn?xn2?m2xn=xn2?m2xnx_{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=x1x1 = x0 / 2 + m / (x0 * 2)return x1 print('%.4f'%newton(2))運行結果
1.4142總結
以上是生活随笔為你收集整理的用牛顿法求算术平方根python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: allure企业级定制报告
- 下一篇: Android物联网(一)—— 蓝牙通讯