SageMath (한국어)

From ArchWiki
Jump to navigation Jump to search

SageMath(구 Sage)는 Python을 주 언어로 사용하는 기호 수식 계산을 위해 작성된 프로그램이다. Maple, Matlab, 혹은 Mathematica과 같은 상용 프로그램을 대체하는 목적으로 개발되었다.

SageMath는 이하의 기능을 지원한다.

설치

  • sagemath은 커맨드라인 버전을 포함한다.
  • sagemath-doc은 HTML 레퍼런스와 커맨드라인에서의 인라인 도움말을 제공한다.
  • sagemath-jupyter은 Jupyter 노트북 인터페이스를 위한 커널을 포함한다.
Note: standard Sage 패키지의 대부분은 sagemath선택 의존성 패키지, 혹은 AUR을 통해 이용할 수 있다. 따라서 Sage 패키지의 기능을 이용하기 위해서는 이가 별도의 Arch 패키지로서 설치되어야 한다. sage -i를 이용하여 패키지를 설치할 필요는 없으며, 처음부터 SageMath를 pacman을 이용하여 설치하였다면 sage -i를 사용한 패키지 설치는 동작하지 않을 것이다.

사용법

SageMath는 주로 Python을 스크립팅 언어로 사용한다. 다만, 적절한 수식 계산을 위해 일부 문법이 수정되어 있다.

SageMath 커맨드라인

SageMath를 커맨드라인으로부터 기동하는 것이 가능하다:

$ sage

SageMath 커맨드라인에 관한 다양한 정보는 이 페이지[dead link 2020-04-03 ⓘ]로부터 확인할 수 있다.

이 커맨드라인은 IPython 쉘에 기반한 것으로, 인터랙티브 쉘의 기능을 온전히 사용할 수 있다. 이에 관한 자세한 사항은 커뮤니티 튜토리얼을 참고할 것. IPython Cookbook

Note, however, that it is not very comfortable for some uses such as plotting. When you try to plot something, for example:

sage: plot(sin,(x,0,10))

SageMath opens the plot in an external application.

Sage Notebook

Note: SageMath Flask Notebook은 현재 Jupyter notebook의 실행을 위해 지원 중단된 상태이다. Jupyter notebook은 이후 모든 worksheet에 사용되는 것이 권장된다. sage-notebook-exporter 패키지를 이용하여 Flask notebook을 Jupyter로 불러올 수 있다.

SageMath를 이용하는 또 다른 방법은 Notebook(sage-notebookAUR)을 이용하는 것이다.

Notebook 서버를 커맨드라인으로부터 실행하려면:

$ sage -n jupyter

서버를 실행하였다면 브라우저에서 http://localhost:8080에 접속한 뒤 로그인하여 notebook에 접근할 수 있다.

개인 사용 용도로만 서버를 이용하는 경우, 로그인 과정을 생략하고 싶다면, 다음 명령을 사용하여 로그인하지 않고 브라우저를 자동 실행되도록 할 수 있다.

$ sage -c "notebook(automatic_login=True)"

Sage Notebook에 관한 더 상세한 튜토리얼을 원한다면, Sage documentation[dead link 2020-04-03 ⓘ]을 참조할 것. 또한, notebook()에 관해서는 this page[dead link 2020-04-03 ⓘ]을 참조할 것.

Jupyter Notebook

SageMath also provides a kernel for the Jupyter notebook in the sagemath-jupyter package. To use it, launch the notebook with the command

$ jupyter notebook

and choose "SageMath" in the drop-down "New..." menu. The SageMath Jupyter notebook supports LaTeX output via the %display latex command and 3D plots if jmol is installed.

Cantor

Cantor is an application included in the KDE Edu Project. It acts as a front-end for various mathematical applications such as Maxima, SageMath, Octave, Scilab, etc. See the Cantor page on the Sage wiki for more information on how to use it with SageMath.

Cantor can be installed with the cantor package or as part of the kde-applications or kde-education groups, available in the official repositories.

Optional additions

SageTeX

If you have TeX Live installed on your system, you may be interested in using SageTeX, a package that makes the inclusion of SageMath code in LaTeX files possible. TeX Live is made aware of SageTeX automatically so you can start using it straight away.

As a simple example, here is how you include a Sage 2D plot in your TEX document (assuming you use pdflatex):

  • include the sagetex package in the preamble of your document with the usual
\usepackage{sagetex}
  • create a sagesilent environment in which you insert your code:
\begin{sagesilent}
dob(x) = sqrt(x^2 - 1) / (x * arctan(sqrt(x^2 - 1)))
dpr(x) = sqrt(x^2 - 1) / (x * log( x + sqrt(x^2 - 1)))
p1 = plot(dob,(x, 1, 10), color='blue')
p2 = plot(dpr,(x, 1, 10), color='red')
ptot = p1 + p2
ptot.axes_labels(['$\\xi$','$\\frac{R_h}{\\max(a,b)}$'])
\end{sagesilent}
  • create the plot, e.g. inside a float environment:
\begin{figure}
\begin{center}
\sageplot[width=\linewidth]{ptot}
\end{center}
\end{figure}
  • compile your document with the following procedure:
$ pdflatex <doc.tex>
$ sage <doc.sagetex.sage>
$ pdflatex <doc.tex>
  • you can have a look at your output document.

The full documentation of SageTeX is available on CTAN.

Troubleshooting

TeX Live does not recognize SageTex

If your TeX Live installation does not find the SageTex package, you can try the following procedure (as root or use a local folder):

  • Copy the files to the texmf directory:
# cp /opt/sage/local/share/texmf/tex/* /usr/share/texmf/tex/
  • Refresh TeX Live:
# texhash /usr/share/texmf/
texhash: Updating /usr/share/texmf/.//ls-R... 
texhash: Done.

See also