求解 Python 中 X 的值
Solve value for X in Python
我想从用户那里获取一个方程式并将其传递到我的数据中以获得值。我试图使用 eval 并使用逻辑来查找 exp、log 并将其替换为数学函数。但是,eval 不支持大括号或方括号。
我的方程只有一个自变量(即 y = f(x))。我目前的做法如下:
import math
x = 5
eqn = '(x**2)+(x*2)+exp(5)+exp(2)+log(2)'
if 'exp' in eqn:
eqn = eqn.replace('exp' , 'math.exp')
if 'log' in eqn:
eqn = eqn.replace('log' , 'math.log')
print(eval(eqn))
如何支持其他支架?还有比这更好的方法吗?谢谢
Python 保留 [] 和 {} 大括号用于其他用途,而不仅仅是操作顺序。您可以只使用嵌套括号来达到相同的效果。
更传统的数学符号会这样写嵌套括号:[(2+2)*4]**2
在python中,你可以只写((2+2)*4)**2
您可以像处理其他方程式元素一样转换它们:
eqn = eqn.replace('[', '(')
eqn = eqn.replace('{', '(')
eqn = eqn.replace(']', ')')
eqn = eqn.replace('}', ')')
SymPy 的 solve() 函数可用于求解包含符号数学变量的方程式和表达式。
具有一种解的方程:
当用符号数学变量定义方程时,下面的代码部分演示了 SymPy 的 solve() 函数。
from sympy import symbols, Eq, solve
y = symbols('y')
eq1 = Eq(y + 3 + 8)
sol = solve(eq1)
sol
输出:
[-11]
有两个解的方程:
如果您为 SymPy 的 solve() 函数指定关键字参数 dict=True,输出仍然是一个列表,但列表内部是一个字典,显示为哪个变量求解。
from sympy import symbols, Eq, solve
y = symbols('x')
eq1 = Eq(x*2 -5x + 6)
sol = solve(eq1, dict=True)
sol
输出:
[{x: 2}, {x: 3}]
我想从用户那里获取一个方程式并将其传递到我的数据中以获得值。我试图使用 eval 并使用逻辑来查找 exp、log 并将其替换为数学函数。但是,eval 不支持大括号或方括号。
我的方程只有一个自变量(即 y = f(x))。我目前的做法如下:
import math
x = 5
eqn = '(x**2)+(x*2)+exp(5)+exp(2)+log(2)'
if 'exp' in eqn:
eqn = eqn.replace('exp' , 'math.exp')
if 'log' in eqn:
eqn = eqn.replace('log' , 'math.log')
print(eval(eqn))
如何支持其他支架?还有比这更好的方法吗?谢谢
Python 保留 [] 和 {} 大括号用于其他用途,而不仅仅是操作顺序。您可以只使用嵌套括号来达到相同的效果。
更传统的数学符号会这样写嵌套括号:[(2+2)*4]**2
在python中,你可以只写((2+2)*4)**2
您可以像处理其他方程式元素一样转换它们:
eqn = eqn.replace('[', '(')
eqn = eqn.replace('{', '(')
eqn = eqn.replace(']', ')')
eqn = eqn.replace('}', ')')
SymPy 的 solve() 函数可用于求解包含符号数学变量的方程式和表达式。
具有一种解的方程: 当用符号数学变量定义方程时,下面的代码部分演示了 SymPy 的 solve() 函数。
from sympy import symbols, Eq, solve
y = symbols('y')
eq1 = Eq(y + 3 + 8)
sol = solve(eq1)
sol
输出:
[-11]
有两个解的方程:
如果您为 SymPy 的 solve() 函数指定关键字参数 dict=True,输出仍然是一个列表,但列表内部是一个字典,显示为哪个变量求解。
from sympy import symbols, Eq, solve
y = symbols('x')
eq1 = Eq(x*2 -5x + 6)
sol = solve(eq1, dict=True)
sol
输出:
[{x: 2}, {x: 3}]