HOWTO · Python

Python 행렬식

이 튜토리얼은 Python에서 정사각 행렬의 행렬식을 찾는 방법을 보여줍니다.

이 페이지의 내용

행렬식은 정사각 행렬, 즉 행과 열의 수가 같은 행렬에 연결된 스칼라입니다. 2×2 행렬 [[7, 5], [2, 4]]의 경우 (7 × 4) − (5 × 2) 공식을 사용하면 행렬식 18을 얻을 수 있습니다. Python에서 NumPy는 수치 배열에 편리한 선택이고, SymPy는 정수 및 기호 계산을 정확하게 유지할 수 있습니다. 아래 예제는 동일한 2×2 및 3×3 행렬에 두 라이브러리를 모두 사용하므로 계산에 맞는 접근 방식을 선택할 수 있습니다.

numpy.linalg.det()를 사용해 Python에서 정사각 행렬의 행렬식 계산하기

프로그램을 실행할 Python 환경에 python -m pip install numpy를 사용해 NumPy를 설치합니다. 이 명령은 python으로 호출되는 인터프리터에 패키지를 설치합니다. 노트북이나 가상 환경에서는 해당 명령이 코드를 실행하는 환경과 동일한 환경을 대상으로 하는지 확인하세요. 전체 예제는 NumPy를 임포트하고, 정사각 배열 두 개를 만들고, 각 배열에 대해 numpy.linalg.det()를 호출합니다. 이 API는 배열과 같은 행렬을 입력으로 받는 함수입니다. 이 예제는 실행 가능한 코드로 제공되지만, 그에 대한 런타임 출력은 캡처되지 않았습니다.

import numpy as np

matrix_2x2 = np.array([[7, 5], [2, 4]])
matrix_3x3 = np.array([[7, 5, 3], [2, 4, 1], [5, 8, 6]])

print("2x2 determinant:", np.linalg.det(matrix_2x2))
print("3x3 determinant:", np.linalg.det(matrix_3x3))

이 항목들의 정확한 수학적 결과는 18과 65입니다. NumPy는 부동소수점 연산으로 계산하므로, 출력된 표현은 정확한 정수와 약간의 정밀도 차이를 보일 수 있습니다. 이는 수치 계산에서 예상되는 현상이며, 그 자체로 행렬이나 계산이 잘못되었음을 의미하지는 않습니다. 이후 연산이 반환된 정밀도에 의존한다면 그 정밀도를 유지하세요. 표시에 맞게 반올림하는 것은 애플리케이션의 허용 오차가 이를 뒷받침할 때만 수행하세요. 중간 결과를 반올림하면 이후 계산에 영향을 줄 수 있습니다. 입력값이 측정값이나 근사값이라면 행렬식 역시 출력되는 자릿수와 관계없이 근사값입니다.

NumPy는 행렬이 이미 배열이거나 수치 선형 대수를 다룰 때 유용합니다. 이 함수는 다양한 크기의 정사각 행렬을 허용하며, NumPy는 행렬 배치에 대해서도 연산할 수 있습니다. 이 예제에서는 입력과 결과를 쉽게 비교할 수 있도록 예제를 하나의 2×2 배열과 하나의 3×3 배열로 제한합니다. 행렬식은 정사각 행렬에 대해서만 정의되므로, 이 연산을 선택하기 전에 각 행과 열의 수가 일치하는지 확인하세요.

SymPy를 사용해 Python에서 정사각 행렬의 행렬식 계산하기

이 예제의 Python 환경에 python -m pip install sympy로 SymPy를 설치합니다. NumPy와 마찬가지로, 코드를 실행할 인터프리터와 환경을 사용하세요. SymPy는 입력을 Matrix 객체로 나타내고 det() 메서드를 통해 결과를 계산합니다. 이 예제는 NumPy 프로그램과 동일한 항목을 반복하므로 라이브러리의 동작을 쉽게 비교할 수 있습니다. 이 예제는 실행 가능한 코드로 제공되지만, 그에 대한 런타임 출력은 캡처되지 않았습니다.

import sympy as sp

matrix_2x2 = sp.Matrix([[7, 5], [2, 4]])
matrix_3x3 = sp.Matrix([[7, 5, 3], [2, 4, 1], [5, 8, 6]])

print("2x2 determinant:", matrix_2x2.det())
print("3x3 determinant:", matrix_3x3.det())

정수 항목의 경우 SymPy는 이 예제들에 대해 부동소수점 근사값 대신 정확한 정수 값을 반환합니다. Matrix.det()는 SymPy 행렬에서 행렬식을 얻는 데 사용되는 메서드입니다. 소문자 sympy 표기는 Python 임포트에 속하고, 본문에서의 라이브러리 이름은 SymPy입니다. 기호 변수로 행렬을 구성하고 결과에 식을 유지할 수도 있으며, 이는 특정 값을 대입하기 전에 공식을 도출할 때 유용합니다.

정확한 산술이나 기호식이 중요할 때는 SymPy를 선택하고, 수치 배열과 부동소수점 선형 대수에는 NumPy를 선택하세요. 두 예제 모두 정확한 결과가 18과 65인 작은 행렬을 사용하므로, 입력 항목이 의도한 행 순서대로 되어 있는지 확인하는 간단한 방법도 됩니다. 이 라이브러리들은 서로 다른 계산 모델을 제공합니다. SymPy는 가능할 때 정확한 형태를 유지하고, NumPy는 수치 작업용으로 설계되었습니다. 결과가 어떻게 사용될지를 기준으로 선택하고, 이후 계산에 충분한 정밀도를 유지하세요.