我从数据库中以字典的形式获取数据,如下所示:

in_dict = {"x":2,"y":"x+2","z":"y+2"}


我以字符串形式得到我的数学方程:

eqn = "(x+2)*y/z"


在方程中替换值并给出最终解的最简单方法是什么?

注意:请注意,字典中的值是随机产生的。

最佳答案

在以前的sympy答案的基础上,这是一种相对于in_dict变量的大小和内容是动态的方法。最大的步骤是将sympy符号(x, y, z的python vars)映射到通过您的in_dict传递的符号表示形式

import sympy

def eval_eqn(eqn,in_dict):
    subs = {sympy.symbols(key):item for key,item in in_dict.items()}
    ans = sympy.simplify(eqn).evalf(subs = subs)

    return ans


原始输入:

in_dict = {"x":2,"y":"x+2","z":"y+2"}
eqn = "(x+2)*y/z"
print(eval_eqn(eqn,in_dict))


2.66666666666667

一组不同的输入:

in_dict = {"a":2, "b": 4, "c":"a+2*b","d":"4*b + c"}
eqn = "c**2 + d**2"
print(eval_eqn(eqn,in_dict))


776.000000000000

关于python - 如何在python中的数学方程式中替换值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48017962/

10-12 17:13
查看更多