如何在 python 中求解如下简单方程组?
x = (2/3)*y + (1/3)*0
y = (2/3)*1 + (1/3)*x
我尝试了 SymPy 但无法弄清楚。
解出了方程部分
from sympy import *
from sympy.solvers.solveset import linsolve
x, y = symbols('x, y')
linsolve([x - 2/3*y, y - 2/3 - 1/3*x ], (x, y))
输出:{(0.571428571428571, 0.857142857142857)}
类型为“sympy.sets.sets.FiniteSet”
如何仅提取 x 值并将其设置为变量?
明白了。
z = linsolve([x - 2/3*y, y - 2/3 - 1/3*x ], (x, y))
print(z.args[0][0])
最佳答案
sympy
已更新为 solve()
,用于求解线性方程组。首先使用 Eq()
方法创建方程。然后使用 solve()
求解这些方程。 linsolve()
仍然有效。
import sympy as sp
from sympy.solvers import solve
eq1= sp.Eq(x-2/3*y-1/3*0)
eq2 = sp.Eq(1/3*x-y+2/3)
output = solve([eq1,eq2],dict=True)
你的方程是这样的
x−0.666666666666667y=0
0.333333333333333x−y+0.666666666666667=0
输出:
[{x:0.571428571428571, y:0.857142857142857}]
一旦你得到输出。 output
变量类型为list
。然后取第一个索引0
,它是字典。然后将其转换为list
类型。
values = list(output[0].values())
会给你这样的输出。
[0.571428571428571, 0.857142857142857]
然后
x = values[0] #0.571428571428571
y = values[1] # 0.857142857142857
关于python - 用Python求解方程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54715366/