#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:
.
(Это сделано с 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()
, он решает систему уравнений.