Skip to main content
 首页 » 编程设计

python之如何在 python 中替换数学方程式中的值

2025年05月04日15zhujiabin

我从数据库中获取字典形式的数据:

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

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

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

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

注意:人们应该知道字典中的值是随机出现的。

请您参考如下方法:

在之前的 sympy 答案的基础上,这里有一种方法,它在 in_dict 变量的大小和内容方面是动态的。最大的一步是将 sympy 符号(x、y、z 的 python 变量)映射到它们通过 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