我把它作为一个字符串来求解。我不知道等式中有多少个符号,也不知道它们的签名是什么。典型的符号可以是“mm”、“cm”、“x”或类似的符号。该函数应该返回某种数组/json以及已求解的等式。在
它应该是怎样的一个小例子:
solve("x/2=4")
>> ["x=8"]
>>
solve("x + 2 = y - 1")
>> ["x=y-3", "y=x+3"]
我尝试使用sypy模块来实现这一点,但是我没有找到一种方法来输入上面这样的动态字符串。SymPy似乎只接受“硬编码”符号。在
注意:字符串来自一个“系统argv“-参数。在
Tags:
SymPy可以用}。因此需要进行一些预处理:用
sympify
解析字符串,但它的表达式格式是Eq(x/2, 4)
,而不是{Eq(
)
将字符串括起来,并用逗号替换“=”。在以及
^{pr2}$在后一种情况下,SymPy选择了一个变量来求解。要选择它应该是哪一个,可以提供一个符号:
或者,要解决每个符号:
返回
[[{y: x + 3}], [{x: y - 3}]]
。列表是嵌套的,因为每个符号可能会出现多个解决方案。如有必要,展开嵌套列表。在solve
的选项list=True
和{答案很可能是两个不同的部分。在
解析:
解析意味着将一些输入转换成可用的输出,在您的例子中,输入是一些字符串,输出是sympy可以处理的东西。例如,一个简单的解析步骤是通过执行}等典型变量名的出现。在
int(your_string)
将字符串转换为整数。在你的例子中,你应该迭代你的字符串,找到变量,单位等,例如通过比较字典或字符串列表。解析任意输入是相当困难的,因此最好的方法是从一组小的选项开始,例如,通过与列表variables=['x','y','z']
比较,在字符串中搜索x
、y
和{计算
解析完成后,只需将所有内容插入sympy使用的数字处理/解算器。在
为了了解这样一个系统在正确操作的情况下如何工作,您可以看看wolframalpha。他们做了一个相当好的解析/自然语言处理,并试图从那里猜出要做什么。在
相关问题 更多 >
编程相关推荐