将类似 Math.js 的表达式转换为可运行的 Python 代码

问题描述 投票:0回答:1

我正在尝试将从 math.js (例如

2*x^2+5x-1
)获得的字符串转换为可运行的 python 函数,如下所示:

def f(x):
   return 2*(x**2)+5*x-1

我已经尝试过

sympify
模块中的
sympy

from sympy import sympify, symbols

x = symbols("x")
expression = "x**2 + 3*x-1"
print(sympify(expression).subs(x, 2))

但是,这种方法无法处理某些操作,例如

^
,并且仅返回结果。此外,我尝试使用
eval()
功能,遇到类似的问题。

python math sympy equation math.js
1个回答
0
投票

您可以将数学表达式字符串转换为

SymPy
表达式,将
^
运算符替换为
**
(Python 的求幂运算符),然后使用
f(x)
创建 Python 函数
lambdify

从 sympy 导入 sympify、符号、lambdify

x = symbols("x")
expression_str = "2*x^2 + 5*x - 1"
expression_sym = sympify(expression_str.replace("^", "**"))
f = lambdify(x, expression_sym, 'numpy')
print(f(2))  # Evaluate the function at x = 2

输出:

17
© www.soinside.com 2019 - 2024. All rights reserved.