SymPy를 사용하여 벡터 대각화 문제를 해결하는 방법
벡터 대각화는 선형 대수학에서 중요한 문제 중 하나입니다. 이는 주어진 행렬의 고유값과 고유벡터를 찾는 것을 의미합니다. SymPy라는 파이썬 라이브러리를 사용하면 벡터 대각화 문제를 해결할 수 있습니다.
SymPy는 심볼릭 계산 패키지로, 수학적 식과 표현을 처리하는 데 사용됩니다. 다음은 SymPy를 사용하여 벡터 대각화 문제를 해결하는 방법에 대한 예제 코드입니다.
예제 코드
import sympy as sp
# 행렬과 심볼릭 변수 생성
A = sp.Matrix([[3, 1], [1, 2]])
x = sp.symbols('x')
eigenvalues = A.eigenvals() # 고유값 계산
eigenvectors = A.eigenvects() # 고유벡터 계산
# 고유값 및 고유벡터 출력
print("고유값:")
for eigenvalue in eigenvalues.keys():
print(eigenvalue)
print("\n고유벡터:")
for eigenvector in eigenvectors:
print(eigenvector[2][0])
# 심볼릭 변수를 대입하여 행렬 대각화
D = sp.diag(*eigenvalues.keys())
P = sp.Matrix([eigenvector[0] for eigenvector in eigenvectors]).T
AP = A * P
# 결과 출력
print("\n행렬 대각화:")
print(D)
print("\n대각화된 행렬과 고유벡터의 곱:")
print(AP)
위 코드에서, 우리는 sympy
를 sp
라는 별칭으로 임포트했습니다. 그리고 주어진 행렬 A
와 심볼릭 변수 x
를 생성합니다. eigenvals()
함수를 사용하여 고유값을 계산하고, eigenvects()
함수를 사용하여 고유벡터를 계산합니다.
그런 다음, 고유값과 고유벡터를 출력합니다. sp.diag()
함수를 사용하여 고유값을 대각행렬로 만들고, sp.Matrix()
함수를 사용하여 고유벡터를 세로로 정렬한 행렬로 만듭니다. 마지막으로, 행렬 대각화와 고유벡터의 곱을 출력합니다.
위 코드를 실행하면 주어진 행렬의 고유값과 고유벡터, 그리고 대각화된 행렬과 고유벡터의 곱을 볼 수 있습니다.
이와 같이 SymPy를 사용하면 벡터 대각화 문제를 쉽게 해결할 수 있습니다.
참고 자료
- SymPy 공식 문서: https://docs.sympy.org/latest/index.html
- SymPy GitHub 저장소: https://github.com/sympy/sympy
#python #SymPy