Differences between revisions 103 and 108 (spanning 5 versions)
Revision 103 as of 2008-05-08 09:44:46
Size: 2906
Editor: schilly
Comment:
Revision 108 as of 2008-09-06 15:31:28
Size: 1638
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Post code that demonstrates the use of the interact command in Sage here.    It should be easy to just scroll through and paste examples out of here into their own sage notebooks.If you have suggestions on how to improve interact, add them [:interactSuggestions: here] or email [email protected]. This is a collection of pages demonstrating the use of the interact command in Sage. It should be easy to just scroll through and copy/paste examples into sage notebooks. If you have suggestions on how to improve interact, add them [:interactSuggestions:here] or email [email protected] . Of course, your own examples are also welcome!
Line 5: Line 5:
 * [:interact/graph_theory:Graph Theory]  * [:interact/graph theory:Graph Theory]
 * [:interact/fractal:Fractals]
Line 8: Line 9:
 * [:interact/linear_algebra:Linear Algebra]  * [:interact/dynsys:Dynamical Systems]
* [:interact/linear algebra:Linear Algebra]
Line 10: Line 12:
 * [:interact/number_theory:Number Theory]  * [:interact/number theory:Number Theory]
Line 14: Line 16:
 * [:interact/misc:Miscellaneous]
Line 15: Line 18:
== Miscellaneous == == Explanatory example: Taylor Series ==
Line 17: Line 20:
== Profile a snippet of code ==
{{{
html('<h2>Profile the given input</h2>')
import cProfile; import profile
@interact
def _(cmd = ("Statement", '2 + 2'),
      do_preparse=("Preparse?", True), cprof =("cProfile?", False)):
    if do_preparse: cmd = preparse(cmd)
    print "<html>" # trick to avoid word wrap
    if cprof:
        cProfile.run(cmd)
    else:
        profile.run(cmd)
    print "</html>"
}}}
attachment:profile.png


=== Evaluate a bit of code in a given system ===

by William Stein (there is no way yet to make the text box big):
{{{
@interact
def _(system=selector([('sage0', 'Sage'), ('gp', 'PARI'), ('magma', 'Magma')]), code='2+2'):
    print globals()[system].eval(code)
}}}

attachment:evalsys.png

=== A Random Walk ===

by William Stein
This is the code and a mockup animation of the interact command. It defines a slider, seen on top, that can be dragged. Once dragged, it changes the value of the variable "order" and the whole block of code gets evaluated. This principle can be seen in various examples presented on the pages above!
Line 51: Line 23:
html('<h1>A Random Walk</h1>')
vv = []; nn = 0
var('x')
x0 = 0
f = sin(x)*e^(-x)
p = plot(f,-1,5, thickness=2)
dot = point((x0,f(x0)),pointsize=80,rgbcolor=(1,0,0))
Line 54: Line 29:
def foo(pts = checkbox(True, "Show points"),
        refresh = checkbox(False, "New random walk every time"),
        steps = (50,(10..500))):
    # We cache the walk in the global variable vv, so that
    # checking or unchecking the points checkbox doesn't change
    # the random walk.
    html("<h2>%s steps</h2>"%steps)
    global vv
    if refresh or len(vv) == 0:
        s = 0; v = [(0,0)]
        for i in range(steps):
             s += random() - 0.5
             v.append((i, s))
        vv = v
    elif len(vv) != steps:
        # Add or subtract some points
        s = vv[-1][1]; j = len(vv)
        for i in range(steps - len(vv)):
            s += random() - 0.5
            vv.append((i+j,s))
        v = vv[:steps]
    else:
        v = vv
    L = line(v, rgbcolor='#4a8de2')
    if pts: L += points(v, pointsize=10, rgbcolor='red')
    show(L, xmin=0, figsize=[8,3])
def _(order=(1..12)):
  ft = f.taylor(x,x0,order)
  pt = plot(ft,-1, 5, color='green', thickness=2)
  html('$f(x)\;=\;%s$'%latex(f))
  html('$\hat{f}(x;%s)\;=\;%s+\mathcal{O}(x^{%s})$'%(x0,latex(ft),order+1))
  show(dot + p + pt, ymin = -.5, ymax = 1)
Line 81: Line 36:
attachment:randomwalk.png

=== 3D Random Walk ===
{{{
@interact
def rwalk3d(n=(50,1000), frame=True):
    pnt = [0,0,0]
    v = [copy(pnt)]
    for i in range(n):
        pnt[0] += random()-0.5
        pnt[1] += random()-0.5
        pnt[2] += random()-0.5
        v.append(copy(pnt))
    show(line3d(v,color='black'),aspect_ratio=[1,1,1],frame=frame)
}}}
attachment:randomwalk3d.png
attachment:taylor_series_animated.gif

Sage Interactions

This is a collection of pages demonstrating the use of the interact command in Sage. It should be easy to just scroll through and copy/paste examples into sage notebooks. If you have suggestions on how to improve interact, add them [:interactSuggestions:here] or email [email protected] . Of course, your own examples are also welcome!

  • [:interact/graph theory:Graph Theory]
  • [:interact/fractal:Fractals]
  • [:interact/calculus:Calculus]
  • [:interact/diffeq:Differential Equations]
  • [:interact/dynsys:Dynamical Systems]
  • [:interact/linear algebra:Linear Algebra]
  • [:interact/algebra:Algebra]
  • [:interact/number theory:Number Theory]
  • [:interact/web:Web Applications]
  • [:interact/bio:Bioinformatics]
  • [:interact/graphics:Drawing Graphics]
  • [:interact/misc:Miscellaneous]

Explanatory example: Taylor Series

This is the code and a mockup animation of the interact command. It defines a slider, seen on top, that can be dragged. Once dragged, it changes the value of the variable "order" and the whole block of code gets evaluated. This principle can be seen in various examples presented on the pages above!

var('x')
x0  = 0
f   = sin(x)*e^(-x)
p   = plot(f,-1,5, thickness=2)
dot = point((x0,f(x0)),pointsize=80,rgbcolor=(1,0,0))
@interact
def _(order=(1..12)):
  ft = f.taylor(x,x0,order)
  pt = plot(ft,-1, 5, color='green', thickness=2)
  html('$f(x)\;=\;%s$'%latex(f))
  html('$\hat{f}(x;%s)\;=\;%s+\mathcal{O}(x^{%s})$'%(x0,latex(ft),order+1))
  show(dot + p + pt, ymin = -.5, ymax = 1)

attachment:taylor_series_animated.gif

interact (last edited 2021-08-23 15:58:42 by anewton)