[英]Get a variable out of an expression sympy
我有几个从文件中读取的表达式,它们都有一个共同的变量。 我想遍历每个方程式,并根据其他变量和新常数编写此变量。 例如,我的方程式如下所示:
x1**(-1.0)*x2
x1**(-1.0)*y1
x1**(-1.0)*y2
我想这样做:
x1 = x2/a1
x1 = y1/a2
x1 = y2/a3
我尝试执行此操作的方式(例如第一个)是这样的:
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
eq1 = "x1**(-1.0)*x2" # I normally read this from a file
a1 = symbols('a1')
eq1 = parse_expr(eq1)
variable1 = list(eq1.free_symbols)[0]
print(variable1)
eq1 = solve(eq1-a1,variable1)
eq1 = eq1[0]
print(eq1)
这是我通过连续运行5次完全相同的代码得到的输出:
x1
x2/a1
x2
a1*x1
x2
a1*x1
x1
x2/a1
x2
a1*x1
所以问题是,当我尝试在表达式中选择第一个变量variable1 = list(eq1.free_symbols)[0]
,第一个变量并不总是相同的(有时是x1,有时是x2),即使我使用的表情一直都是一样的。 它似乎只是随机的,我真的希望不是。 有人可以帮我弄清楚如何始终选择所需的变量。 因此,对于我一开始写的3表达式,我想在调用variable1 = list(eq1.free_symbols)[0]
(或等效函数)时始终选择x1。 谢谢!
如果您的variable1
始终是x1
,那么您应该能够制作一个符号x1
并使用它。
variable1 = sympy.symbol('x1')
`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.