У меня есть два массива вычисленных значений с именами xvals
и yvals
. Я знаю функциональную форму, в которой должны находиться точки данных, поэтому я знаю, какой результат должен получить. Я должен получить кривую x ^ 4, однако, когда я позволяю python вычислить и построить наилучшее соответствие, линия будет прыгать между всеми точками данных! Вот что я пробовал до сих пор:
def func(x, a, b, c, d, e):
return a - b*x - c*x**2 - d*x**3 - e*x**4
fita, fitb = optimization.curve_fit(func, xvals, yvals)
#--stuff to initialize a matplotlib plot goes here blah blah blah--
plt.scatter(xvals, yvals, marker='o', c=cparam, cmap=plt.cm.get_cmap('viridis'), s=100, zorder=2)
plt.plot(xvals, func(xvals, *fita), 'r-')
Подгонка кривой возвращает правильные коэффициенты для a, b, c, d и e. Как видите, при построении новая линия подгонки перескакивает между всеми точками данных. Я думаю, что это как-то связано с неправильными значениями x, однако, если я закажу их, это потенциально испортит построение графика рассеяния. Я попытался создать новый независимый набор равномерно распределенных значений x и вычислить некоторые соответствующие значения y и построить его, но линия исчезла с моего графика. Мне что-то не хватает, чтобы заставить его вести себя лучше?
