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

how to use python sympy to solve for 3 unknowns with 3 equations

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

其次,当我尝试输入第 3 个方程时得到了 "syntax error: can't assign to operator"。我将如何在代码中加入第三个方程式?它会更像 "limit"(我知道这不是限制,但我现在想不出它叫什么)

您可以同时传递所有三个方程并直接使用 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