上面第乙個是二分法計算n次方根,下面是差分法計算n次方根,不知道如何尋找任意數字n?
import time
import math
n,x,a,b,c,i,a,b=0,
0,0,
0,0,
0,0,
0print
("這是乙個計算根號的**,請輸入被開數和次數"
)#提示
x=float
(input()
)#輸入被開方數
n=int
(input()
)#輸入次數
a=b=
pow(10,
int(math.log10(x)/2
))#計算特徵數
c=pow
(x,1
/n)#利用系統的計算
time_start=time.time(
)for i in
range(0
,1000000):
a=(a+x/
(a**
(n-1))
)*0.5#二分法
a=a+
1#計算次數
if a==c:
#如果迭代的結果和系統結果一樣
break
#跳出for i in
range(0
,10000):
b=(x-b**n)/(
(b+1
)**n-b**n)
+b#自己的方法
b=b+
1#計算次數
if b==c:
#如果迭代的結果和系統結果一樣
break
#跳出time_end=time.time(
)print
('totally cost'
,time_end-time_start)
#計時print
("%.40f"
%a,a)
#二分法結果,迭代次數
print
("%.40f"
%b,b)
#自己方法結果,迭代次數
print
("%.40f"
%c)#系統計算的結果
牛頓迭代法求n方根
借助上述公式,理論上可以求任意次方根,假設要求a 假設非負 的n次方根,則有xn a,令f x xn a,則只需求f x 0時x的值即可。由上述簡單推導知,當f x 0時,xn 1 xn,因此把f x xn a 代入上述迭代式進行迭代直至xn 1 xn即可。實際中xn 1 xn可能永遠達不到,可以根...
牛頓迭代法求n方根
借助上述公式,理論上可以求任意次方根,假設要求a 假設非負 的n次方根,則有xn a,令f x xn a,則只需求f x 0時x的值即可。由上述簡單推導知,當f x 0時,xn 1 xn,因此把f x xn a 代入上述迭代式進行迭代直至xn 1 xn即可。實際中xn 1 xn可能永遠達不到,可以根...
牛頓迭代法 二分法
牛頓迭代法 用牛頓迭代法求f x 0在x0附近的乙個實根的方法是 1 選乙個接近於x的真實根的近似根x1 2 通過x1求出f x1 在幾何上就是作x x1,交f x 於f x1 3 過f x1 作f x 的切線,交x軸於x2。可以用公式求出x2。由於f x1 f x1 x2 x1 故x2 x1 f ...