如何使用python sympy通过3个方程式求解3个未知数

时间:2018-09-30 18:19:22

标签: python sympy symbolic-math

我有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?

其次,当我尝试输入第三个方程式时,出现了“语法错误:无法分配给运算符”。如何将第三个方程式纳入代码中?它会更像一个“极限”吗(我知道这不是极限,但我现在无法想到它的名字)

1 个答案:

答案 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