[Edu-sig] Calculus with Stickworks (more Gnu Math)

kirby urner kirby.urner at gmail.com
Sat Sep 30 02:22:07 CEST 2006

I've amended stickworks.py a little to show how the basic ideas of
differential calculus might be spelled out in Python.


Take a traditional classroom Polynomial with enough roots to make it
wiggle up and down (just come up with some factors), then tweak the
vertical scale to keep VPython from zooming out 3 miles just to take
in the view.

    def snakeywakey(x):
        Polynomial with x-axis crossings at 3,2,-3,-7, with scaler
        to keep y-values under control (from a plotting point of view)
	return 0.01 * (x-3)*(x-2)*(x+3)*(x+7)


Include a generic derivative taker that expects a function as input,
and returns a function that evaluates to approximately df(x)/dx at any
x, assuming whatever you need about continuity and so on.

    def deriv(f, h=1e-5):
        Generic df(x)/dx approximator (discrete h)
	def funk(x):
		return (f(x+h)-f(x))/h
	return funk


Graph them together in two different colors.  See how a diving slope
means a negative derivative, while a leveling off means derivative = 0
(crossing x axis) and so on.

Eyeballing the two curves together is a big part of "getting" that the
green guy is talking about the *slope* of the red guy at the same x.

    # domain generators
    d1 = dgen(-8, 0.1)
    d2 = dgen(-8, 0.1)


    deriv_snakeywakey = deriv(snakeywakey)

    graph1 = xyplotter(d1, snakeywakey)
    graph2 = xyplotter(d2, deriv_snakeywakey)

    Edge.color = (1,0,0)  # make 4th degree snakeywakey red

    for i in xrange(130):

    Edge.color = (0,1,0)  # make its 3rd degree derivative green

    for i in xrange(130):

Here's a link to the picture (in reality, you can zoom in and rotate,
look from all points of view -- part of our "beyond flatland"
campaign, designed to remind people why we don't prefer the
flatlanders' calculators to our flatscreen computers).


>>> == RESTART ================================
>>> import stickworks
Visual 2005-01-08
>>> stickworks.testmemore()


Some infrastructure for working with Vectors and Edges, including
an xyplotter generator and axes maker.

By Kirby Urner, Sept 13, 2006

Updated Sept 29, 2006:
make color Edge class-level attribute
add funky derivative demo
refactor a bit


For colorized source:

Some relevant discussion:


More information about the Edu-sig mailing list