我想能够解析字符串方程(等于0),然后通过使用我有权访问的变量字典来解决它们。使用SymPy来一般地解析和求解方程
例如:
s = '(x/z)-y'
eq = parse(s)
eq.solve({'x': 10, 'y': 5})
print(eq)
>>> {'z': 2}
现在我写的代码,一个月前做了这样的事情,但我无法找到它。不过我记得我使用了SymPy及其sympify函数,以及它的求解函数。我已经检查过关于这些功能的文档,但是我一直无法围绕如何让他们按照我的意愿工作。
还有一个额外的问题: 是否有可能以某种方式包装变量,以便我可以使用更多的东西而不仅仅是一封信给他们? 实例:不 '{MYVAR-42}' 的是 'x' 我能有
编辑:
好吧,我终于成功地写一些代码,做了什么,我想:
eq = sympify('(x/y)-z', locals={'x': 10, 'z': 5})
solution = solve(eq, dict=True)
print(solution)
>>> [{'z': 2}]
但我的“额外”问题依然存在。
''MYVAR-42'' - 只是解析字符串。 – aIKid
@alKid如何?如果我在包含括号的字符串上使用sympify,它会给我错误(因为它认为它是字典或其他东西)。我想出了一个解决方案:我可以用正则表达式代替所有{*}并用字母替换它们,然后在解决完成后,我可以使用替换时创建的字典将它们放回去。 – fgblomqvist