问题描述
我正在以很少的数学经验和中等的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,expr.subs([(b,71)]) ),(x,y))
print(solution)
使用sympy我想我已经成功地找到了y的x和y的x,但是不能将它们结合在一起。我得到的负数对我来说没有意义(尤其是对于用例而言)。解决此问题的最佳方法是什么,尤其是a-f变量将由用户输入时。任何帮助表示赞赏。
解决方法
我已经放弃了sympy语法来关注数学问题,因此您要解决的方程组是:
x + y = 32.8
(((19.3 + 8 + x)* 82 + 12y)/(19.3 + x + y)= 69
然后我得到了x = 9627/700和y = 13333/700的解决方案
如果这个解决方案不正确,我想方程可能有问题,或者我当然可以解决它错误
在您的sympy代码中,它是否应该像这样:
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)
,
有趣...让我们看看。如我所知,您需要使用 a 作为参数来解决该系统:
。
(它是由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],y))
{?:13.7528571428571,?:19.0471428571429}
我发现您已经定义了两次变量:在subs方法的开头ang中。
当您编写solve()
时,它可以求解方程组。