Код:
from scipy.optimize import curve_fit
import numpy as np
from numpy import *
def func(x, a, b):
return ff(x,a,b)
ff= lambda x,a,b: eval("1/(a*x+b)")
xdata = [1 ,2, 4, 6, 8, 10]
ydata = [0.22, 0.1, 0.06, 0.04, 0.03, 0.024]
popt, pcov = curve_fit(func, xdata, ydata)
print('\n', '[a b] for the best fit = ', popt,'\n')
при запуске он дает
[a b] for the best fit = [ 4.62673137 -0.04794652]
Между тем, согласно моему научному калькулятору c (или решив это вручную), ответ должен быть:
[a b] for the best fit = [ 0.9232 4.05396]
Я неоднократно тестировал программу, это не единственный пример, в котором она не дает правильных результатов.