SymPy-솔버

기호 = 및 ==는 Python에서 할당 및 등호 연산자로 정의되므로 기호 방정식을 공식화하는 데 사용할 수 없습니다. SymPy는 방정식을 설정하는 Eq () 함수를 제공합니다.

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> Eq(x,y)

위의 코드 스 니펫은 아래 표현식에 해당하는 출력을 제공합니다.

x = y

x = y는 xy = 0 인 경우에만 가능하므로 위 방정식은 다음과 같이 쓸 수 있습니다.

>>> Eq(x-y,0)

위의 코드 스 니펫은 아래 표현식에 해당하는 출력을 제공합니다.

x − y = 0

SymPy의 솔버 모듈은 프로토 타입이 다음과 같은 soveset () 함수를 제공합니다.

solveset(equation, variable, domain)

도메인은 기본적으로 S.Complexes입니다. solveset () 함수를 사용하여 다음과 같이 대수 방정식을 풀 수 있습니다.

>>> solveset(Eq(x**2-9,0), x)

다음 출력을 얻습니다-

{−3, 3}

>>> solveset(Eq(x**2-3*x, -2),x)

위의 코드 스 니펫을 실행 한 후 다음 출력을 얻습니다.

{1,2}

solveset의 출력은 솔루션의 FiniteSet입니다. 솔루션이 없으면 EmptySet이 반환됩니다.

>>> solveset(exp(x),x)

위의 코드 스 니펫을 실행 한 후 다음 출력을 얻습니다.

$\varnothing$

일차 방정식

선형 방정식을 풀려면 linsolve () 함수를 사용해야합니다.

예를 들어, 방정식은 다음과 같습니다.

xy = 4

x + y = 1

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))

위의 코드 스 니펫을 실행 한 후 다음 출력을 얻습니다.

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

linsolve () 함수는 행렬 형식으로 표현 된 선형 방정식을 풀 수도 있습니다.

>>> a,b=symbols('a b') 
>>> a=Matrix([[1,-1],[1,1]]) 
>>> b=Matrix([4,1]) 
>>> linsolve([a,b], (x,y))

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

비선형 방정식

이를 위해 nonlinsolve () 함수를 사용합니다. 이 예에 대한 방정식-

a 2 + a = 0 ab = 0

>>> a,b=symbols('a b') 
>>> nonlinsolve([a**2 + a, a - b], [a, b])

위의 코드를 실행하면 다음과 같은 결과가 나옵니다.

$\lbrace(-1, -1),(0,0)\rbrace$

미분 방정식

먼저 cls = Function을 symbols 함수에 전달하여 정의되지 않은 함수를 만듭니다. 미분 방정식을 풀려면 dsolve를 사용하십시오.

>>> x=Symbol('x') 
>>> f=symbols('f', cls=Function) 
>>> f(x)

위의 코드 스 니펫을 실행 한 후 다음 출력을 얻습니다.

f(x)

여기서 f (x)는 평가되지 않은 함수입니다. 그 파생물은 다음과 같습니다-

>>> f(x).diff(x)

위의 코드 스 니펫은 아래 표현식에 해당하는 출력을 제공합니다.

$\frac{d}{dx}f(x)$

먼저 다음 미분 방정식에 해당하는 Eq 객체를 생성합니다.

>>> eqn=Eq(f(x).diff(x)-f(x), sin(x)) 
>>> eqn

위의 코드 스 니펫은 아래 표현식에 해당하는 출력을 제공합니다.

$-f(x) + \frac{d}{dx}f(x)= \sin(x)$

>>> dsolve(eqn, f(x))

위의 코드 스 니펫은 아래 표현식에 해당하는 출력을 제공합니다.

$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$