Добавление полинома Python с использованием парсера - PullRequest
0 голосов
/ 20 мая 2018

У меня есть две полиномиальные функции.P = 3x ^ 2 + 2x + 7 Q = 5x ^ 2 + 2x ^ 2 + x Как я могу выполнить сложение над этими полиномами, используя парсер на языке питона.?

1 Ответ

0 голосов
/ 22 мая 2018

Это грубая презентация.Надеюсь, за этим не так уж сложно следить.

Начните с одного из ваших полиномов и отбросьте пробелы для облегчения обработки строк.Используйте первое регулярное выражение для определения «имени» многочлена (P) и каждого его члена для дальнейшей обработки.Теперь используйте второй regex.sub, чтобы поместить знак умножения перед переменной в полиномиальном члене, если это необходимо.Используйте обычную замену строки, чтобы заменить каретки на «**».

Превратить список в строку.Я действительно поставил знак равенства, но в этот момент я понял, что мне действительно не нужно или не нужно имя полинома для целей преобразования в sympy.

Последний шаг состоял в том, чтобы использовать sympify, чтобы ввести многочлен для sympy, и дать ему имя, P. Добавление многочленов в sympy довольно просто.

>>> import regex
>>> s = 'P = 3x^2 + 2x + 7'.replace(' ', '')
>>> poly = []
>>> for term in regex.findall(r'[+-]?\d*\w+\^?\d*', s):
...     term = regex.sub(r'(\d*)([A-Za-z]\w*)(.*)', r'\1*\2\3', term)
...     term = term.replace('^', '**')
...     poly.append(term)
... 
>>> poly
['*P', '3*x**2', '+2*x', '+7']
>>> poly[0]=poly[0][1:]+'='
>>> poly = ''.join(poly)
>>> poly
'P=3*x**2+2*x+7'
>>> from sympy import *
>>> P =sympify(poly[2:])
>>> P
3*x**2 + 2*x + 7
...