[python] SymPy를 사용하여 텐서 연산하기

SymPy는 파이썬 기반의 심볼릭 수학 라이브러리로, 행렬 및 텐서 연산과 같은 수학적 작업을 수행하는 데 사용됩니다. 이번 포스트에서는 SymPy를 사용하여 텐서 연산을 수행하는 방법에 대해 알아보겠습니다.

SymPy 설치하기

먼저, SymPy를 설치해야 합니다. 다음 명령을 사용하여 SymPy를 설치할 수 있습니다.

pip install sympy

텐서 생성하기

SymPy에서 텐서를 생성하기 위해 IndexedBase 클래스를 사용합니다. IndexedBase 클래스의 인스턴스를 생성할 때 인덱스의 이름을 지정해야 합니다. 아래 예제에서는 3차원 텐서를 T라는 이름으로 생성합니다.

from sympy import symbols, IndexedBase

i, j, k = symbols('i j k')
T = IndexedBase('T')

# 3차원 텐서 T 생성
T_tens = T[i, j, k]

텐서 연산하기

SymPy는 텐서 연산을 위한 다양한 함수와 메서드를 제공합니다. 예를 들어, 텐서를 더하고 곱하는 등의 연산을 수행할 수 있습니다.

텐서 더하기

Add 함수를 사용하여 텐서를 더할 수 있습니다. 아래 예제는 두 개의 텐서를 더하는 예제입니다.

from sympy import Add

# 두 개의 텐서 더하기
T_sum = Add(T[i, j, k], T[i, j, k])

텐서 곱하기

Mul 함수를 사용하여 텐서를 곱할 수 있습니다. 아래 예제는 두 개의 텐서를 곱하는 예제입니다.

from sympy import Mul

# 두 개의 텐서 곱하기
T_mult = Mul(T[i, j, k], T[i, j, k])

결과 출력하기

SymPy에서 생성한 텐서나 연산 결과는 pprint 함수를 사용하여 아름답게 출력할 수 있습니다. 아래 예제는 텐서 연산 결과를 출력하는 예제입니다.

from sympy import pprint

print("3차원 텐서 T:")
pprint(T_tens)

print("두 개의 텐서 더하기 결과:")
pprint(T_sum)

print("두 개의 텐서 곱하기 결과:")
pprint(T_mult)

이렇게 SymPy를 사용하여 텐서 연산을 수행할 수 있습니다. SymPy는 행렬 및 텐서 연산 외에도 다양한 수학적 작업을 지원하므로, 심볼릭 수학 계산을 필요로 할 때 유용하게 사용할 수 있습니다.

참고 자료