У меня есть некоторые данные, которые я поместил в полином. Моя цель состоит в том, чтобы (i) отобразить данные и полином и (ii) определить функцию, которая оценивает p(x)
для некоторого x
в диапазоне. Я сделал оба, но я не понимаю, как работает polyval
.
Согласно документации, numpy.polyval(p,x)
вычисляет p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]
. То есть, 0-й член p соответствует наивысшей степени многочлена.
n = 4
p = poly.polyfit(x, y, n)
Однако при построении этого полинома
xp = np.linspace(min(x), max(x), 10000)
plt.plot(xp, poly.polyval(xp,p), 'r--')
похоже, что он на самом деле готовит p[N-1]*x**(N-1) + p[N-2]*x**(N-2) + ... + p[1]*x + p[0]
. Дело в том, что этот многочлен правильно соответствует данным.
Итак, проблема возникает при оценке полинома в функции:
def f(x_,y_):
F = np.polyval(p,x_)
return F
Он не возвращает значение, которое соответствует x
в соответствии с графиком (и значение, которое я знаю , это правильно).
Что мне здесь не хватает?
Примечание: использование np.polyval
при построении графиков не решает проблему.