Python을 사용하여 대수 방정식 풀기
-
SymPy
패키지의solve()
메서드를 사용하여 하나의 변수에서 대수 방정식 풀기 -
SymPy
패키지를 사용하여 여러 변수의 대수 방정식 풀기 - 두 개의 다중 변수에서 대수 방정식 풀기
- 세 개의 다중 변수에서 대수 방정식 풀기
Python에는 SymPy
라는 기호 수학용 라이브러리가 있습니다. 이 라이브러리에는 행렬, 미적분, 기하학, 이산 수학, 적분, 암호학, 대수학 등과 같은 복잡한 수학 문제 및 개념을 해결하기 위한 유틸리티가 포함되어 있습니다.
이 라이브러리를 사용하여 대수 방정식을 풀 수 있습니다. 이 기사에서는 SymPy
를 사용하여 Python에서 대수 방정식을 푸는 방법을 보여줍니다.
다음은 기계에 SymPy
모듈을 설치할 수 있는 몇 가지 방법입니다.
pip
패키지 관리자를 사용하여 Sympy
설치
pip
를 사용하여 SymPy
패키지를 설치하려면 다음 명령을 사용하십시오.
pip install sympy
또는
pip3 install sympy
Anaconda를 사용하여 Sympy
설치
Anaconda는 기본적으로 환경에 SymPy
라이브러리를 포함하는 무료 Python 배포판입니다. 다음 명령을 사용하여 기존 버전을 업데이트할 수 있습니다.
conda update sympy
위에서 논의한 방법과 SymPy
라이브러리를 설치하는 데 사용할 수 있는 다른 방법에 대한 자세한 개요를 보려면 여기 공식 문서를 참조하십시오.
SymPy
패키지의 solve()
메서드를 사용하여 하나의 변수에서 대수 방정식 풀기
SymPy
라이브러리에는 대수 방정식을 풀 수 있는 solve()
함수가 있습니다. 이 함수는 다음과 같은 주요 인수를 허용합니다.
f
: 대수 방정식.symbols
: 방정식을 풀어야 하는 변수입니다.dict
: 솔루션 매핑 목록을 반환하기 위한 부울 플래그입니다.set
: 기호 목록 및 솔루션 튜플 집합에 대한 부울 플래그입니다.check
: 대수식에서 얻은 솔루션을 테스트하기 위한 부울 플래그입니다.minimal
: 솔루션의 빠르고 최소한의 테스트를 위한 부울 플래그입니다.
이제 몇 가지 간단한 이론이 끝났으므로 이 solve()
방법을 사용하여 몇 가지 예를 통해 대수 방정식을 푸는 방법을 알아보겠습니다. 동일한 내용은 다음 코드를 참조하십시오.
from sympy.solvers import solve
from sympy import Symbol
x = Symbol("x")
print(solve(x ** 2 - 1, x))
print(solve(x ** 3 + x ** 2 + x + 1, x))
print(solve(x ** 3 - 0 * x ** 2 + 4 * x - 5, x))
출력:
[-1, 1]
[-1, -i, i]
[1, -1/2 - √19i / 2, -1/2 + √19i / 2]
SymPy
패키지를 사용하여 여러 변수의 대수 방정식 풀기
여러 변수의 대수 방정식을 풀려면 여러 방정식이 필요합니다.
예를 들어, 두 개의 변수에서 대수 방정식을 풀어야 하는 경우 최소한 두 개의 방정식이 필요합니다. 3개의 변수로 대수 방정식을 풀려면 이러한 방정식이 3개 이상 필요합니다.
이러한 방정식을 풀려면 SymPy
모듈의 symbols
, Eq
, solve
라는 세 가지 유틸리티가 필요합니다.
symbols
함수는 변수 문자열을 Symbol
클래스의 인스턴스로 변환합니다.
Eq
클래스는 두 객체, 특히 표현식 간의 동등한 관계를 나타냅니다. 예를 들어, 방정식 x + y = 3
이 있는 경우 x + y
와 3
은 두 객체 또는 표현식입니다. x + y - 5 = x + 6
의 경우 x + y - 5
및 x + 6
은 두 개체입니다.
그리고 solve()
메서드는 위의 두 가지를 사용하여 방정식을 풉니다.
몇 가지 관련 예제를 통해 이러한 유틸리티를 사용하여 2개 및 3개 변수의 대수 방정식을 푸는 방법을 살펴보겠습니다.
두 개의 다중 변수에서 대수 방정식 풀기
위에서 논의한 유틸리티를 사용하여 두 값의 대수 방정식을 푸는 방법을 이해하기 위해 다음 두 가지 예를 고려할 것입니다.
예 1:
x + y = 5
x - y = 5
예 2:
2 * x + 4 * y = 10
4 * x + 2 * y = 30
첫 번째 예는 다음 Python 코드를 참조하세요.
from sympy import symbols, Eq, solve
x, y = symbols("x y")
equation_1 = Eq((x + y), 5)
equation_2 = Eq((x - y), 5)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
solution = solve((equation_1, equation_2), (x, y))
print("Solution:", solution)
출력:
Equation 1: Eq(x + y, 5)
Equation 2: Eq(x - y, 5)
Solution: {x: 5, y: 0}
두 번째 예제는 다음 Python 코드를 참조하세요.
from sympy import symbols, Eq, solve
x, y = symbols("x y")
equation_1 = Eq((2 * x + 4 * y), 10)
equation_2 = Eq((4 * x + 2 * y), 30)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
solution = solve((equation_1, equation_2), (x, y))
print("Solution:", solution)
출력:
Equation 1: Eq(2*x + 4*y, 10)
Equation 2: Eq(4*x + 2*y, 30)
Solution: {x: 25/3, y: -5/3}
세 개의 다중 변수에서 대수 방정식 풀기
위에서 논의한 유틸리티를 사용하여 세 값의 대수 방정식을 푸는 방법을 이해하기 위해 다음 두 가지 예를 고려할 것입니다.
예 1:
x + y + z = 5
x - y + z = 5
x + y - z = 5
예 2:
2 * x - 4 * y + 6 * z = 10
4 * x + 2 * y + 6 * z = 30
4 * x + 2 * y - 10 * z = 50
첫 번째 예는 다음 Python 코드를 참조하세요.
from sympy import symbols, Eq, solve
x, y, z = symbols("x y z")
equation_1 = Eq((x + y + z), 5)
equation_2 = Eq((x - y + z), 5)
equation_3 = Eq((x + y - z), 5)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
print("Equation 3:", equation_3)
solution = solve((equation_1, equation_2, equation_3), (x, y, z))
print("Solution:", solution)
출력:
Equation 1: Eq(x + y + z, 5)
Equation 2: Eq(x - y + z, 5)
Equation 3: Eq(x + y - z, 5)
Solution: {x: 5, z: 0, y: 0}
두 번째 예제는 다음 Python 코드를 참조하세요.
from sympy import symbols, Eq, solve
x, y, z = symbols("x y z")
equation_1 = Eq((2 * x - 4 * y + 6 * z), 10)
equation_2 = Eq((4 * x + 2 * y + 6 * z), 30)
equation_3 = Eq((4 * x + 2 * y - 10 * z), 50)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
print("Equation 3:", equation_3)
solution = solve((equation_1, equation_2, equation_3), (x, y, z))
print("Solution:", solution)
출력:
Equation 1: Eq(2*x - 4*y + 6*z, 10)
Equation 2: Eq(4*x + 2*y + 6*z, 30)
Equation 3: Eq(4*x + 2*y - 10*z, 50)
Solution: {x: 37/4, z: -5/4, y: 1/4}