0
函數的固定點是f(x)= x的點。對於一個特定的函數,我應該從隨機猜測開始,然後一次又一次地計算f,即:計算f(x),f(f(x)),f(f (f(x))),... ,直到值不會超過epsilon。找到函數的固定點
我應該寫的函數作爲輸入:函數,隨機猜測,epsilon和n迭代次數。函數應該計算一個固定點的近似值。當兩個數字之間的差值小於ε時,或者當n次迭代完成時,它將停止。 輸入和輸出的例子:
>>> fixed_point(lambda x:x**2, 1, n=5)
1 #0 iterations needed, initial guess suffices
>>> fixed_point(lambda x:x**2, 0.5, n=5)
5.421010862427522e-20 #after 5 iterations
>>> fixed_point(lambda x:x**2, 0.5, n=4)
>>> #returns None
>>> fixed_point(lambda x:x**2, 2, n=5)
>>> #returns None, guesses were: 2, 4, 16, 256, 65536, 4294967296
我的代碼給出一個正確的答案只對第一個例子,我應該在它修復?
def fixed_point(f, guess, epsilon=10**(-8), n=10):
itr=0
test=f(guess)
if (abs(test-guess)<epsilon):
return(test)
while ((n>itr) and (abs(test-guess)>=epsilon)):
itr+=1
test=f(test)
if ((abs(test-guess))<epsilon):
return(test)
return(None)
嘿,我錯了。代碼*可以被修復,但問題依然存在:-) –