用运算求解代数方程

时间:2019-04-30 09:10:26

标签: python numpy math sympy

使用sympy或numpy解决以下方程式的实际解决方案吗?到目前为止,我已经尝试过numpy和sympy。

from sympy import *
from sympy.solvers.solveset import linsolve

sig = symbols(['sig'])

result = linsolve([(sig * -3) + ((1 - sig) * 1) == (sig * 2) + ((1 - sig) * 0)], sig)

此代码返回错误: TypeError: unsupported operand type(s) for -: 'int' and 'list'

2 个答案:

答案 0 :(得分:1)

我认为您为linsolve使用的语法错误:

sig = symbols(['sig'])

result = linsolve([(sig * -3) + ((1 - sig) * 1) - (sig * 2) - ((1 - sig) * 0)], sig)

答案 1 :(得分:0)

假设您只对使用sympy或numpy求解方程式感兴趣,而不必将自己限制为linsolve,那么这就是工作代码。

from sympy import *
sig = symbols('sig')
eq = Eq((sig * (-3)) + ((1 - sig) * 1), (sig * 2) + ((1 - sig) * 0))
solveset(eq, sig)

您的代码存在一个问题,即symbol(['sig'])的返回值不是Sympy符号对象,而是包含一个此类对象的python list ,因此您不能使用它来构建Sympy表达式。