Я использую класс numpy.polynomial.polynomial.Polynomial
(библиотека Numpy), чтобы соответствовать методу fit()
определенным данным для функции полинома. Полученный многочлен прав, и я могу построить его и заменить точки, чтобы получить значение «y», и я получаю правильные ответы. Проблема в том, что атрибут .coef
класса Polynomial
возвращает набор коэффициентов, которые каким-то образом нормализованы или изменены, и я не могу понять, как это сделать. Что я имею в виду? Код следующим образом:Ошибка в коэффициентах для многочлена с использованием Numpy
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.
Я думаю, что полиномиальная функция может быть нормализована или смещена. Я могу столкнуться здесь с математической проблемой, а не с программированием, но любая помощь действительно приветствуется, потому что мне нужно записать многочлен, и я не уверен в правильности его формы. Благодарю.
Вы пытались использовать ['numpy.polyfit'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html)? Кроме того, у меня нет таких же коэффициентов, как у вас, у меня на два порядка больше. – darthbith
спасибо @darthbith, что два метода должны быть очень похожими, во всяком случае многочлен хорошо установлен, задача - это коэффициенты для записи полиномиальной функции. Я исправил два порядка величины, которые я разделил на 100 по разным причинам в то время. – Ruips
Я обнаружил, что коэффициенты, возвращаемые 'polyfit', были разумными, а y-перехват соответствовал значению' polyval (pol, 0) '. Я понятия не имею, какие коэффициенты, возвращаемые методом 'Polynomial.fit()', - – darthbith