Open in CoCalc
1
2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3%  (c)  William Stein
4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5
6\documentclass{beamer}
7\usepackage{beamerthemesplit}
8\usepackage{pgfpages}
9
10%\pgfpagesuselayout{4 on 1}[letterpaper,landscape, border shrink=5mm]
11%\setbeamercolor{background canvas}{bg=black!5}
12
13\usepackage{graphicx}
14\newcommand{\page}[1]{\frame{#1}}
15
16\usepackage{amsmath}
17\usepackage{amsfonts}
18\usepackage{amssymb}
19\usepackage{amsthm}
20\usepackage{graphicx}
21\usepackage{pstricks}
22\usepackage{color}
23\definecolor{dbluecolor}{rgb}{0,0,0.6}
24\definecolor{dredcolor}{rgb}{.5,0.0,0.0}
25\definecolor{dgreencolor}{rgb}{0,0.4,0}
26\definecolor{blue}{rgb}{.02, .02, .908}
27\newcommand{\dred}{\color{dredcolor}\bf}
28\newcommand{\dblue}{\color{dbluecolor}\bf}
29\newcommand{\dgreen}{\color{dgreencolor}\bf}
30%\newcommand{\dred}{\bf}
31%\newcommand{\dblue}{\bf}
32%\newcommand{\dgreen}{\bf}
33
34\usepackage{xspace}  % to allow for text macros that don't eat space
35\newcommand{\SAGE}{{\color{blue}\sf SAGE}\xspace}
36\newcommand{\sage}{\SAGE}
37
38\newcommand{\graph}[1]{\includegraphics[width=0.45\textwidth]{#1}}
39
40\title{SAGE: Software for Algebra and Geometry Experimentation}
41\author{William Stein (University of Washington)}
42\date{May 9, 2006: Digipen Seminar\vspace{4ex}\\\includegraphics[width=1.5in]{icon-5}}
43\bibliographystyle{amsalpha}
44\newcommand{\Q}{\mathbb{Q}}
45\newcommand{\Z}{\mathbb{Z}}
46\newcommand{\defn}[1]{{\em #1}}
47% ---- SHA ----
48\DeclareFontEncoding{OT2}{}{} % to enable usage of cyrillic fonts
49  \newcommand{\textcyr}[1]{%
50    {\fontencoding{OT2}\fontfamily{wncyr}\fontseries{m}\fontshape{n}%
51     \selectfont #1}}
52\newcommand{\Sha}{{\mbox{\textcyr{Sh}}}}
53\DeclareMathOperator{\rank}{rank}
54\DeclareMathOperator{\Vis}{Vis}
55\DeclareMathOperator{\HH}{H}
56\DeclareMathOperator{\Ker}{Ker}
57\DeclareMathOperator{\ord}{ord}
58\renewcommand{\H}{\HH}
59\newcommand{\hra}{\hookrightarrow}
60\newcommand{\isom}{\cong}
61\newcommand{\ds}{\displaystyle}
62\renewcommand{\t}[1]{\begin{center}{\large{\dblue #1}}\end{center}}
63
64
65\begin{document}
66
67\page{
68\maketitle
69}
70
71\begin{frame}[fragile]
72  \t{What is SAGE?}  I started SAGE in early 2005, and it has since
73  mushroomed. There are now dozens of contributors all over the world
74  and an extremely active mailing list.  \vfill
75\begin{enumerate}
76\item {\dblue Completely \underline{free} and open source.}
77\vfill
78
79\item {\dblue A new computer algebra system.} Uses a
80{\em mainstream} language (unlike Magma, Gap, {\dred Mathematica},
81{\dred Maple}, etc.)
82\vfill
83
84\item {\dblue A new way to use your software.} Use {\em all} your
85    favorite ({\dred commercial} or free) mathematics software
86    {\em together}.
87\end{enumerate}
88\vfill
89\end{frame}
90
91
92
93\begin{frame}
94\t{Does Open Source Matter for Math Research?}
95\small
96You can read Sylow's Theorem and its proof in Huppert's book in the
97library [...]  then you can use Sylow's Theorem for the rest of your
98life free of charge, but for many computer algebra systems license
99fees have to be paid regularly [...].  You press buttons and you get
100answers in the same way as you get the bright pictures from your
101television set but you cannot control how they were made in either
102case.
103\vspace{2ex}
104
105With this situation {\dred two of the most basic rules of conduct in
106  mathematics are violated}: In mathematics {\dblue information is passed on
107free of charge} and {\dblue everything is laid open for checking}. Not applying
108these rules to computer algebra systems that are made for mathematical
109research [...]  means {\dred moving in a most undesirable direction}.
110Most important: Can we expect somebody to believe a result of a
111program that he is not allowed to see? ''
112
113\vspace{2ex}
114
115-- J. Neub\"user in {\bf\LARGE 1993} (he started GAP in 1986).
116\end{frame}
117
118
119
120\begin{frame}[fragile]
121\t{SAGE: A New Computer Algebra System}
122\begin{verbatim}
123algebras    edu        interfaces  modular  schemes
124categories  ext        lfunctions  modules  sets
125coding      functions  libs        monoids  structure
126crypto      geometry   matrix      plot     tests
127databases   groups     misc        rings
128
129$cat */*.py */*/*.py */*/*/*.py */*.pyx */*/*.pyx |sort|uniq|wc -l 13058858 131 132$ cat */*.py */*/*.py */*.pyx */*/*.pyx |sort|uniq|grep "sage: " | wc -l
1336845         <-------- EXAMPLE INPUT LINES!
134\end{verbatim}
135\end{frame}
136
137\page{
138\t{Cooperation: Everything Under One Roof''}
139\SAGE has many interfaces ({\dblue bold included} with \sage):\mbox{}
140
141\begin{itemize}
142\item {\dblue GAP} (started 1986)-- groups, discrete math
143\item {\dblue Singular} (started 1987) -- polynomial computation
144\item {\dblue PARI/GP} (started 1987) -- number theory
145\item {\dblue Maxima} (started 1967) -- symbolic manipulation
146\item {\dblue mwrank, ec, simon, sea} -- elliptic curves
147\item Macaulay2 (started 1993) -- (soon to be included)
148\item KANT/KASH -- sophisticated algebraic number theory
149\item Magma (started 1973) -- high-quality research math environment
150\item Maple -- symbolic, educational
151\item Mathematica -- symbolic, numerical, educational
152\item Octave (started 1992) -- numerical analysis
153\item Specialized: {\blue mwrank, gfan, sympow, ntl, genus2reduction, polymake,
154lcalc (Rubinstein), dokchitser; more to come...!}
155\end{itemize}
156}
157
158\begin{frame}
159\t{Python: A Mainstream Programming Language}
160\begin{itemize}
161\item Guido van Rossum released first Python in 1991.
162\item A {\dblue gluing language''}, i.e., design to be
163easier to use libraries and other programs.
164\item {\dblue VAST range of libraries}: graphics, 3d simulation,
165web programming, numerical analysis, etc.
166\item {\dblue Easy to read} code
167\item {\tt function?} gives documentation about function
168and {\tt function??} gives the {\bf source code}.
169\item {\dblue IPython:} Awesome!
170\end{itemize}
171\mbox{}\hspace{3in}\includegraphics[width=1in]{guido}
172\end{frame}
173
174
175\begin{frame}
176\t{Pyrex: Compiled Python-like language}
177\vfill
178\begin{enumerate}
179\item Written by {\dred Greg Ewing} of New Zealand.
180\vfill
181\item Code converted to  C code that
182is {\dred compiled by a C compiler}.
183\vfill
184\item Easy to use C/C++ code and libraries from Pyrex.
185\vfill
186\item {\dred Time-critical} \sage code gets implemented
187in Pyrex, which is (as fast as) C code, but easier
188to read (e.g., since all variables and scopes are explicit).
189\end{enumerate}
190\end{frame}
191
192\begin{frame}[fragile]
193\t{Examples: Using other systems...}
194{\small \begin{verbatim}
195sage: mathematica('N[Gamma[Pi + I]]')       # optional
1961.0302984069822916 + 1.602604587678414*I
197sage: G = mathematica('Plot3D[Sin[x]*Cos[y],{x,2,10},{y,2,10}]');
198sage: G.show();
199
200sage: gp.zeta(2)       # number theory
2011.644934066848226436472415167
202sage: gp.factor(2006)
203[2, 1; 17, 1; 59, 1]
204
205sage: f = maxima('x*sin(x)^2').integral('x'); f    # calculus
206-(2*x*sin(2*x) + cos(2*x) - 2*x^2)/8
207
208sage: maple.eval('solve({ 2*x + 3*y = 1, 3*x + 5*y = 1 })')
209{y = -1, x = 2}
210
211\end{verbatim}
212}
213\end{frame}
214
215\begin{frame}[fragile]
216\t{Linear Algebra}
217{\small \begin{verbatim}
218sage: A = MatrixSpace(QQ,3)([1,2,3, 4,5,6, 8,10,12]); A
219[ 1  2  3]
220[ 4  5  6]
221[ 8 10 12]
222sage: A.charpoly().factor()
223x * (x^2 - 18*x - 15)
224
225sage: V = QQ^3
226sage: E = End(V); t = E(A); t
227Free module morphism defined by the matrix
228[ 1  2  3]
229[ 4  5  6]
230[ 8 10 12]
231Domain: Vector space of dimension 3 over Rational Field
232Codomain: Vector space of dimension 3 over Rational Field
233\end{verbatim}}
234\end{frame}
235
236\begin{frame}[fragile]
237\t{Number Theory: Image of a line segment under $L(E,s)$}
238\begin{verbatim}
239sage: E = EllipticCurve('37a')
240sage: v = E.Lseries_values_along_line(1, 1+10*I, 300)
241sage: w = [(z[1].real(), z[1].imag()) for z in v]
242sage: L = line(w, rgbcolor=(0.5,0,0))
243sage: L.save('line.png')
244\end{verbatim}
245\includegraphics[width=5in,height=2.7in]{segimg}
246\end{frame}
247
248\begin{frame}[fragile]
250
251Most objects in \sage can easily be loaded and saved
252in a compressed format.  (This is a standard feature of Python!)
253\begin{verbatim}
254sage: V = VectorSpace(QQ, 5)
255sage: W = V.submodule([[1,2,3,4,5],[2,3,4,5,3]]); W
256Vector space of degree 5 and dimension 2 over Rational Field
257Basis matrix:
258[ 1  0 -1 -2 -9]
259[ 0  1  2  3  7]
260sage: W.save('W')
261...quit... and restart
263Vector space of degree 5 and dimension 2 over Rational Field
264Basis matrix:
265[...]
266\end{verbatim}
267\end{frame}
268
269\begin{frame}
270\t{SAGE: The Future}
271\begin{center}
272\includegraphics[width=0.8\textwidth]{pics/img_1107}\\
273\end{center}
274\begin{itemize}
275\item August 2006: {\dred MSRI grad student Workshop} on Computing
276with Modular Forms (with SAGE).
277\item October 7-8, 2006: {\dred SAGE Days 2} HERE in Seattle at UW!!
278\item UW {\em startup money}: Generous financial support for SAGE
279  development (I've hired a team of {\dblue 6 students}).
280\end{itemize}
281\end{frame}
282
283\begin{frame}
284\t{Web site}
285\begin{center}
286\t{A Tour}
287\end{center}
288\end{frame}
289
290\begin{frame}
291\vfill
292\t{Alex Clemesha}
293\t{2D Plotting Demo}
294\vfill
295\end{frame}
296
297
298\begin{frame}
299\t{Get Involved in SAGE: A specific list of projects}
300\begin{itemize}
301\item {\dred Linear algebra:} Highly optimized linear algebra (echelon
302  forms, rational decomposition) over finite fields, the rational
303  numbers, and cyclotomic fields for both sparse and dense matrices.
304\item {\dred 3D Visualization:} Use Soya3D (high-level Python
305  interface to SDL, OpenGL, etc.) to create 3D interactive
306  environments that allow for exploration and visualization of
307  mathematical objects.  This sort of use of computing in math resaerc
308  and education has so far been almost {\em completely ignored} in
309  some areas of mathematics (e.g., much of number theory).
310\end{itemize}
311\end{frame}
312
313\end{document}
314
315