Потерялся с сочувствием решая

#python #sympy

Вопрос:

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

 x y == a
a = 32.8
b = 19.3
c = 82
d = 12
e = 8
f = 69
f == ((((b e) x)*c) (d*y))/(b x y)
 

Используя sympy, я написал следующий код:

 from sympy import symbols, Eq, solve, init_printing

a,b,c,d,e,f,x,y = symbols('a b c d e f x y')
init_printing(use_unicode=True)
    
expr = ((((b e) x)*c) (d*y))/(b x y)

#I think this is x in terms of y
xiny = solve(expr.subs([(b,19.3), (c,82),(d,12),(e,8),(f,71)]),x)

# and I think this is y in terms of x
print(solve(eq.subs(a,32.8),y))

#But how to sub them in and continue?
Eq(f,expr)
eq = Eq(x y,a)
solution = solve((eq.subs(a,32.8),expr.subs([(b,19.3), (c,82),(d,12),(e,8),(f,71)]) ),(x,y))
print(solution)
 

Используя sympy, я думаю, что мне удалось найти x в терминах y и y в терминах x, но я не могу связать все это вместе. Я получаю отрицательные числа, которые для меня не имеют смысла(особенно для томов, которые являются прецедентом использования). Как лучше всего подойти к этому, тем более что переменные a-f будут вводиться пользователем. Любая помощь будет признательна.

Комментарии:

1. Добро пожаловать в SO @brraap. Чтобы другие пользователи могли вам помочь, лучше всего добавить сюда минимальный рабочий пример вашего кода.

Ответ №1:

Я отказался от синтаксиса симпатии, чтобы сосредоточиться на математической задаче, поэтому ваша система уравнений, которую вы хотите решить, такова :

x y = 32.8

((19,3 8 x)*82 12 лет)/(19,3 x y) = 69

И я получил решение x = 9627/700 и y = 13333/700

Если это решение неверно, то я предполагаю, что с уравнением есть проблема, или, конечно, я могу решить его неправильно

И в вашем коде сочувствия не должно ли это быть больше похоже на это :

 expr = ((((b e) x)*c) (d*y))/(b x y)
eq1 = Eq(f,expr)
eq2 = Eq(x y,a)
solution = solve((eq2.subs(a,32.8),eq1.subs([(b,19.3), (c,82),(d,12),(e,8),(f,71)]) ),(x,y))
print(solution)
 

Ответ №2:

Интересный… Давайте посмотрим. Как я понял, вам нужно решить эту систему с параметром as:

SoE.
(Это сделано с https://codecogs.com/latex/eqneditor.php. Может быть, это поможет вам объяснить ваши задачи в будущем)

И код:

 from sympy import *

a,b,c,d,e,f,x,y = symbols('a b c d e f x y')
init_printing(use_unicode=True)

a = 32.8 # you can put here a input() command
b = 19.3
c = 82
d = 12
e = 8
f = 69

# Note that "==" operator always returns bool, so this row does nothing
f == (((b e x)*c) (d*y))/(b x y) 

expr = ((((b e) x)*c) (d*y))/(b x y)

eq1 = Eq(f,expr)

eq2 = Eq(x y,a)

solve([eq1, eq2], (x,y))

{𝑥:13.7528571428571, 𝑦:19.0471428571429}
 

Я обнаружил, что вы определили свои переменные дважды: в начале ang в методе subs.
Когда вы пишете solve() , он решает систему уравнений.