Numpy полиномиальное поколение - PullRequest
0 голосов
/ 15 сентября 2018

Я использую numpy.polynomial.Polynomial для генерации полинома второй степени в области от 0 до 0,02 таким образом, чтобы он соответствовал точкам (0,0) и (0,02,16)

Полученный полиномиальный объект выглядит так:

enter image description here

То есть с коэффициентами [4. 8. 4.]

Если я запускаю plt.plot(*pA.linspace(), label="Ascending", color="orange"), результат будет таким, как ожидалось:

enter image description here

Однако, если я нанесу этот многочлен на другой инструмент, например, WolframAlpha, результат будет совершенно другим:

http://www.wolframalpha.com/input/?i=4x%5E2%2B8x%2B4+;+0+%3C%3D+x+%3C+0.02

enter image description here

Кто-нибудь может помочь? Совсем запутался

Редактировать, как требуется, полиномиальный объект можно получить с помощью:

from numpy.polynomial import Polynomial
import matplotlib.pyplot as plt

pA = Polynomial(coef=[4.,8.,4.], domain=[0,0.02])
plt.plot(*pA.linspace(), label="Ascending", color="orange")
plt.show()

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете преобразовать коэффициенты в немасштабированные и несмещенные формы.

In [1]: from numpy.polynomial import Polynomial as P

In [2]: p = P([4.,8.,4.], domain=[0,0.02])

In [3]: p.convert()
Out[3]: Polynomial([     0.,      0.,  40000.], [-1.,  1.], [-1.,  1.])
0 голосов
/ 15 сентября 2018

A numpy.polynomial.Polynomial объект с coef массивом array([4., 8., 4.]) не обязательно представляет полином 4 + 8x + 4x^2. Входные данные масштабируются в соответствии с domain объекта *1006* и window вначале, сопоставляя domain[0] с window[0] и domain[1] с window[1]. Я не знаю, почему существуют domain и window, но они существуют.

Если вы скажете Wolfram Alpha построить 4 + 8x + 4x ^ 2 от -1 до 1 вместо от 0 до 0,02, вы увидите график, более похожий на ваш вывод matplotlib:

enter image description here

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