SymPy方程求解

在数学研究中,解方程首先需要确定解的范围,在SymPy中解方程也首先需要确定解的范围是实数集sympy.S.Reals或者复数集sympy.S.Complexes。定义域不同,得到的解集也是不同的。

在SymPy中使用函数sympy.solveset来求解方程的解集。

例如依次求解以下五个方程

1
2
3
4
5
6
7
8
9
10
>>> sympy.solveset(sympy.Eq(x**3,1),x,domain=sympy.S.Reals)
{1}
>>> sympy.solveset(sympy.Eq(x**3,1),x,domain=sympy.S.Complexes)
{1, -1/2 - sqrt(3)*I/2, -1/2 + sqrt(3)*I/2}
>>> sympy.solveset(sympy.exp(x),x)
EmptySet
>>> sympy.solveset(sympy.exp(x)-1,x,domain=sympy.S.Reals)
{0}
>>> sympy.solveset(sympy.exp(x)-1,x,domain=sympy.S.Complexes)
ImageSet(Lambda(_n, 2*_n*I*pi), Integers)

其中Lambda()表示函数,_n是自变量,Integers是自变量的定义域

在线性代数中,有多元一次方程组,可以使用sympy.solve()函数,例如

1
2
3
4
>>> sympy.solve([x+y-10,x-y-2],[x,y])
{x: 6, y: 4}
>>> sympy.solve([sympy.sin(x-y),sympy.cos(x+y)],[x,y])
[(-pi/4, 3*pi/4), (pi/4, pi/4), (3*pi/4, 3*pi/4), (5*pi/4, pi/4)]