我試圖弄清楚如何撰寫一個回圈來實作由 f(n 1)=ln |f(n)| 定義的混沌映射,其中 f(0) 是不包括 1 和 e 的任何實數。
import math
num_iters = 10
f = lambda f: math.log(math.fabs(f))
for ii in range(num_iters):
f = f(ii)
print(f)
我對如何實作 f(n 1) 并排除 1 和 e 感到困惑。所以我所做的是用 lambda 定義函式,然后用代碼的最后一部分回圈遍歷它,但是當發生這種情況時,我會收到數學域錯誤。我也不覺得這是正確的方法。
我嘗試過的另一件事是:
import math
num_iters = 10
f = lambda x: math.log(math.fabs(f(x)))
for ii in range(num_iters):
f = f(ii)
print(f)
我覺得更接近正確的實作,因為我現在收到這個錯誤:
RecursionError:超過最大遞回深度
但我很確定我使用 numpy 解決了它,但仍然想知道如何僅使用數學來實作它。
import numpy as np
num_iters = 100
f_values = np.empty(num_iters)
f_values[0] = np.log(np.abs(f_values[0]))
for ii in range(1, num_iters):
f_values[ii] = np.log(np.abs(f_values[ii]))
print(f_values)
uj5u.com熱心網友回復:
該功能可以通過這種方式實作。
import math
def f(n, f0):
if abs(f0) < 1e-6 or abs(math.log(f0)) < 1e-6:
return None
if n == 0:
return f0
return abs(math.log(f(n - 1, f0)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/367310.html
