Я использую класс numpy.polynomial.polynomial.Polynomial
(библиотека Numpy), чтобы согласовать с методом fit()
определенные данные для полиномиальной функции. Полученный многочлен в порядке, я могу построить его и подставить точки, чтобы получить значение «y», и я получаю правильные ответы. Проблема в том, что атрибут .coef
класса Polynomial
возвращает набор коэффициентов, которые каким-то образом нормализованы или изменены, и я не могу понять, как это сделать. Что я имею в виду? Код следующий:
x_vid = array([0.0, 50.0, 75.0, 100.0])
y_vid = array([0.0, 30.0, 55.0, 100.0])
pol = Polynomial.fit(x_vid, y_vid, 5) # The polynomial is OK!!
print pol.coef
Атрибут .coef
возвращает следующий массив:
30 38.16 17.93 9.98 2.06 1.85
Коэффициенты расположены в порядке возрастания, поэтому эти коэффициенты представляют следующую полиномиальную функцию:
30 + 38.16x + 17.93x^2 + 9.98x^3 + 2.06x^4 + 1.85x^5
Однако и здесь возникает проблема: если я заменю любое значение из моего диапазона значений [0-100] там, оно не вернет правильное значение, несмотря на это, если я это сделаю, например:
pol(0)
→ Я получу 0, что нормально, но сразу видно, что в написанном мною многочлене он не вернет 0 при x = 0.
Я думаю, что полиномиальная функция может быть нормализована или смещена. Здесь я могу столкнуться с математической проблемой, а не с программированием, но любая помощь действительно приветствуется, потому что мне нужно записать многочлен, и я не уверен в его правильной форме. Спасибо.
Дополнительная информация: http://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.polynomial.Polynomial.html#numpy.polynomial.polynomial.Polynomial
numpy.polyfit
? Кроме того, у меня нет таких же коэффициентов, как у вас, у меня на два порядка больше. - person darthbith   schedule 05.09.2014polyfit
, были разумными, а точка пересечения по оси Y соответствовала значениюpolyval(pol, 0)
. Я понятия не имею, какие коэффициенты возвращаются из методаPolynomial.fit()
. - person darthbith   schedule 05.09.2014