Sharedwww / talks / 2006-05-09-sage-digipen / current.texOpen in CoCalc
Author: William A. Stein
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
96
``You can read Sylow's Theorem and its proof in Huppert's book in the
97
library [...] then you can use Sylow's Theorem for the rest of your
98
life free of charge, but for many computer algebra systems license
99
fees have to be paid regularly [...]. You press buttons and you get
100
answers in the same way as you get the bright pictures from your
101
television set but you cannot control how they were made in either
102
case.
103
\vspace{2ex}
104
105
With this situation {\dred two of the most basic rules of conduct in
106
mathematics are violated}: In mathematics {\dblue information is passed on
107
free of charge} and {\dblue everything is laid open for checking}. Not applying
108
these rules to computer algebra systems that are made for mathematical
109
research [...] means {\dred moving in a most undesirable direction}.
110
Most important: Can we expect somebody to believe a result of a
111
program 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}
123
algebras edu interfaces modular schemes
124
categories ext lfunctions modules sets
125
coding functions libs monoids structure
126
crypto geometry matrix plot tests
127
databases groups misc rings
128
129
$ cat */*.py */*/*.py */*/*/*.py */*.pyx */*/*.pyx |sort|uniq|wc -l
130
58858
131
132
$ cat */*.py */*/*.py */*.pyx */*/*.pyx |sort|uniq|grep "sage: " | wc -l
133
6845 <-------- 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,
154
lcalc (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
163
easier to use libraries and other programs.
164
\item {\dblue VAST range of libraries}: graphics, 3d simulation,
165
web programming, numerical analysis, etc.
166
\item {\dblue Easy to read} code
167
\item {\tt function?} gives documentation about function
168
and {\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
182
is {\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
187
in Pyrex, which is (as fast as) C code, but easier
188
to 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}
195
sage: mathematica('N[Gamma[Pi + I]]') # optional
196
1.0302984069822916 + 1.602604587678414*I
197
sage: G = mathematica('Plot3D[Sin[x]*Cos[y],{x,2,10},{y,2,10}]');
198
sage: G.show();
199
200
sage: gp.zeta(2) # number theory
201
1.644934066848226436472415167
202
sage: gp.factor(2006)
203
[2, 1; 17, 1; 59, 1]
204
205
sage: f = maxima('x*sin(x)^2').integral('x'); f # calculus
206
-(2*x*sin(2*x) + cos(2*x) - 2*x^2)/8
207
208
sage: 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}
218
sage: 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]
222
sage: A.charpoly().factor()
223
x * (x^2 - 18*x - 15)
224
225
sage: V = QQ^3
226
sage: E = End(V); t = E(A); t
227
Free module morphism defined by the matrix
228
[ 1 2 3]
229
[ 4 5 6]
230
[ 8 10 12]
231
Domain: Vector space of dimension 3 over Rational Field
232
Codomain: 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}
239
sage: E = EllipticCurve('37a')
240
sage: v = E.Lseries_values_along_line(1, 1+10*I, 300)
241
sage: w = [(z[1].real(), z[1].imag()) for z in v]
242
sage: L = line(w, rgbcolor=(0.5,0,0))
243
sage: L.save('line.png')
244
\end{verbatim}
245
\includegraphics[width=5in,height=2.7in]{segimg}
246
\end{frame}
247
248
\begin{frame}[fragile]
249
\t{Saving and Loading Individual Objects}
250
251
Most objects in \sage can easily be loaded and saved
252
in a compressed format. (This is a standard feature of Python!)
253
\begin{verbatim}
254
sage: V = VectorSpace(QQ, 5)
255
sage: W = V.submodule([[1,2,3,4,5],[2,3,4,5,3]]); W
256
Vector space of degree 5 and dimension 2 over Rational Field
257
Basis matrix:
258
[ 1 0 -1 -2 -9]
259
[ 0 1 2 3 7]
260
sage: W.save('W')
261
...quit... and restart
262
sage: load('W')
263
Vector space of degree 5 and dimension 2 over Rational Field
264
Basis 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
276
with 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