€csage.server.notebook.notebook
Notebook
q)q}q(U_Notebook__worksheetsq}qU _scratch_q(csage.server.notebook.worksheet
Worksheet
qoq}q (U_Worksheet__filenameq
U _scratch_qU_Worksheet__cellsq]q
((csage.server.notebook.cell
TextCell
qoq}q(U_TextCell__worksheetqhU_TextCell__textqT
SAGE
Software for Algebra
and Geometry Experimentation DEMO
Warm up
qU
_TextCell__idqKðub(csage.server.notebook.cell
Cell
qoq}q(U _Cell__inqU2 ^ 3qU_Cell__worksheetqhU_Cell__completionsq‰U_Cell__out_htmlqU U _Cell__idqKñU
_Cell__dirqU,sage_notebook/worksheets/_scratch_/cells/241qU
_Cell__outq U8Uhas_new_outputq!‰U_Cell__versionq"KU_Cell__sageq#NU_Cell__typeq$Uwrapq%U_Cell__interruptedq&‰ub(hoq'}q((hU%python
2 ^ 3q)hhh‰hU hKòhU,sage_notebook/worksheets/_scratch_/cells/242q*h U1h!‰h"Kh#Nh$h%h&‰ub(hoq+}q,(hhhUOSAGE has interfaces to most other computer algebra systems, commercial or free.q-hKóub(hoq.}q/(hU%%maple
integrate(sin(x)*cos(x)+1/x,x)q0U_Cell__introspect_htmlq1U!q2hhh‰U_Cell__introspectq3‰hU hKôU_Cell__timeq4‰U_Cell__is_htmlq5‰U_before_preparseq6Uˆos.chdir("/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/cells/244")
%maple
integrate(sin(x)*cos(x)+1/x,x)q7hU,sage_notebook/worksheets/_scratch_/cells/244q8h U
1/2*sin(x)^2+ln(x)
q9h!‰h"Kh#csage.interfaces.sage0
reduce_load_Sage
q:)Rq;h$h%h&‰ub(hoq<}q=(hUmagma('Factorization(-2006)')q>h1U!q?hhh‰h3‰hU hKõh4‰h5‰h6U€os.chdir("/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/cells/245")
magma('Factorization(-2006)')q@hU,sage_notebook/worksheets/_scratch_/cells/245qAh U
[ <2, 1>, <17, 1>, <59, 1> ]
qBh!‰h"Kh#h;h$h%h&‰ub(hoqC}qD(hhhU
Matrices
qEhKöub(hoqF}qG(hUm = matrix(5,5, range(25)); mqHhhh‰hU hK÷hU,sage_notebook/worksheets/_scratch_/cells/247qIh UT[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]qJh!‰h"Kh#Nh$h%h&‰ub(hoqK}qL(hUf = m.charpoly()qMhhh‰hU hKøhU,sage_notebook/worksheets/_scratch_/cells/248qNh U h!‰h"Kh#Nh$h%h&‰ub(hoqO}qP(hUfhhh‰hU hKùhU,sage_notebook/worksheets/_scratch_/cells/249qQh Ux^5 - 60*x^4 - 250*x^3qRh!‰h"Kh#Nh$h%h&‰ub(hoqS}qT(hUshow(f)qUhhh‰hU hKúhU,sage_notebook/worksheets/_scratch_/cells/250qVh U?x^{5} - 60x^{4} - 250x^{3}
qWh!‰h"Kh#Nh$h%h&‰ub(hoqX}qY(hUshow(factor(f))qZhhh‰hU hKûhU,sage_notebook/worksheets/_scratch_/cells/251q[h UD(x^{2} - 60x - 250) \cdot x^{3}
q\h!‰h"Kh#Nh$h%h&‰ub(hoq]}q^(hhhUµ
Some Graphics
Integer Factorization Tree
We illustrate integer factorization as a
product of primes using the ``factor trees''...q_hKüub(hoq`}qa(hTÙ %hideall
#auto
# The source code to draw factorization trees...
import random
def factor_tree(n, font=10):
rows = []
v = [(n,None,0)]
ftree(rows, v, 0, factor(n))
return draw_ftree(rows, font)
def ftree(rows, v, i, F):
if len(v) > 0:
# add a row to g at the ith level.
rows.append(v)
w = []
for i in range(len(v)):
k, _,_ = v[i]
if k is None or is_prime(k):
w.append((None,None,None))
else:
d = random.choice(divisors(k)[1:-1])
w.append((d,k,i))
e = k//d
if e == 1:
w.append((None,None))
else:
w.append((e,k,i))
if len(w) > len(v):
ftree(rows, w, i+1, F)
def draw_ftree(rows,font):
g = Graphics()
for i in range(len(rows)):
cur = rows[i]
for j in range(len(cur)):
e, f, k = cur[j]
if not e is None:
if is_prime(e):
c = (1,0,0)
else:
c = (0,0,.4)
g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
if not k is None and not f is None:
g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
return g
def factor_trees(n, cols=4, rows=3, font=10):
return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])qbh1U!qchhh‰hU hKýh5‰h6Tg os.chdir("/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/cells/253")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
%hideall
#auto
# The source code to draw factorization trees...
import random
def factor_tree(n, font=10):
rows = []
v = [(n,None,0)]
ftree(rows, v, 0, factor(n))
return draw_ftree(rows, font)
def ftree(rows, v, i, F):
if len(v) > 0:
# add a row to g at the ith level.
rows.append(v)
w = []
for i in range(len(v)):
k, _,_ = v[i]
if k is None or is_prime(k):
w.append((None,None,None))
else:
d = random.choice(divisors(k)[1:-1])
w.append((d,k,i))
e = k//d
if e == 1:
w.append((None,None))
else:
w.append((e,k,i))
if len(w) > len(v):
ftree(rows, w, i+1, F)
def draw_ftree(rows,font):
g = Graphics()
for i in range(len(rows)):
cur = rows[i]
for j in range(len(cur)):
e, f, k = cur[j]
if not e is None:
if is_prime(e):
c = (1,0,0)
else:
c = (0,0,.4)
g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
if not k is None and not f is None:
g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
return g
def factor_trees(n, cols=4, rows=3, font=10):
return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])qdhU,sage_notebook/worksheets/_scratch_/cells/253qeh U'
CPU time: 0.00 s, Wall time: 0.00 s
qfh!‰h"Kh#h;h&‰ub(hoqg}qh(hhhU
qihKþub(hoqj}qk(hU\F = factor_trees(factorial(10), rows=1, cols=1, font=14)
F.show(axes=False, figsize=[10,6])qlhhh‰hU hKÿhU,sage_notebook/worksheets/_scratch_/cells/255qmh U h!‰h"Kh#Nh$h%h&‰ub(hoqn}qo(hhhU|
A 3d Raytracer is Built into SAGE
The following is a picture of rational points on a rank 1 elliptic curve.qphM ub(hoqq}qr(hTI t = Tachyon(xres=700, yres=500, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
t.light((10,3,2), 1, (1,1,1))
t.light((10,-3,2), 1, (1,1,1))
t.texture('black', color=(0,0,0))
t.texture('red', color=(1,0,0))
t.texture('grey', color=(.9,.9,.9))
t.plane((0,0,0),(0,0,1),'grey')
t.cylinder((0,0,0),(1,0,0),.01,'black')
t.cylinder((0,0,0),(0,1,0),.01,'black')
E = EllipticCurve('37a'); show(E)
P = E([0,0])
Q = P
n = 60
for i in range(n):
Q = Q + P
c = i/n + .1
t.texture('r%s'%i,color=(float(i/n),0,0))
t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
show(t)qshhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/257qth U7
y^2 + y = x^3 - x
quh!‰h"Kh#Nh$h%h&‰ub(hoqv}qw(hhhT”
Some Basic Calculus
This is work in progress with Bobby Moretti. SAGE includes Maxima, which
is a program that started at the AI lab at MIT in the 1960s!. It is capable of
very sophisticated symbolic and numerical calculus. One can use it from
SAGE via "maxima.[tab]", but we are writing new code so its functionality
can be used naturally in SAGE without any knowledge of Maxima.qxhMub(hoqy}qz(hUfrom sage.calculus.all import *q{hhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/259q|h U h!‰h"Kh#Nh$h%h&‰ub(hoq}}q~(hU f = sin(x)*cos(x) + 1/x; show(f)qhhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/260q€h Ud\sin \left( x \right) \cdot \cos \left( x \right) + \frac{1}{x}
qh!‰h"Kh#Nh$h%h&‰ub(hoq‚}qƒ(hUg = f.integral(x); show(g)q„hhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/261q…h U`\log \left( x \right) - \frac{\cos \left( x \right)^{2}}{2}
q†h!‰h"Kh#Nh$h%h&‰ub(hoq‡}qˆ(hUf = sin(x+y)*cos(x+z); show(f)q‰hhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/262qŠh U^\sin \left( x + y \right) \cdot \cos \left( x + z \right)
q‹h!‰h"Kh#Nh$h%h&‰ub(hoqŒ}q(hUh = f.trig_expand(); show(h)qŽhhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/263qh Uö\cos \left( x \right) \cdot \sin \left( y \right) + \sin \left( x \right) \cdot \cos \left( y \right) \cdot \cos \left( x \right) \cdot \cos \left( z \right) - \sin \left( x \right) \cdot \sin \left( z \right)
qh!‰h"Kh#Nh$h%h&‰ub(hoq‘}q’(hU hhh‰hU hMhU,sage_notebook/worksheets/_scratch_/cells/264q“h U h!‰h"Kh#Nh$h%h&‰ubeU_Worksheet__synchroq”K\U_Worksheet__nameq•U _scratch_q–U_Worksheet__attachedq—}q˜U_Worksheet__saltq™U1168543793.388489qšU_Worksheet__dirq›U"sage_notebook/worksheets/_scratch_qœU_Worksheet__queueq]qžU_Worksheet__next_idqŸM U_Worksheet__passcryptq ˆU_Worksheet__comp_is_runningq¡‰U_Worksheet__passcodeq¢U
11G3BJNEUV/Pkq£U_Worksheet__notebookq¤hU_Worksheet__idq¥K U_Worksheet__next_block_idq¦KU_Worksheet__systemq§NubsU_Notebook__historyq¨]q©(U;# Worksheet '_scratch_' (2007-01-11 at 11:33)
sage: 2 + 3
5qªU¦# Worksheet '_scratch_' (2007-01-11 at 11:33)
sage: m = matrix(5,5, range(25)); m
[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]q«UE# Worksheet '_scratch_' (2007-01-11 at 11:34)
sage: f = m.charpoly()
q¬UL# Worksheet '_scratch_' (2007-01-11 at 11:34)
sage: f
x^5 - 60*x^4 - 250*x^3qU{# Worksheet '_scratch_' (2007-01-11 at 11:34)
sage: show(f)
x^{5} - 60x^{4} - 250x^{3}
q®Uˆ# Worksheet '_scratch_' (2007-01-11 at 11:34)
sage: show(factor(f))
(x^{2} - 60x - 250) \cdot x^{3}
q¯U;# Worksheet '_scratch_' (2007-01-11 at 11:37)
sage: 2 ^ 3
8q°UI# Worksheet '_scratch_' (2007-01-11 at 11:37)
sage: %python
sage: 2 ^ 3
1q±Ub# Worksheet '_scratch_' (2007-01-11 at 11:38)
sage: %maple
sage: integrate(Sin[x],x)
int(Sin[x],x)q²U\# Worksheet '_scratch_' (2007-01-11 at 11:38)
sage: %maple
sage: integrate(sin(x),x)
-cos(x)q³Uˆ# Worksheet '_scratch_' (2007-01-11 at 11:38)
sage: %maple
sage: integrate(sin(x^2),x)
1/2*2^(1/2)*Pi^(1/2)*FresnelS(2^(1/2)/Pi^(1/2)*x)q´T# # Worksheet '_scratch_' (2007-01-11 at 11:40)
sage: t = Tachyon(xres=800,yres=800, camera_center=(2,5,2), look_at=(2.5,0,0))
sage: t.light((0,0,100), 1, (1,1,1))
sage: t.texture('r', ambient=0.1, diffuse=0.9, specular=0.5, opacity=1.0, color=(1,0,0))
sage: for i in srange(0,50,0.1):
... t.sphere((i/10,sin(i),cos(i)), 0.05, 'r')
...
sage: t.texture('white', color=(1,1,1), opacity=1, specular=1, diffuse=1)
sage: t.plane((0,0,-100), (0,0,-100), 'white')
sage: t.save('sage.png')
qµTõ # Worksheet '_scratch_' (2007-01-11 at 11:41)
A beautiful picture of rational points on a rank 1 elliptic curve.
sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
sage: t.light((10,3,2), 1, (1,1,1))
sage: t.light((10,-3,2), 1, (1,1,1))
sage: t.texture('black', color=(0,0,0))
sage: t.texture('red', color=(1,0,0))
sage: t.texture('grey', color=(.9,.9,.9))
sage: t.plane((0,0,0),(0,0,1),'grey')
sage: t.cylinder((0,0,0),(1,0,0),.01,'black')
sage: t.cylinder((0,0,0),(0,1,0),.01,'black')
sage: E = EllipticCurve('37a')
sage: P = E([0,0])
sage: Q = P
sage: n = 100
sage: for i in range(n):
... Q = Q + P
... c = i/n + .1
... t.texture('r%s'%i,color=(float(i/n),0,0))
... t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
...
...
sage: t.save('sage.png') # long time, e.g., 10-20 seconds
q¶Tô # Worksheet '_scratch_' (2007-01-11 at 11:41)
A beautiful picture of rational points on a rank 1 elliptic curve.
sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
sage: t.light((10,3,2), 1, (1,1,1))
sage: t.light((10,-3,2), 1, (1,1,1))
sage: t.texture('black', color=(0,0,0))
sage: t.texture('red', color=(1,0,0))
sage: t.texture('grey', color=(.9,.9,.9))
sage: t.plane((0,0,0),(0,0,1),'grey')
sage: t.cylinder((0,0,0),(1,0,0),.01,'black')
sage: t.cylinder((0,0,0),(0,1,0),.01,'black')
sage: E = EllipticCurve('37a')
sage: P = E([0,0])
sage: Q = P
sage: n = 40
sage: for i in range(n):
... Q = Q + P
... c = i/n + .1
... t.texture('r%s'%i,color=(float(i/n),0,0))
... t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
...
...
sage: t.save('sage.png') # long time, e.g., 10-20 seconds
q·T # Worksheet '_scratch_' (2007-01-11 at 11:43)
sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
sage: t.light((10,3,2), 1, (1,1,1))
sage: t.light((10,-3,2), 1, (1,1,1))
sage: t.texture('black', color=(0,0,0))
sage: t.texture('red', color=(1,0,0))
sage: t.texture('grey', color=(.9,.9,.9))
sage: t.plane((0,0,0),(0,0,1),'grey')
sage: t.cylinder((0,0,0),(1,0,0),.01,'black')
sage: t.cylinder((0,0,0),(0,1,0),.01,'black')
sage: E = EllipticCurve('37a'); show(E)
sage: P = E([0,0])
sage: Q = P
sage: n = 40
sage: for i in range(n):
... Q = Q + P
... c = i/n + .1
... t.texture('r%s'%i,color=(float(i/n),0,0))
... t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
...
sage: show(t)
y^2 + y = x^3 - x
q¸T # Worksheet '_scratch_' (2007-01-11 at 11:43)
sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
sage: t.light((10,3,2), 1, (1,1,1))
sage: t.light((10,-3,2), 1, (1,1,1))
sage: t.texture('black', color=(0,0,0))
sage: t.texture('red', color=(1,0,0))
sage: t.texture('grey', color=(.9,.9,.9))
sage: t.plane((0,0,0),(0,0,1),'grey')
sage: t.cylinder((0,0,0),(1,0,0),.01,'black')
sage: t.cylinder((0,0,0),(0,1,0),.01,'black')
sage: E = EllipticCurve('37a'); show(E)
sage: P = E([0,0])
sage: Q = P
sage: n = 60
sage: for i in range(n):
... Q = Q + P
... c = i/n + .1
... t.texture('r%s'%i,color=(float(i/n),0,0))
... t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
...
sage: show(t)
y^2 + y = x^3 - x
q¹T # Worksheet '_scratch_' (2007-01-11 at 11:43)
sage: t = Tachyon(xres=700, yres=500, camera_center=(2,7,4), look_at=(2,0,0), raydepth=4)
sage: t.light((10,3,2), 1, (1,1,1))
sage: t.light((10,-3,2), 1, (1,1,1))
sage: t.texture('black', color=(0,0,0))
sage: t.texture('red', color=(1,0,0))
sage: t.texture('grey', color=(.9,.9,.9))
sage: t.plane((0,0,0),(0,0,1),'grey')
sage: t.cylinder((0,0,0),(1,0,0),.01,'black')
sage: t.cylinder((0,0,0),(0,1,0),.01,'black')
sage: E = EllipticCurve('37a'); show(E)
sage: P = E([0,0])
sage: Q = P
sage: n = 60
sage: for i in range(n):
... Q = Q + P
... c = i/n + .1
... t.texture('r%s'%i,color=(float(i/n),0,0))
... t.sphere((Q[0], -Q[1], .01), .04, 'r%s'%i)
...
sage: show(t)
y^2 + y = x^3 - x
qºUA# Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: f = sin(x^2)
q»U»# Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: g = f.integrate(x); g
Traceback (most recent call last):
...
AttributeError: 'Function_composition' object has no attribute 'integrate'q¼U~# Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: g = f.integral(x); g
Traceback (most recent call last):
...
AssertionErrorq½UT# Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: from sage.calculus.all import *
q¾UA# Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: f = sin(x^2)
q¿Tž # Worksheet '_scratch_' (2007-01-11 at 11:45)
sage: g = f.integral(x); g
Traceback (most recent call last):
...
SyntaxError: invalid syntax (, line 1)
Error using SAGE to evaluate 'sqrt(%pi)*((sqrt(Integer(2))*%i + sqrt(Integer(2)))*erf((sqrt(Integer(2))*%i + sqrt(Integer(2)))*x/Integer(2)) + (sqrt(Integer(2))*%i - sqrt(Integer(2)))*erf((sqrt(Integer(2))*%i - sqrt(Integer(2)))*x/Integer(2)))/Integer(8)'qÀUH# Worksheet '_scratch_' (2007-01-11 at 11:47)
sage: I
1.00000000000000*IqÁT # Worksheet '_scratch_' (2007-01-11 at 11:48)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÂUT# Worksheet '_scratch_' (2007-01-11 at 11:48)
sage: from sage.calculus.all import *
qÃUA# Worksheet '_scratch_' (2007-01-11 at 11:48)
sage: f = sin(x^2)
qÄT # Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÅUT# Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: from sage.calculus.all import *
qÆUA# Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: f = sin(x^2)
qÇU•# Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: g = f.integral(x); g
Traceback (most recent call last):
...
ValueError: too many values to unpackqÈT # Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÉUT# Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: from sage.calculus.all import *
qÊUA# Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: f = sin(x^2)
qËT # Worksheet '_scratch_' (2007-01-11 at 11:49)
sage: g = f.integral(x); g
sqrt(_Pi_)*((sqrt(2)*_I_ + sqrt(2))*erf((sqrt(2)*_I_ + sqrt(2))*x/2) + (sqrt(2)*_I_ - sqrt(2))*erf((sqrt(2)*_I_ - sqrt(2))*x/2))/8
Traceback (most recent call last):
File "", line 1, in
File "/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/code/4.py", line 4, in
exec compile(ur'g = f.integral(x); g' + '\n', '', 'single')
File "/Users/was/talks/2007-01-11-uw-undergrads/", line 1, in
...qÌUM# Worksheet '_scratch_' (2007-01-11 at 11:50)
sage: SER(I)
1.00000000000000*IqÍT # Worksheet '_scratch_' (2007-01-11 at 11:50)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÎUT# Worksheet '_scratch_' (2007-01-11 at 11:50)
sage: from sage.calculus.all import *
qÏUA# Worksheet '_scratch_' (2007-01-11 at 11:50)
sage: f = sin(x^2)
qÐT # Worksheet '_scratch_' (2007-01-11 at 11:50)
sage: g = f.integral(x); g
sqrt(_Pi_)*((sqrt(2)*_I_ + sqrt(2))*erf((sqrt(2)*_I_ + sqrt(2))*x/2) + (sqrt(2)*_I_ - sqrt(2))*erf((sqrt(2)*_I_ - sqrt(2))*x/2))/8
Traceback (most recent call last):
File "", line 1, in
File "/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/code/4.py", line 4, in
exec compile(ur'g = f.integral(x); g' + '\n', '', 'single')
File "/Users/was/talks/2007-01-11-uw-undergrads/", line 1, in
...qÑT # Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÒUT# Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: from sage.calculus.all import *
qÓUA# Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: f = sin(x^2)
qÔT # Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: g = f.integral(x); g
sqrt(_Pi_)*((sqrt(2)*_I_ + sqrt(2))*erf((sqrt(2)*_I_ + sqrt(2))*x/2) + (sqrt(2)*_I_ - sqrt(2))*erf((sqrt(2)*_I_ - sqrt(2))*x/2))/8
{'_I_': 1.00000000000000*I, 'cos': cos, '_Pi_': , 'sec': sec, 'x': x, '_E_': , 'sin': sin}
Traceback (most recent call last):
File "", line 1, in
File "/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/code/4....qÕUF# Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: f = sin(x)*cos(y)
qÖT # Worksheet '_scratch_' (2007-01-11 at 11:51)
sage: g = f.integral(x); g
-cos(x)*cos(y)
{'_I_': 1.00000000000000*I, 'cos': cos, '_Pi_': , 'sec': sec, 'x': x, 'y': y, '_E_': , 'sin': sin}
((-1)*cos(x))*cos(y)q×Uh# Worksheet '_scratch_' (2007-01-11 at 11:52)
sage: %maple
sage: integrate(sin(x)*cos(x),x)
1/2*sin(x)^2qØUk# Worksheet '_scratch_' (2007-01-11 at 11:52)
sage: %maple
sage: integrate(sin(x)*cos(x)^2,x)
-1/3*cos(x)^3qÙUr# Worksheet '_scratch_' (2007-01-11 at 11:52)
sage: %maple
sage: integrate(sin(x)*cos(x)+1/x,x)
1/2*sin(x)^2+ln(x)qÚUL# Worksheet '_scratch_' (2007-01-11 at 11:52)
sage: f = sin(x)*cos(x) + 1/x
qÛT # Worksheet '_scratch_' (2007-01-11 at 11:52)
sage: g = f.integral(x); g
log(x) - cos(x)^2/2
{'_I_': 1.00000000000000*I, 'cos': cos, '_Pi_': , 'sec': sec, 'x': x, 'y': y, '_E_': , 'sin': sin}
Traceback (most recent call last):
File "", line 1, in
File "/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/worksheets/_scratch_/code/11.py", line 4, in
exec compile(ur'g = f.integral(x); g' + '\n', '', 'single')
File "/User...qÜT # Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqÝUT# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: from sage.calculus.all import *
qÞUL# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: f = sin(x)*cos(x) + 1/x
qßU\# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: g = f.integral(x); g
log(x) - cos(x)^2/2qàUœ# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: show(g)
\log \left( x \right) - \frac{\cos \left( x \right)^{2}}{2}
qáU¹# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: f = sin(x)*cos(x) + 1/x; show(f)
\sin \left( x \right) \cdot \cos \left( x \right) + \frac{1}{x}
qâU¯# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: g = f.integral(x); show(g)
\log \left( x \right) - \frac{\cos \left( x \right)^{2}}{2}
qãUJ# Worksheet '_scratch_' (2007-01-11 at 11:53)
sage: f = sin(x+y)*cos(x+z)
qäUƒ# Worksheet '_scratch_' (2007-01-11 at 11:54)
sage: f.trig_expand()
(cos(x)*sin(y) + sin(x)*cos(y))*(cos(x)*cos(z) - sin(x)*sin(z))qåTG # Worksheet '_scratch_' (2007-01-11 at 11:54)
sage: h = f.trig_expand(); show(h)
\cos \left( x \right) \cdot \sin \left( y \right) + \sin \left( x \right) \cdot \cos \left( y \right) \cdot \cos \left( x \right) \cdot \cos \left( z \right) - \sin \left( x \right) \cdot \sin \left( z \right)
qæU°# Worksheet '_scratch_' (2007-01-11 at 11:54)
sage: h.trig_simplify()
((((-1)*cos(x))*sin(x))*sin(y) - sin(x)^2*cos(y))*sin(z) + (cos(x)^2*sin(y) + cos(x)*sin(x)*cos(y))*cos(z)qçU±# Worksheet '_scratch_' (2007-01-11 at 11:54)
sage: f = sin(x+y)*cos(x+z); show(f)
\sin \left( x + y \right) \cdot \cos \left( x + z \right)
qèTG # Worksheet '_scratch_' (2007-01-11 at 11:54)
sage: h = f.trig_expand(); show(h)
\cos \left( x \right) \cdot \sin \left( y \right) + \sin \left( x \right) \cdot \cos \left( y \right) \cdot \cos \left( x \right) \cdot \cos \left( z \right) - \sin \left( x \right) \cdot \sin \left( z \right)
qéU/# Worksheet '_scratch_' (2007-01-11 at 11:54)
qêT # Worksheet '_scratch_' (2007-01-11 at 12:04)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqëT # Worksheet '_scratch_' (2007-01-11 at 12:04)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqìT # Worksheet '_scratch_' (2007-01-11 at 12:05)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqíUr# Worksheet '_scratch_' (2007-01-11 at 12:05)
sage: %maple
sage: integrate(sin(x)*cos(x)+1/x,x)
1/2*sin(x)^2+ln(x)qîUR# Worksheet '_scratch_' (2007-01-11 at 12:05)
sage: magma('Factorization(-2006)')
qïUR# Worksheet '_scratch_' (2007-01-11 at 12:05)
sage: magma('Factorization(-2006)')
qðUR# Worksheet '_scratch_' (2007-01-11 at 12:06)
sage: magma('Factorization(-2006)')
qñT # Worksheet '_scratch_' (2007-01-11 at 12:06)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqòUn# Worksheet '_scratch_' (2007-01-11 at 12:06)
sage: magma('Factorization(-2006)')
[ <2, 1>, <17, 1>, <59, 1> ]qóUr# Worksheet '_scratch_' (2007-01-11 at 12:06)
sage: %maple
sage: integrate(sin(x)*cos(x)+1/x,x)
1/2*sin(x)^2+ln(x)qôT # Worksheet '_scratch_' (2007-01-11 at 12:07)
sage: %hideall
sage: #auto
sage:
sage: # The source code to draw factorization trees...
sage:
sage: import random
sage:
sage: def factor_tree(n, font=10):
... rows = []
... v = [(n,None,0)]
... ftree(rows, v, 0, factor(n))
... return draw_ftree(rows, font)
...
sage:
sage: def ftree(rows, v, i, F):
... if len(v) > 0:
... # add a row to g at the ith level.
... rows.append(v)
... w = []
... for i in range(len(v)):
... k, _,_ = v[i]
... if k is None or is_prime(k):
... w.append((None,None,None))
... else:
... d = random.choice(divisors(k)[1:-1])
... w.append((d,k,i))
... e = k//d
... if e == 1:
... w.append((None,None))
... else:
... w.append((e,k,i))
... if len(w) > len(v):
... ftree(rows, w, i+1, F)
...
sage:
sage:
sage: def draw_ftree(rows,font):
... g = Graphics()
... for i in range(len(rows)):
... cur = rows[i]
... for j in range(len(cur)):
... e, f, k = cur[j]
... if not e is None:
... if is_prime(e):
... c = (1,0,0)
... else:
... c = (0,0,.4)
... g += text(str(e), (j*2-len(cur),-i), fontsize=font, rgbcolor=c)
... if not k is None and not f is None:
... g += line([(j*2-len(cur),-i), (k*2-len(rows[i-1]),-i+1)], alpha=0.4, thickness=1)
... return g
...
sage:
sage: def factor_trees(n, cols=4, rows=3, font=10):
... return graphics_array([[factor_tree(n,font) for _ in range(cols)] for _ in range(rows)])
CPU time: 0.00 s, Wall time: 0.00 sqõUr# Worksheet '_scratch_' (2007-01-11 at 12:07)
sage: %maple
sage: integrate(sin(x)*cos(x)+1/x,x)
1/2*sin(x)^2+ln(x)qöeU_Notebook__defaultsq÷}qø(Ucell_output_colorqùU#0000EEqúUmax_history_lengthqûMôUcell_input_colorqüU#0000000qýUword_wrap_colsqþKPuU_Notebook__worksheet_dirqÿUsage_notebook/worksheetsr U_Notebook__history_countr K U_Notebook__log_serverr ‰U_Notebook__filenamer Usage_notebook/nb.sobjr U_Notebook__default_worksheetr hU_Notebook__server_logr ]r U_Notebook__next_worksheet_idr KU_Notebook__kill_idler K U_Notebook__systemr
NU_Notebook__show_debugr ‰U_Notebook__dirr U
sage_notebookr
U_Notebook__authr U:U_Notebook__colorr NU_Notebook__object_dirr Usage_notebook/objectsr U_default_filenamer U?/Users/was/talks/2007-01-11-uw-undergrads/sage_notebook/nb.sobjr U_Notebook__splashpager ‰ub.