Добрый день всем,
Я пытался сгладить подобранную мной функцию в качестве результата экспоненциального процесса подгонки. Строки кода, которые я использую, выглядят так:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
x = (0.005, 0.025, 0.05, 0.075, 0.1)
y = (1.0, 0.7261356155365372, 0.5170068027210885, 0.3651525126179504, 0.26135615536537193)
plt.plot(x, y, "r")
x = np.array(x, dtype=float)
y = np.array(y, dtype=float)
def func(x, a, b):
return a * np.exp(-b * x)
popt, pcov = curve_fit(func, x, y)
print(popt[0], popt[1])
plt.plot(x, func(x, *popt), "b")
plt.legend(loc='best')
plt.show()
Мой графический вывод
Вывод математически удовлетворительный, и мои установленные значения print(popt[0], popt[1])
вполне разумны. Основная проблема заключается в том, что синяя линия (встроенная функция) не является гладкой . Я гуглил по поводу сглаживания функций, но я не нашел ничего, что относилось бы к встроенным функциям, и те, которые действуют на мои оригинальные наборы данных, такие как np.linspace()
numpy, не помогают.
Большое спасибо всем, кто может помочь мне с этой задачей!