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$