Difference between revisions of "SageMath"

From ArchWiki
Jump to navigation Jump to search
m (Starting Sage Notebook Server throws an ImportError: flag for deletion)
(Change sage-notebook to sagemath-jupyter in installation section, since the former is deprecated in favour of the latter)
 
(21 intermediate revisions by 9 users not shown)
Line 1: Line 1:
[[Category:Mathematics and science]]
+
[[Category:Numerical analysis]]
 
[[ja:SageMath]]
 
[[ja:SageMath]]
 
{{Related articles start}}
 
{{Related articles start}}
Line 18: Line 18:
  
 
== Installation ==
 
== Installation ==
SageMath can be [[Pacman|installed]] from the [[official repositories]]:
 
  
 
* {{Pkg|sagemath}} contains the command-line version;
 
* {{Pkg|sagemath}} contains the command-line version;
 
* {{Pkg|sagemath-doc}} for HTML documentation and inline help from the command line.
 
* {{Pkg|sagemath-doc}} for HTML documentation and inline help from the command line.
* {{Pkg|sage-notebook}} includes the browser-based notebook interface.
+
* {{Pkg|sagemath-jupyter}} includes a kernel for the Jupyter notebook interface.
  
The {{Pkg|sagemath}} package has number of [[pacman#Installing packages|optional dependencies]] for various features that will be disabled if the needed packages are missing.
+
{{Note|Most of the [http://doc.sagemath.org/html/en/installation/standard_packages.html standard Sage packages] are available as [[pacman#Installing packages|optional dependencies]] of the {{pkg|sagemath}} package or in [[AUR]], therefore they have to be installed additionally as normal Arch packages in order to take advantage of their features. Note that there is no need to install them with {{ic|sage -i}}, in fact this command will not work if you installed SageMath with pacman.}}
  
 
== Usage ==
 
== Usage ==
SageMath mainly uses Python as a scripting language with a few [http://www.sagemath.org/doc/tutorial/afterword.html#section-mathannoy modifications] to make it better suited for mathematical computations.
+
SageMath mainly uses Python as a scripting language with a few [http://doc.sagemath.org/html/en/tutorial/afterword.html#section-mathannoy modifications] to make it better suited for mathematical computations.
  
 
=== SageMath command-line ===
 
=== SageMath command-line ===
Line 33: Line 32:
 
  $ sage
 
  $ sage
  
For information on the SageMath command-line see [http://www.sagemath.org/doc/reference/cmd/index.html this page].
+
For information on the SageMath command-line see [http://doc.sagemath.org/reference/repl/index.html this page].
  
The command-line is based on the IPython shell so you can use all its [http://www.sagemath.org/doc/tutorial/interactive_shell.html tricks] with SageMath. For an extensive tutorial on IPython see the community maintained [http://wiki.ipython.org/Cookbook IPython Cookbook].
+
The command-line is based on the IPython shell so you can use all its [http://doc.sagemath.org/html/en/tutorial/interactive_shell.html tricks] with SageMath. For an extensive tutorial on IPython see the community maintained [http://wiki.ipython.org/Cookbook IPython Cookbook].
  
 
Note, however, that it is not very comfortable for some uses such as plotting. When you try to plot something, for example:
 
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))
 
  sage: plot(sin,(x,0,10))
SageMath opens a browser window with the Sage Notebook.
+
SageMath opens the plot in an external application.
  
 
=== Sage Notebook ===
 
=== Sage Notebook ===
A better suited interface for advanced usage in SageMath is the Notebook.
+
{{Note|The SageMath Flask notebook is deprecated in favour of the Jupyter notebook. The Jupyter notebook is recommended for all new worksheets. You can use the {{pkg|sage-notebook-exporter}} application to convert your Flask notebooks to Jupyter}}
 +
 
 +
A better suited interface for advanced usage in SageMath is the Notebook ({{Pkg|sage-notebook}}).
 
To start the Notebook server from the command-line, execute:
 
To start the Notebook server from the command-line, execute:
 
  $ sage -n
 
  $ sage -n
Line 51: Line 52:
 
  $ sage -c "notebook(automatic_login=True)"
 
  $ sage -c "notebook(automatic_login=True)"
  
For a more comprehensive tutorial on the Sage Notebook see the [http://www.sagemath.org/doc/reference/notebook/index.html Sage documentation]. For more information on the {{ic|notebook()}} command see [http://www.sagemath.org/doc/reference/notebook/sagenb/notebook/notebook.html this page].
+
For a more comprehensive tutorial on the Sage Notebook see the [http://doc.sagemath.org/html/en/reference/notebook/index.html Sage documentation]. For more information on the {{ic|notebook()}} command see [http://doc.sagemath.org/html/en/reference/notebook/sagenb/notebook/notebook.html this page].
  
 
=== Jupyter Notebook ===
 
=== Jupyter Notebook ===
SageMath also provides a kernel for the [https://jupyter.org/ Jupyter] notebook. To use it, install {{Pkg|ipython2-notebook}} and {{Pkg|mathjax}}, launch the notebook with the command
+
SageMath also provides a kernel for the [https://jupyter.org/ Jupyter] notebook in the {{Pkg|sagemath-jupyter}} package. To use it, launch the notebook with the command
 
  $ jupyter notebook
 
  $ jupyter notebook
and choose "SageMath" in the drop-down "New..." menu. The SageMath Jupyter notebook supports [[LaTeX]] output via the {{ic|%display latex}} command and 3D plots if {{Pkg|jmol}} is installed.  
+
and choose "SageMath" in the drop-down "New..." menu. The SageMath Jupyter notebook supports [[LaTeX]] output via the {{ic|%display latex}} command and 3D plots if {{Pkg|jmol}} is installed.
  
 
=== Cantor ===
 
=== Cantor ===
Line 62: Line 63:
  
 
Cantor can be installed with the {{Pkg|cantor}} package or as part of the {{Grp|kde-applications}} or {{Grp|kdeedu}} groups, available in the [[official repositories]].
 
Cantor can be installed with the {{Pkg|cantor}} package or as part of the {{Grp|kde-applications}} or {{Grp|kdeedu}} groups, available in the [[official repositories]].
 
=== Documentation ===
 
For local documentation, one can compile it into multiple formats such as HTML or PDF. To build the whole SageMath reference, execute the following command (as root):
 
# sage --docbuild reference html
 
 
This builds the HTML documentation for the whole ''reference'' tree (may take longer than an hour). An option is to build a smaller part of the documentation tree, but you would need to know what it is you want.  Until then, you might consider just browsing  the [http://www.sagemath.org/doc/ online reference].
 
 
For a list of documents see {{ic|sage --docbuild --documents}} and for a list of supported formats see {{ic|sage --docbuild --formats}}.
 
  
 
== Optional additions ==
 
== Optional additions ==
 
=== SageTeX ===
 
=== SageTeX ===
If you have installed [[TeX Live]] on your system, you may be interested in [http://www.sagemath.org/doc/tutorial/sagetex.html 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.
+
If you have [[TeX Live]] installed on your system, you may be interested in [http://doc.sagemath.org/html/en/tutorial/sagetex.html 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 {{ic|pdflatex}}):
 
As a simple example, here is how you include a Sage 2D plot in your TEX document (assuming you use {{ic|pdflatex}}):
Line 98: Line 91:
 
* compile your document with the following procedure:
 
* compile your document with the following procedure:
 
  $ pdflatex <doc.tex>
 
  $ pdflatex <doc.tex>
  $ sage <doc.sage>
+
  $ sage <doc.sagetex.sage>
 
  $ pdflatex <doc.tex>
 
  $ pdflatex <doc.tex>
  
Line 104: Line 97:
  
 
The full documentation of SageTeX is available on [http://www.ctan.org/pkg/sagetex CTAN].
 
The full documentation of SageTeX is available on [http://www.ctan.org/pkg/sagetex CTAN].
 
== Install Sage package ==
 
 
{{Deletion|[[#Installation]] now mentions optional dependencies}}
 
 
If you installed sagemath from the official repositories, it is not possible to install sage packages using the sage option {{ic|sage -i packagename}}.
 
 
Instead, you should install the required packages system-wide. For example, if you need {{ic|jmol}} (for 3D plots):
 
$ sudo pacman -S jmol
 
 
An alternative would be to have a local installation of sagemath and to manage optional packages manually.
 
  
 
== Troubleshooting ==
 
== Troubleshooting ==
Line 127: Line 109:
 
texhash: Done.
 
texhash: Done.
 
}}
 
}}
 
=== Starting Sage Notebook Server throws an ImportError ===
 
 
{{Deletion|[[#Installation]] now mentions optional dependencies}}
 
 
The Sage Notebook Server is in an extra package {{Pkg|sage-notebook}}. So, if you get an ImportError when launching
 
 
  % sage --notebook
 
  ┌────────────────────────────────────────────────────────────────────┐
 
  │ Sage Version 6.4.1, Release Date: 2014-11-23                      │
 
  │ Type "notebook()" for the browser-based notebook interface.        │
 
  │ Type "help()" for help.                                            │
 
  └────────────────────────────────────────────────────────────────────┘
 
  Please wait while the Sage Notebook server starts...
 
  Traceback (most recent call last):
 
    File "/usr/bin/sage-notebook", line 180, in <module>
 
      launcher(unknown)
 
    File "/usr/bin/sage-notebook", line 58, in __init__
 
      from sagenb.notebook.notebook_object import notebook
 
  ImportError: No module named sagenb.notebook.notebook_object
 
 
you most likely do not have the package {{Pkg|sage-notebook}} installed.
 
 
=== sage -i doesn't work ===
 
 
{{Deletion|[[#Installation]] now mentions optional dependencies}}
 
 
If you have installed Sage from the official repositories, then you have to install your additional packages system-wide. See [[SageMath#Install Sage package|Install Sage package]]
 
 
=== 3D plot fails in notebook ===
 
 
{{Deletion|[[#Installation]] now mentions optional dependencies}}
 
 
If you get the following error while trying to plot a 3D object:
 
  /usr/lib/python2.7/site-packages/sage/repl/rich_output/display_manager.py:570: RichReprWarning: Exception in _rich_repr_ while displaying
 
  object: Jmol failed to create file
 
  '/home/nicolas/.sage/temp/archimede/3188/dir_cCpcph/preview.png', see
 
  '/home/nicolas/.sage/temp/archimede/3188/tmp_JVpSqF.txt' for details
 
    RichReprWarning,
 
  Graphics3d Object
 
then you probably miss the jmol package. See [[SageMath#Install Sage package|Install Sage package]] to install it.
 
  
 
== See also ==
 
== See also ==
 
* [http://www.sagemath.org/ Official Website]
 
* [http://www.sagemath.org/ Official Website]
* [http://www.sagemath.org/doc/ SageMath Documentation]
+
* [http://doc.sagemath.org/ SageMath Documentation]
 
* [http://planet.sagemath.org/ Planet Sage]
 
* [http://planet.sagemath.org/ Planet Sage]
 
* [http://wiki.sagemath.org/ SageMath Wiki]
 
* [http://wiki.sagemath.org/ SageMath Wiki]
 
* [http://www.sagemath.org/links-components.html Software Used by SageMath]
 
* [http://www.sagemath.org/links-components.html Software Used by SageMath]

Latest revision as of 17:04, 10 May 2019

SageMath (formerly Sage) is a program for numerical and symbolic mathematical computation that uses Python as its main language. It is meant to provide an alternative for commercial programs such as Maple, Matlab, and Mathematica.

SageMath provides support for the following:

Installation

  • sagemath contains the command-line version;
  • sagemath-doc for HTML documentation and inline help from the command line.
  • sagemath-jupyter includes a kernel for the Jupyter notebook interface.
Note: Most of the standard Sage packages are available as optional dependencies of the sagemath package or in AUR, therefore they have to be installed additionally as normal Arch packages in order to take advantage of their features. Note that there is no need to install them with sage -i, in fact this command will not work if you installed SageMath with pacman.

Usage

SageMath mainly uses Python as a scripting language with a few modifications to make it better suited for mathematical computations.

SageMath command-line

SageMath can be started from the command-line:

$ sage

For information on the SageMath command-line see this page.

The command-line is based on the IPython shell so you can use all its tricks with SageMath. For an extensive tutorial on IPython see the community maintained 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: The SageMath Flask notebook is deprecated in favour of the Jupyter notebook. The Jupyter notebook is recommended for all new worksheets. You can use the sage-notebook-exporter application to convert your Flask notebooks to Jupyter

A better suited interface for advanced usage in SageMath is the Notebook (sage-notebook). To start the Notebook server from the command-line, execute:

$ sage -n

The notebook will be accessible in the browser from http://localhost:8080 and will require you to login.

However, if you only run the server for personal use, and not across the internet, the login will be an annoyance. You can instead start the Notebook without requiring login, and have it automatically pop up in a browser, with the following command:

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

For a more comprehensive tutorial on the Sage Notebook see the Sage documentation. For more information on the notebook() command see this page.

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 kdeedu 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