繁体   English   中英

我将如何解析多项式?

[英]How would I parse a polynomial?

我想知道从字符串解析方程式的最佳方法是什么? 例如,字符串'2x^2+7x-3'是一个多项式表达式。

我想这样做的方式是有 3 个变量 - a、b 和 c - 它们分别保存 x^2 项、x 项以及最后的整数的系数。 系数应包括相应的符号,因为它们可以是正数或负数。

你可以使用sympy

进口同情

my_poly = "2*x**2+7*x-3"
x = sympy.Symbol('x')
my_poly = sympy.polys.polytools.poly_from_expr(my_poly)[0]
a, b, c = poly.coeffs()

边注。 my_poly中的表达式必须遵循表达式的 python 语法。 如果您的字符串不正确,您可以使用字符串操作技术来更正它们。

import re

eqn = '2x^2+7x-3'

# add a leading 1 where necessary
eqn = '1'+eqn if not eqn[0].isdigit() else eqn

#remove all powers
no_carets = re.sub(r"(\^\d+)", "", eqn)

# get numeric coefficients
raw_coeffs = re.findall(r'[\d\.\-\+]+', no_carets)

# add a 1 to lone signs and convert coefficients to float
coeffs = [float(x+'1') if len(x) is 1 and not x.isdigit() else float(x) for x in raw_coeffs] 

编辑:请注意,此解决方案附带警告(仅适用于系数的数值,可能会因缺少幂而产生误导性结果等),因此在这种情况下您必须谨慎行事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM