Не уверен, как polyval оценивает функцию - PullRequest
1 голос
/ 16 мая 2019

У меня есть некоторые данные, которые я поместил в полином. Моя цель состоит в том, чтобы (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 при построении графиков не решает проблему.

1 Ответ

0 голосов
/ 16 мая 2019
def f(x_,y_):
F = np.polyval(p,x_)
return F
  1. вы не используете y_ в f

  2. вы используете np.polyval и poly.polyval.np.polyfit и poly.polyfit имеют коэффициенты в одном и том же порядке? см. Здесь и здесь

Возможно, вам следует использовать только np.polyfit и np.polyval и не путать вещи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...