У меня есть несколько выражений, которые я читаю из файла, и все они имеют одну общую переменную.Я хочу пройтись по каждому уравнению и написать эту переменную в терминах других переменных и новой константы.Например, мои уравнения выглядят так:
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, которое я написал в начале, я хочу всегда выбирать x1 при вызове variable1 = list(eq1.free_symbols)[0]
(или эквивалентной функции).Спасибо!