我有3个方程:
165⋅2⋅1 = 0.310⋅2⋅+ 0.517⋅2⋅
165⋅2 = 0.173⋅+ 0.517⋅
1 + 2 = 1.0
我将前两个方程重组为Y1和Y2,然后将它们输入到python中:
import sympy as sp
n,Y1,Y2 = sp.symbols('n Y1 Y2')
Y1= ((.310*2*n)+(.517*2*n))/(165*2)
Y2= ((.173*n)+(.517*n))/(165)
print ("Y1=", Y1,"Y2=", Y2,"n=", n)
我的第一个问题是我设置的代码正确吗?还是应该将Y变量移到方程式的右侧,并将其标记为方程式1和2?
其次,当我尝试输入第三个方程式时,出现了“语法错误:无法分配给运算符”。如何将第三个方程式纳入代码中?它会更像一个“极限”吗(我知道这不是极限,但我现在无法想到它的名字)
答案 0 :(得分:0)
您可以同时传递所有三个方程,并使用solve
直接获得三个变量,如下所示:传递三个方程,其中在Eq
中,您写方程的左侧和右侧等式(反之亦然)。 solve
的第二个参数是要求解的变量的列表。
from sympy import *
n, Y1, Y2 = symbols('n Y1 Y2')
solve([Eq(((.310*2*n)+(.517*2*n))/(165*2), Y1), Eq(((.173*n)+(.517*n))/165, Y2),
Eq(Y1+Y2, 1)], [n, Y1, Y2])
> {n: 108.767303889255, Y1: 0.545154911008569, Y2: 0.454845088991430} # Answer