Sage Notebook Tutorial

By | 2009/03/02

  오픈 소스(Open Source)로 진행되고 있는 수학 소프트웨어인 Sage(http://www.sagemath.org)를 인터넷에서 쉽게 사용할 수 있는 것이 바로 Sage Notebook입니다. 현재 윈도우(Windows)에서 돌아가도록 하는 프로젝트가 진행 중이지만, 기본적으로 Sage는 Linux 기반에서 돌아갑니다. 대신에 Sage Notebook을 이용하면 Sage를 설치할 필요 없이 웹 브라우저로 쉽게 사용할 수 있습니다.

  하지만 언제나 그렇듯이 처음 접하는 것은 생소하고 어렵기에 간단하게나마 소개하는 차원에서 Sage Notebook Tutorial 문서를 만들었습니다. Sage가 무엇인지 살펴보시고 시작하시는데 조금이나마 도움이 되기를 바랍니다.

  현재 Sage Notebook을 제공하는 사이트는 여러 곳이 있습니다. 공식 홈페이지에서 소개된 http://www.sagenb.org/ 라는 곳이 있으니 이 곳에 계정을 만들어 사용하셔도 됩니다. 하지만 여기서 사용한 서버는 저희 학교 수학과에서 제공하는 서버(http://math1.skku.ac.kr)입니다. 큰 차이는 없으니 보고 익히시는데 무리가 없을 것입니다.

 

c1

http://math1.skku.ac.kr

  첫 화면에서 Username에서 아이디를 적고, Password에 비밀번호를 적은 후 Sign In 버튼을 클릭하면 로그인이 됩니다. 만약 아이디가 없을 경우 ‘Sign up for a new Sage Notebook account’ 글을 클릭하여 아이디를 만드시길 바랍니다.

  Sage Notebook은 자신이 작업한 것을 공개할 수 있도록 되어 있습니다. 해당 서버에서 공개된 것들의 목록을 보고 싶으시면 ‘Browse published Sage worksheets (no login required)’를 클릭하시면 됩니다.

c2

http://math1.skku.ac.kr/pub/

  위의 화면을 보시면 공개된(Published) 자료들 목록이 보이는 것을 알 수 있습니다. 자신이 원하는 것을 찾은 후 클릭하면 공개된 워크시트(Worksheet)를 보실 수 있습니다.

 

  이제 로그인 후 화면입니다.

c3

  번호를 매긴 것은 제 개인적인 기준으로 자주 쓰는 것으로 그 외의 것은 직접 해보시거나 다른 문서를 참조하시면 도움이 될 것입니다. 밑에 간단한 설명을 적지만, 직접 클릭해보신다면 더욱 알기 편할 것입니다.

  1. 현재 화면으로 다시 돌아오게 하는 버튼입니다. 즉, 위의 화면이 Home 페이지라는 것입니다.
  2. 위에서 보았던 공개된(Published) 자료를 볼 수 있는 곳으로 갑니다.
  3. Worksheet를 언제 무엇을 수정하였는지를 확인할 수 있는 로그 창이 뜹니다.
  4. 도움말입니다. Sage를 이용하면서 필요한 문서들을 볼 수 있습니다. 여기에 대해 밑에 설명을 덧붙이겠습니다.
  5. 계정 설정을 하는 곳입니다. 비밀번호나 이메일 주소를 바꿀 수 있습니다. 비밀번호를 잊어먹은 경우 설정된 이메일로 비밀번호 확인이 가능합니다.
  6. 로그아웃 버튼입니다.
  7. New Worksheet는 새로운 Worksheet를 만드는 것입니다. 워크시트가 잘 이해가 되지 않으신다면 MS Office Excel에서 작업을 할 수 있는 Sheet와 비슷하게 생각하시면 될 것입니다. 작업할 수 있는 하나의 공간이고, 그것을 여러 개 만들어 쓸 수 있는 것이지요.
  8. Upload는 이미 만들어진 파일을 업로드 하여 워크시트를 만드는 것입니다. 해당 파일을 직접 만들거나 Worksheet에서 작업한 것을 백업 받을 수도 있습니다.

  Active Worksheets에 (running)이라는 글은 현재 해당 워크시트가 작동하고 있다는 뜻인데, ‘Save & Quit’를 하지 않고 단순히 종료만 할 경우에 발생합니다. 자세한 얘기는 밑에 설명하겠습니다.

  그 외에 (published)는 현재 해당 워크시트가 공개되었다는 뜻이고 그 오른쪽에 것은 해당 워크시트를 언제 누가 마지막으로 수정하였는지를 알 수 있습니다.

 

  이제 새로운 워크시트를 만들어보겠습니다. New Worksheet를 클릭하세요.

c4

  그럼 위와 같이 새로운 워크시트가 만들어집니다. 여기서 코드를 치고 실행을 시켜 결과를 얻어낼 수 있습니다.

  1. 워크시트 제목입니다. 해당 제목을 클릭하면 제목을 바꿀 수 있습니다. 웹 브라우저 보안 상 ‘이 웹 사이트는 스크립팅된 창을 사용하여 사용자에게 정보를 묻습니다. 이 웹사이트를 신뢰하는 경우 스크립팅된 창을 허용하려면 여기를 클릭하십시오….‘ 라는 문구가 창 위에 노란 바탕으로 나타날 것입니다. 이를 클릭하여 ‘스크립팅된 창 임시 허용’을 클릭하면 노란 바탕의 글이 사라질 것입니다. 이제 다시 제목을 클릭하면 제목을 수정할 수 있는 창이 뜰 것입니다.
    c5여기에 원하는 제목을 적은 후 확인 버튼을 누르면 워크시트 제목이 바뀝니다.
    주의 해야 할 점은 현재 유니코드가 제대로 지원이 되지 않아 한글로 적어도 저장 후 다시 살펴보게 될 때 제대로 나오지 않을 확률이 높습니다. 이는 차츰 개선할 것입니다.
  2. 해당 워크시트를 저장하는 버튼입니다. 문서 작업 시 디스켓 모양을 가지는 ‘저장’ 버튼과 동일한 기능을 가지고 있습니다.
  3. 작업한 것을 저장한 후 종료하는 버튼입니다. 위에서 살펴본 (running)이라는 문구가 나타나지 않게 하려면 반드시 이 버튼을 클릭하여 종료하여야 합니다. 그렇지 않고 단순히 Save만 누른 후 브라우저 창을 끈다면 (running)으로 남게 되어 서버에 부담을 주게 됩니다.
  4. 이것은 작업한 것을 저장하지 않고 바로 종료하는 버튼입니다. 마찬가지로 (running)이 나타나지 않지만, 작업한 것을 저장하지 않는다는 점이 ‘Save & Quit’와 다른 점입니다.
  5. 해당 워크시트를 인쇄 할 수 있는 창이 열립니다. 기존의 워크시트 창을 인쇄하는 것보다 좀 더 깔끔하게 인쇄를 할 수 있습니다. 밑에 예를 보이겠습니다.
  6. 6, 7, 8, 9, 10, 11번 버튼은 전부 밑의 화면을 바꾸는 것입니다. 여기에 대해서는 밑에서 좀 더 자세히 설명하겠습니다.
    6번은 현재 화면처럼 워크시트에 코드를 넣고 그것을 실행시켜 값을 바로 볼 수 있는 화면을 보여주는 버튼입니다.
  7. 해당 워크시트를 전체적인 text 방식의 코드를 보여주고 이를 수정할 수 있는 화면을 보여줍니다. 제 블로그에 공개되는 소스는 이 화면에 붙여넣기를 하면 워크시트를 쉽게 복사할 수 있습니다.
  8. 해당 워크시트의 코드와 결과물을 text 방식으로 보여줍니다. Sage Notebook이 아닌 Sage를 실행하여 적는 명령어와 결과물이 나오는 것입니다.
  9. 해당 워크시트의 역사(history)를 볼 수 있습니다. 즉, 어디가 어떻게 수정되어 왔으며 그것이 언제 수정되었는지를 확인할 수 있습니다.
  10. 해당 워크시트를 다른 사용자와 공유할 수 있는 화면을 보여줍니다. 초대받은 사용자는 해당 워크시트를 수정할 수 있는 권한을 가질 수 있게 되는 것입니다.
  11. 해당 워크시트를 공개할 수 있는 화면을 보여줍니다. 여기에 대해서 밑에 자세히 설명하겠습니다.
  12. 코드를 적을 수 있는 공간입니다. 저기서 Sage 코드를 적어서 Evaluate를 시키면 결과물을 보실 수 있습니다.

 

  이제 실제 코드를 적고 실행해보겠습니다. 코드에 사용된 예제는 현대 선형대수학 3장 1절 예제 3번 문제입니다.

c7

http://matrix.skku.ac.kr/clamc

  위 두 행렬의 곱인 AB를 구하는 문제입니다. 이 문제를 풀기 위한 코드를 적은 후의 화면은 다음과 같습니다.

 c9

  위의 화면을 보시면 코드와 결과물이 나온 것을 알 수 있습니다.

  1. A라는 행렬을 만드는 코드입니다. matrix라는 함수를 써서 사용하는데, 괄호 안에 적혀있는 것은 다음과 같이 해석됩니다.
    크기가 2행 3열인 행렬이고, 첫 번째 행벡터는 [1, 0, –1], 두 번째 행벡터는 [3, 1, –2]이다.
  2. 코드에 #을 붙이면 그 뒤에 있는 글은 주석이 됩니다. 즉, 코드가 아니라 일반 텍스트 글로 처리하기에 원하는 글을 마음대로 적을 수 있습니다. 대체로 무슨 코드인지 설명하는 글이 주석으로 적습니다.
  3. A라는 행렬을 출력하도록 print라는 함수를 사용하였습니다.
  4. 그 결과로 행렬 A가 출력되었습니다.
  5. 이번에는 행렬 B를 만듭니다. 하지만 A를 만들 때와 다른 점은 3행 2열이라는 것을 알려주고 한 행씩 원소를 일렬로 적었다는 것입니다. 그럼 Sage는 알아서 3행 2열의 행렬을 만들어줍니다.
  6. 역시 B라는 행렬을 출력하도록 print 함수를 사용하였습니다.
  7. 그 결과로 행렬 B가 출력되었습니다.
  8. 이제 문제에서 구하려고 했던 A와 B의 행렬곱을 적습니다. 간단하게 * 연산자를 사용하여 그 결과를 손쉽게 구할 수 있습니다.
  9. print 함수를 쓰지 않았지만, ‘A * B’만을 적었기에 그 결과가 나옵니다.
  10. 코드를 적은 후 ‘evaluate’ 버튼을 눌러야지 해당 박스에 적혀진 코드가 실행됩니다. 이를 누르지 않으면 실행이 되지 않습니다. 단축키로 ‘Shift+Enter’를 누르면 evaluate 버튼을 누른 것처럼 코드가 실행됩니다.

 

  이제 Worksheet 외의 화면에 대해 설명하겠습니다.

c10

  Edit를 클릭하면 이처럼 해당 워크시트에 관한 소스가 나옵니다. 코드와 결과물 모두가 나오기에 이를 수정하여 워크시트를 고칠 수 있습니다. 다 마치고 나서는 ‘Save Changes’ 버튼을 클릭하여야 저장됩니다.

c11

  Text는 이처럼 Sage 콘솔에서 작업할 때 나오는 것과 동일합니다. 즉, Sage를 리눅스에서 실행시켰을 때의 결과가 나옵니다.

c12

  Undo는 워크시트가 변화해 온 과정인 history가 나옵니다. 이것으로 잘못된 코드를 저장할 경우 복구할 수도 있고, 문제를 어떻게 풀어나갔는지도 확인이 가능합니다.

c13

  history 중 하나입니다. 행렬 A를 만든 것만이 저장되어 있는 것을 확인할 수 있습니다.

c14

  Share는 워크시트를 다른 이와 공유할 수 있게 하는 곳입니다. 해당 유저의 아이디를 넣은 후 ‘Invite Collaborators’를 클릭하면 그 아이디를 가진 사람은 워크시트를 수정할 수 있습니다. 재미있게도 밑에 ‘Sage Users’라는 세션에 다른 유저의 아이디가 나와있습니다.

c15

  Publish는 해당 워크시트를 공개하는 곳입니다. Share와 다른 점은 현재 결과물을 읽기 전용으로 공개하여 초대를 받지 않은 불특정 다수가 해당 워크시트를 볼 수 있지만 수정은 할 수 없다는 것입니다. 밑에 ‘Automatically re-publish when changes are made’를 체크하면 수정이 될 때마다 그 수정본이 자동으로 공개됩니다. 여기서 Yes를 클릭하겠습니다.

c16

  그럼 이처럼 공개가 되었다는 문구가 뜹니다. 어떻게 공개가 되었는지 확인해보겠습니다.

c17

http://math1.skku.ac.kr/home/pub/30/

  여기에 가보니 실제로 코드와 그 결과물이 공개되었다는 것을 알 수 있습니다. 이것으로 다른 사람들에게 워크시트를 보여줄 수 있게 되었습니다.

  Publish 화면에서 ‘Stop publishing’ 버튼을 클릭하면 공개하는 것을 그만둡니다. 공개를 하고 싶지 않을 때 이 버튼을 누르면 되겠네요.

 

  워크시트 화면에서 Print 버튼을 클릭하면 창이 하나 뜹니다.

c18

  기존의 워크시트 창보다 깔끔하게 코드와 결과물을 인쇄할 수 있습니다. 여기서 마우스 오른쪽 버튼을 누른 후 인쇄 버튼을 클릭하면 해당 페이지를 인쇄할 수 있습니다.

 

  도움말을 보기 위해서는 Help 버튼을 클릭하면 됩니다.

c19

  여기서 ‘Tutorial’이나 ‘Reference Manual’ 등을 보시면 수많은 도움말을 얻으실 수 있습니다.

c20

  팁을 드리자면 행렬에 관련된 함수들은 Reference Manual의 32.5~32.7에 있습니다.

c21

http://www.sagemath.org/search.html

  일일이 찾기 힘들다면 Sage에서 제공하는 검색엔진을 이용하여도 좋습니다. 매뉴얼과 구글 그룹을 통해 올라온 여러 Q&A를 검색할 수 있어 도움이 많이 될 것입니다.

 

  이것으로 Sage에 대한 간단한 소개 및 Sage Notebook 사용법을 마치겠습니다. 그야말로 Notebook 인터페이스의 사용법을 적은 것이기에 실제 코드를 짜는데 조금 힘드실 것입니다. 그런 점은 제가 만드는 여러 코드와 글을 보시고 필요한 부분을 복사하여 가져다 쓰시다 보면 쉽게 익히실 것이라 생각합니다.

  이미 세상에 MATLAB, Mathematica, Maple이 있는데 왜 Sage라는 것을 만들고 이것을 써야 하는지 의문을 가지실지 모르겠습니다. 하지만 해당 제품은 전부 유료입니다. 학생용이라 할지라도 100달러에 육박하는 소프트웨어 제품입니다. 학생이 그런 것을 전부 구입하여 사용하기에 무리입니다. 그리고 교육용 제품은 학생이 접하는 문제의 크기나 난이도가 높지 않을 것입니다. 그렇기에 성능이 그리 좋지 못하더라도 교육용으로는 큰 무리가 없을 것입니다.

  거기에 여기서 배운 Logic은 후에 다른 상용 소프트웨어를 사용할 때 큰 어려움 없이 소화해낼 것이라 생각합니다. 이는 컴퓨터 언어 공부에서 한 언어를 잘 하면 다른 언어의 공부는 빠르게 할 수 있다는 점에서 맞는 얘기라 생각합니다.

  이러한 이유로 오픈 소스라 무료로 접할 수 있고 웹 브라우저 기반이라 설치가 필요 없는 Sage라면 교육용으로 매우 좋은 소프트웨어라 생각합니다. 따라서 많은 분들에게 Sage를 소개하고 알리고자 이 글을 적었습니다.

 

참조

6 thoughts on “Sage Notebook Tutorial

  1. Mizar

    행렬계산도 가능하군요.
    말씀대로 고가의 상용 소프트웨어를 사용하기 어려울 때 편리하게 이용할 수 있을 것 같네요. 소개 감사합니다..^^

    Reply
    1. NoSyu

      네. 그 외에 많은 연산이 있고 현재 계속해서 진행중입니다.
      새로운 분야인만큼 의욕적으로 사람들이 참여하는 듯싶습니다.
      (저 역시 그러하지만…^^;;)
      외국에서 진행하는터라 아직 유니코드와 같은 internationalize에는 아직 미흡한 점이 많습니다.
      그만큼 기회가 많다고 생각합니다.^^

      Reply
  2. ImArch

    형 ㅠㅠ 고마워요 ㅠㅠㅋㅋㅋ 저 과제 이걸로 나와서 막 하고 있는데 형 자료가 엄청 큰 도움이 됐어요 ㅋㅋㅋㅋ 이히히히 ㅋㅋ ㄳㄳ

    Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.