繁体   English   中英

从表达式sympy中获取变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM