使用解析器添加Python多项式

时间:2018-05-20 12:27:13

标签: python-3.x parsing polynomials

我有两个多项式函数。 P = 3x ^ 2 + 2x + 7 Q = 5x ^ 2 + 2x ^ 2 + x 如何使用python语言中的解析器对这些多项式执行加法。

1 个答案:

答案 0 :(得分:0)

这是一个粗略的演示。我希望不要太难以理解。

从一个多项式开始,并丢弃空白以便更轻松地处理字符串。使用第一个正则表达式来标识多项式(P)的“名称”及其每个术语,以便进一步处理。现在使用第二个regex.sub在多项式项中的变量前面放置一个乘法符号,如果需要的话。使用普通的字符串替换来用'**'替换插入符号。

将列表转换为字符串。我确实输入了一个等号,但此时我意识到我真的不需要或想要多项式的名称,以便转换为同情。

最后一步是使用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