Recent posts

곱이 최대가 되도록 주어진 수를 분할하는 방법

나는 초등학교 때 수학 학원에 다녔다. 이때는 교과과정 선행학습 대신 사고력 문제와 퍼즐 등을 위주로 공부했다. 단골 주제는 정수론과 조합론이었다. 이때는 삼각함수, 로그함수나 미적분 같은 것은 전혀 몰랐지만, 정수론과 조합론 실력은 글을 쓰고 있는 지금의 나보다도 나았을 것으로 ...

SciPy 패키지에서 발견한 황당한 버그

크기가 매우 큰 희소행렬(sparse matrix)에 대해 SciPy 패키지의 scipy.sparse.linalg.svds 함수를 사용하여 특이값 분해(SVD)를 계산하던 중 이상한 버그를 발견했다. 행렬의 크기가 $(65536, 65536)$이었는데, 함수는 입력된 행렬이 비어 ...

왼쪽 역함수와 오른쪽 역함수

어떤 함수의 역함수는, 원래의 함수가 하는 일을 거꾸로 되돌리는 함수이다. 즉 함수 $f$의 역함수를 $g$라고 했을 때, $f(x) = y$라면 $g(y) = x$이며, 이것의 역도 성립한다.

아인슈타인 표기법과 einsum 함수

아인슈타인 표기법(Einstein notation)은 첨자가 있는 값들의 합을 편리하게 나타내는 표기 방법이다. 이 표기법에 따라 계산하는 함수인 einsum은 NumPy, PyTorch 등의 파이썬 라이브러리에서 지원한다. 이 함수를 사용하여 복잡한 연산을 간결하게 나타낼 수 있...