В настоящее время я использую этот код для нахождения полиномиального уравнения и его производной для моих данных. Я использую np.polyval, чтобы использовать производную и найти наклон каждой точки на кривой.
result = getDist(article_name, revilimit)
xAxis = [i for i in range(1,len(result)+1)]
xAxis = np.array(xAxis)
z = np.polyfit(xAxis, result, 10)
p = np.poly1d(z)
print('p = ')
print(p)
derivative = np.polyder(p)
print('derivative = ', end='')
print(np.polyder(p))
#x = np.polyval(derivative, result)
x = [(np.polyval(derivative,i)) for i in result]
Вот кривая, которую я получил со степенью 10 для данных и Вот кривая, которую я получил со степенью 3 для данных
Проблема здесь в том, что я получаю либо все положительные наклоны (кривая степени 10), либо все отрицательные наклоны (кривая степени 3), когда подставляю значение x в производное уравнение. Вот уравнение кривой и ее производной, которую я получаю, Степень 3
Все, что я хочу, - это найти общий наклон кривой уравнения, которая соответствует моим данным.
Редактировать: Как следует из приведенного ниже комментария, я вводил значение оси Y вместо значения оси X Вместо
x = [(np.polyval(derivative,i)) for i in result]
Я должен был сделать это
x = [(np.polyval(derivative,i)) for i in xAxis]