table.82p - From the Spring 1996 issue of Eightysomething!


Multi-function Tables for the TI-85
Dave Slomer, Winton Woods HS, Cinti, OH

While surfing the Internet in August, I found a posting from Marco
Radzinschi (Baltimore, MD) to the Graph-TI listserv.  Marco mentioned that
he had written a TABLE program for the TI-85 and that he would be glad to
post it to the list or to anyone interested.  I decided to look at this
humble guys work, since all of us 85 lovers really do envy tables on the
82 and Who knows?, I mused, maybe this guys stuff would be good.

Yeah, maybe.  It is an elegant, full-featured, too-good-to-be-true work
of programming art (see figure 1).  When I later learned that Marco was
(then) an eighth grader (and is now a freshman at Pikesville High School),
I was stunned.  His original, crude-by-comparison version was soon upgraded,
and then again, and again (all in a matter of days), to its final,
couldnt-be-much-better form.  Via truly inspired code, he uses EVAL and
dimL to find out how many functions are defined while utilizing a matrix
(which he redimensions repeatedly) of complex numbers to hold each point
(both coordinates) for each function in columns, one row at a time.  His
thorough knowledge of the 85 has led to a winner of a program.  Short,
sweet, powerful.  Enviable.  

The best things about Marcos program are:
 the user may store to and turn on or off any of the 99 definable
functions (the ones which are on will appear in the table);
 the functions may contain lists and may be piecewise defined;
 it requires no input  just define the function(s) (see fig. 2) and a
suitable window (see fig. 3) before running (Marco uses the window
variables as table parameters);
 it can handle any number of functions;
 at the end of execution, the user may recall the matrix (T) containing
the data and use the cursor keys to scroll through it (see fig. 4), but
should go into the matrix editor and travel from function to function via
the COL and COL buttons (see figs. 5 and 6) to get the best look at the
table.

The user must pay close attention to (i.e., think about) the quantity
(xMax-xMin)/xScl+1, which equals the number of points in the table, since
it could be quite large, taking too long and too much memory.  A good idea
would be to have the program display this quantity at the outset, while
another would be to prompt the user for the number of points to be plotted
(NP) and then store (xMax-xMin)/(NP-1) xScl, but I kind of like the
thinking (read: estimating) alternative.  Besides, storing to xScl will
cause regraphing if the graph is redisplayed.

The program is slow at first since it does all its calculations before
displaying anything, but once its finished, it couldnt be faster, moving
around the matrix/table much faster than an 82!

Unfortunately (but predictably) the program cannot handle domain errors.
For instance, attempting to graph any of y=1/x, y=x^(1/2), y=log x, or
y=sin-1x in the window [-6.3,6.3] will not work.  Still, the users careful
thought about selecting the window will enable the program to avoid these
errors (though not necessarily for all functions in one run), a good skill
to have and improve.

(P.S.  Marco advises that DiffEq and Polar versions of the table program
may be obtained simply by changing a few reserved words (e.g., xMin) to
match the corresponding MODE and system variables.)

