22 lines
457 B
Python
22 lines
457 B
Python
from random import uniform
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
import scipy.optimize
|
|
|
|
def f(n, f0=100):
|
|
result = f0
|
|
for i in range(n):
|
|
result *= np.exp(0.2 + uniform(-0.04, 0.04))
|
|
return result
|
|
|
|
X = np.arange(0, 100, 1)
|
|
Y = np.array([f(int(x)) for x in X])
|
|
|
|
fitf = lambda x, k, a: k*np.exp(x*a)
|
|
(k, a), pcov = scipy.optimize.curve_fit(fitf, X, Y, p0=[100, 0.2])
|
|
|
|
fitted = lambda x: k*np.exp(x*a)
|
|
|
|
plt.plot(X, Y, X, fitted(X))
|
|
plt.show()
|