Получить переменную из выражения sympy - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть несколько выражений, которые я читаю из файла, и все они имеют одну общую переменную.Я хочу пройтись по каждому уравнению и написать эту переменную в терминах других переменных и новой константы.Например, мои уравнения выглядят так:

 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] (или эквивалентной функции).Спасибо!

1 Ответ

0 голосов
/ 12 февраля 2019

Если ваш variable1 всегда x1, вы можете просто сделать символ x1 и использовать его.

variable1 = sympy.symbol('x1') `

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...