본문 바로가기

Mathematical Physics

SageMath

이 프로그램은 지난 학기 수리물리 시간에 처음으로 다루어본 프로그램이다.

http://www.sagemath.org

 

SageMath Mathematical Software System - Sage

SageMath is a free and open-source mathematical software system.

www.sagemath.org

기본적으로 무료로 사용할 수 있는 오픈-소스 수학 프로그램으로 대수학, 조합론, 미적분학, 수치해석을 포함하는 많은 수학 분야의 문제들을 해결 할 수 있는 프로그램이다.

뿐만 아니라 Jupyter Notebook에도 추가해서 쓸 수 있어서 사용하기가 매우 편리하다.

 

내가 지금 쓰고 있는 것은 9.1 버전인데 다운받지 않고 아래의 SageMathCell을 눌러도 브라우저에서 사용이 가능하다.

브라우저에서 SageMath사용하기

이번 학기에 KMOOC에서 강의하시는 서울시립대학교 수학과 박의용 교수님께서 강의에서 이 프로그램을 사용하는 방법을 브리핑을 하셔서, 모니터링단 활동 내용에 들어가지는 않지만 그 내용을 한 번 올려 본다.

 

파이썬과 문법이 비슷한 듯 하다.

 

벡터의 내적
행렬, 행렬의 곱 표현

# 1 ) 벡터들의 일차결합과 내적, 행렬과의 곱

v = vector([1,1,-4])
w = vector([2,2,-1])

show(v)

A = Matrix([[1,2,3],[3,2,1],[1,1,1]])   # 행렬 A
show(A)

c = A*v  # Av의 계산
show(c)

 

두 번쨰 주제는 행렬의 기약사다리꼴 변환, 행렬의 kernel의 이다.

전치행렬을 하는 이유는 sagemath 내부 프로그램의 구조가 달라서 우리가 아는 것과 맞게 해 주는 것

# 2) 행렬의 기약사다리꼴 변환, 행렬의 핵(Kernal)계산
A = matrix(QQ, [[0,1,2], [3,4,5], [6,7,8]])   #행렬 A
     # QQ는 유리수로 이루어졌다는 내용
show(A)
show(A.echelon_form()) # A의 기약사다리꼴

print(A.transpose().kernel())  # 선형사상 L_A의 핵(kernel), 즉 AX = 0의 해공간

 

 

세 번째는 구체적인 연립일차방정식의 풀이이다.

# 3) 구체적인 연립일차방정식의 풀이

b = vector(QQ, [0,6,-1,3])
A = matrix(QQ, [[0,-1,-1,1], [1,1,1,1], [2,4,1,-2], [3,1,-2,2]])

show(b)
show(A)

solution = A.solve_right(b) # AX = b의 해
show(solution)

 

행렬의 여러 가지 연산뿐 아니라 행렬식도 계산할 수 있다.

행렬사상의 rank도 계산할 수 있다.

 

마지막으로는 역행렬까지 구하면서 오늘의 주제를 마쳤다.