迭代法差分法計算n次方根(差分法自己寫的演算法)

2021-09-29 00:20:39 字數 1266 閱讀 2412

上面第乙個是二分法計算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 ...