
Discrete Math for Quaker schools
Posted:
Feb 24, 2007 2:52 PM


So what I'm pushing in Quaker schools, given my weighty status, is attention to cumulative totals, even *before* we monitor differences.
I think it comes earlier, in the Piagetian sense, to want to accumulate a running total of numbers, to get a sequence of partial sums. Haim was asking about this earlier, and how to avoid the calculus right off (i.e. all that limits stuff, not so intrinsic to discrete math, where we don't even have a continuum).
The obvious sequences have to do with growing a shape using similar pieces, gnomons, as when we grow a square using L shapes, or a halfoctahedron with successively larger squares. These come as terms in a sequence, but then we want those partial sums, i.e. that square, cube, tetrahedron, halfoctahedron, cuboctahedron, as devel oped "so far" from the layers we've committed.
def squarebase(n): return n*n
somelayers = [ squarebase(x) for x in range(1, 21) ]
halfoctas = [sum(somelayers[:y]) for y in range(1, 21) ]
At this point in the module's loading, halfoctas will have become incarnate (note religious terminology) as:
>>> halfoctas [1, 5, 14, 30, 55, 91, 140, 204, 285, 385, 506, 650, 819, 1015, 1240, 1496, 1785, 2109, 2470, 2870]
Next we go to Sloane's OnLine Encyclopedia of Integer Sequences, a kind of mecca for discrete mathematicians, and cut 'n paste some of those opening numbers. And we get:
http://www.research.att.com/~njas/sequences/A000330
OK, so Sloane's has a 0. We couldn've had that too.
Let's do a tetrahedron:
>>> def tribase(n): return n*(n + 1)//2
>>> somelayers = [ tribase(x) for x in range(1, 21) ] >>> tetras = [sum(somelayers[:y]) for y in range(1, 21) ]
>>> tetras [1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, 1140, 1330, 1540]
Cutting and pasting takes us to:
http://www.research.att.com/~njas/sequences/A000292
And now the cuboctahedrals, which you might think obscure, but not in our Quaker academies, were we see this as the CCP, ground zero for crystallography, as well as the same as the icosahedrals, in terms of balls in a layer (owing to our Jitterbug Transformation):
>>> def icosas(n): if n<=1: return 1 # dismissing irrelevant cases return 10*(n1)**2 + 2
>>> somelayers = [ icosas(x) for x in range(1, 21) ] >>> somelayers [1, 12, 42, 92, 162, 252, 362, 492, 642, 812, 1002, 1212, 1442, 1692, 1962, 2252, 2562, 2892, 3242, 3612] >>> cuboctas = [sum(somelayers[:y]) for y in range(1, 21) ] >>> cuboctas [1, 13, 55, 147, 309, 561, 923, 1415, 2057, 2869, 3871, 5083, 6525, 8217, 10179, 12431, 14993, 17885, 21127, 24739]
Sloane's: http://www.research.att.com/~njas/sequences/A005902
Kirby

