迷失于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,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 作为参数来解决该系统:

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],y))

{?:13.7528571428571,?:19.0471428571429}

我发现您已经定义了两次变量:在subs方法的开头ang中。
当您编写solve()时,它可以求解方程组。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...