Используйте Numpy polyadd (), чтобы добавить два полинома - PullRequest
2 голосов
/ 25 февраля 2020

Я пытаюсь добавить два полинома, используя Numpy polyadd (), но получаю неправильный результат

a = [60, 51, 64, 38,  9, 79, 96, 81, 11]
e = [1,0,1,0,1,0,1]
b = np.polyadd(a, e)
b
array([60, 51, 65, 38, 10, 79, 97, 81, 12])

Есть ли простой способ получить правильный результат (61 , 51, 65, 38, 10, 79, 97, 81, 11)?

enter image description here

Numpy обрабатывает коэффициенты от самого низкого до самого высокого порядка правильно? Так что здесь должно быть (60 + 51x + 64x ^ 2 + 38x ^ 3 + 9x ^ 4 + 79x ^ 5 + 96x ^ 6 + 81x ^ 7 + 11x ^ 8) + (1 + x ^ 2 + x ^ 4 + x ^ 6) = 61 + 51x + 65x ^ 2 + 38x ^ 3 + 10x ^ 4 + 79x ^ 5 + 97x ^ 6 + 81x ^ 7 + 11x ^ 8

1 Ответ

2 голосов
/ 25 февраля 2020

Вы видите документы для различных функций. np.polynomial.polynomial.polyadd использует от низшего порядка к наивысшему слева направо, тогда как np.polyadd занимает место от наивысшего к низшему.

>>> a = [60, 51, 64, 38,  9, 79, 96, 81, 11]
>>> e = [1,0,1,0,1,0,1]
>>> np.polyadd(a, e)
array([60, 51, 65, 38, 10, 79, 97, 81, 12])
>>> np.polynomial.polynomial.polyadd(a,e)
array([61., 51., 65., 38., 10., 79., 97., 81., 11.])

Результат, которым вы являетесь Запрашиваемая информация может быть получена с помощью np.polyadd путем изменения списков и последующего обращения полученного результата в соответствии с предложением @ Mad Physicist :

>>> np.polyadd(a[::-1], e[::-1])[::-1]
array([61, 51, 65, 38, 10, 79, 97, 81, 11])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...