(*^ ::[ Information = "This is a Mathematica Notebook file. It contains ASCII text, and can be transferred by email, ftp, or other text-file transfer utility. It should be read or edited using a copy of Mathematica or MathReader. If you received this as email, use your mail application or copy/paste to save everything from the line containing (*^ down to the line containing ^*) into a plain text file. On some systems you may have to give the file a name ending with ".ma" to allow Mathematica to recognize it as a Notebook. The line below identifies what version of Mathematica created this file, but it can be opened using any other version as well."; FrontEndVersion = "NeXT Mathematica Notebook Front End Version 2.2"; NeXTStandardFontEncoding; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, cellOutline, groupLikeTitle, center, M36, N36, O486, bold, R65535, L3, r58981, g58981, b58981, e8, 24, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, cellOutline, groupLikeTitle, center, M36, N36, O486, bold, B65535, r58981, g58981, b58981, e6, 18, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, cellOutline, groupLikeTitle, center, M36, N36, O486, bold, R32767, B32767, r58981, g58981, b58981, 14, "Times"; ; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M18, O486, bold, R65535, a8, 14, "Times"; ; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M19, O486, bold, B65535, a6, 12, "Times"; ; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteDot, O486, bold, G32767, 10, "Times"; ; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, O487, a2, e2, 14, "Times"; ; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M19, N18, O487, italic, a2, e2, 12, "Times"; ; fontset = input, noPageBreakInGroup, nohscroll, noFill, preserveAspect, groupLikeInput, M18, N5, O487, bold, a2, e2, 12, "Courier"; ; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M18, N5, O487, L-4, a2, e2, 12, "Courier"; ; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, R65535, a2, e2, 12, "Courier"; ; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, a2, e2, 12, "Courier"; ; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, a2, e2, 12, "Courier"; ; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l69, w314, h237, 12, "Courier"; ; fontset = name, inactive, nowordwrap, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, B65535, 10, "Times"; ; fontset = header, inactive, noKeepOnOnePage, preserveAspect, M7, 10, "Times"; ; fontset = leftheader, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, O234, 10, "Times"; ; fontset = footer, inactive, noKeepOnOnePage, preserveAspect, center, M7, 12; fontset = leftfooter, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, O234, 10, "Times"; ; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 10, "Times"; ; fontset = clipboard, inactive, noKeepOnOnePage, preserveAspect, M7, 12; fontset = completions, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, M7, 12; fontset = special1, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, cellOutline, center, M36, N36, O486, b49152, a2, e2, 14, "Times"; ; fontset = special2, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, cellOutline, M36, N36, O486, R65535, r49151, 14, "Times"; ; fontset = special3, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, right, M7, 12; fontset = special4, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, M7, 12; fontset = special5, inactive, nowordwrap, noKeepOnOnePage, preserveAspect, M7, 12; paletteColors = 128; currentKernel; ] :[font = subtitle; inactive; Cclosed; preserveAspect; startGroup] Introduction :[font = text; inactive; preserveAspect] This notebook, and its companion notebook EDemoII, are provided as a demonstration of calcE, a collection of Mathematica packages. The first section, About calcE, explains what the product is about and what it hopes to accomplish. The demonstration, beginning in the section MathE and continuing throughout this notebooks and EDemoII, is provided by way of evaluated input cells with no commentary. In each example there are things that Mathematica does not do "out-of-the-box", or does only with considerably more effort than calcE requires. I suggest you just skim through the first time; then later go through the examples more carefully, paying attention to the simple syntax and the resulting output. Do not re-execute the input cells, as they will not work without the calcE package! calcE ships with extensive documentation, from which these examples are taken. Each notebook contains a lot of graphics cells, intended for use with version 2.1 or higher of Mathematica. In computers with limited memory, this may cause problems if you scroll through an entire notebook at once. If you see your memory is running low, just close the notebook, reopen it, and continue from where you left off. ;[s] 11:0,0;90,1;95,2;113,3;124,4;450,5;461,6;540,7;545,8;985,9;996,10;1219,-1; 11:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = text; inactive; preserveAspect; endGroup] Note: Some graphics cells contain the Greek letter pi, which only displays properly on Macintoshes. This is an oversight of mine which I have repaired on the notebooks for version 2.1 and higher, but which is inconvenient for me to repair in these notebooks for version 2.0. If the commands were executed on computers other than a Macintosh, the string "pi" would appear in the graphic instead. :[font = subtitle; inactive; Cclosed; preserveAspect; startGroup] About calcE :[font = section; inactive; Cclosed; preserveAspect; startGroup] What is calcE? :[font = text; inactive; preserveAspect; endGroup] calcE is a collection of Mathematica packages and supporting documentation. The goal is to improve the power and ease of use of Mathematica through extensive use of Mathematica's internal programming language, with emphasis on graphics. ;[s] 7:0,0;29,1;40,2;132,3;143,4;169,5;180,6;241,-1; 7:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; startGroup] The calcE Story :[font = text; inactive; preserveAspect; endGroup] calcE grew out of my frustration with the standard Plot command in Mathematica. In December 1990 I began tinkering with the Plot command to see if I could improve it. I found that I could capture the results of Plot, disassemble them, and put them back together the way I wanted. I also found that could capture the contents of the command before execution, and have Mathematica itself translate them into its own language. It then became possible to use easy English words in place of obscure and lengthy options, and to have each item recognized as what it was (function, label, style, geometric object, etc.) and used accordingly. I also began applying the same techniques to other commands. Since I am involved in developing and administering a teaching laboratory, I wanted to make using Mathematica as easy as possible for students, who are nearly always new to Mathematica but need to begin using it immediately. As a result calcE concentrates on the basic everyday activities of Mathematica, such as defining functions, producing graphics, making tables of values, performing algebraic manipulations, and solving equations. ;[s] 11:0,0;71,1;82,2;371,3;382,4;801,5;812,6;876,7;887,8;995,9;1006,10;1141,-1; 11:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; startGroup] The calcE Philosophy :[font = text; inactive; preserveAspect] I believe that Steven Wolfram and the programmers at Wolfram Research have done an outstanding job designing and implementing the Mathematica kernel. They have made a great number of excellent design decisions that make Mathematica an extremely powerful and flexible tool. But many of those design decisions have also made Mathematica more difficult to use. I think it is neither desirable nor necessary for non-expert users, or even expert users who are just trying to get something done, to have to face the consequences of every design decision. It is possible for Mathematica to be both powerful and easy-to-use. Here are some of the principles I have tried to follow in the development of calcE: ;[s] 9:0,0;134,1;145,2;224,3;235,4;331,5;342,6;576,7;587,8;709,-1; 9:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = text; inactive; preserveAspect] -- Syntax should be as simple and flexible as possible. :[font = text; inactive; preserveAspect] -- All commonly used commands and functions should be accepted in lower case form. :[font = text; inactive; preserveAspect] -- Whenever possible, there should be no restriction on the order in which items appear inside a command. :[font = text; inactive; preserveAspect] -- Commonly used options should be replaced by easy-to-remember "keywords", single words appearing as items. :[font = text; inactive; preserveAspect] -- A single comprehensive command is better than a lot of specialized one-gimmick commands that are difficult or impossible to use in combination. :[font = text; inactive; preserveAspect; endGroup] -- When defining enhanced commands, the standard Mathematica syntax should still work, giving the same result. The original command should still be accessible to the user. ;[s] 3:0,0;49,1;60,2;183,-1; 3:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; startGroup] Files Included :[font = subsection; inactive; preserveAspect] Packages :[font = text; inactive; preserveAspect] calcE.m contains everything in the five packages below in one convenient package for easy loading. Uses 900K of kernel memory in Macintosh version 2.2. InitE.m contains many utility routines used by the other packages, lower case substitutions for standard Mathematica words, and the EOn/EOff and lcOn/lcOff routines that control conversion to enhanced commands and conversion of lower case words, respectively. Uses 92K of kernel memory in Macintosh version 2.2. Required by all other packages. MathE.m contains routines for everyday use concerning basic numerical calculations and algebra. These include the enhanced commands DefinE, ExpandE, FactorE, MaxE, MinE, NestE, NestListE, NSolvE, RoundE, SolvE, and TablE; also facilities for defining and using Piece functions, and several other minor improvements. Uses 75K of kernel memory in Macintosh version 2.2. Automatically loads InitE.m if needed. PlotE.m contains the enhanced command PlotE. Uses 392K of kernel memory in Macintosh version 2.2. Automatically loads InitE.m and MathE.m if needed. TeachE.m contains routines for use in a teaching laboratory and for general use in calculus. The enhanced commands DiffE, IntegrateE, and NIntegratE are included, along with the following routines: CSpline, Difference, PartialSum, DRule, Euler, FindInverse, ImplicitD, Improper, Subst, IBP, InterP, RandomFunction, TrigSolve, Newton, Riemann, Trapezoidal, Simpson, Cobweb, SlopeMovie, DerivMovie, ParaMovie, DrawArea, AreaGraph, and DrawAreaGraph. Uses 328K of kernel memory in Macintosh version 2.2. Automatically loads InitE.m, MathE.m, and PlotE.m if needed. Plot3DE.m contains the enhanced command Plot3DE. Uses 38K of kernel memory in Macintosh version 2.2. Automatically loads InitE.m and MathE.m if needed. ;[s] 102:0,0;12,1;161,2;173,3;275,4;286,5;302,6;305,7;306,8;310,9;320,10;324,11;325,12;330,13;528,14;541,15;670,16;676,17;678,18;685,19;687,20;694,21;701,22;705,23;707,24;711,25;713,26;718,27;720,28;729,29;731,30;737,31;739,32;745,33;747,34;752,35;758,36;763,37;964,38;977,39;1007,40;1012,41;1122,42;1136,43;1247,44;1252,45;1254,46;1264,47;1270,48;1280,49;1335,50;1342,51;1344,52;1354,53;1361,54;1371,55;1373,56;1378,57;1380,58;1385,59;1387,60;1398,61;1400,62;1409,63;1411,64;1419,65;1426,66;1431,67;1433,68;1436,69;1438,70;1444,71;1446,72;1460,73;1462,74;1471,75;1473,76;1479,77;1481,78;1488,79;1495,80;1506,81;1508,82;1515,83;1517,84;1523,85;1525,86;1535,87;1537,88;1547,89;1549,90;1558,91;1565,92;1573,93;1575,94;1584,95;1590,96;1603,97;1728,98;1743,99;1773,100;1780,101;1890,-1; 102:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,10,8,Courier,1,12,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsection; inactive; preserveAspect] Notebooks :[font = text; inactive; preserveAspect] InitE.ma MathE.ma PlotE.ma TeachE.ma Plot3DE.ma all contain the code for their respective packages in notebook form for convenient browsing. These can also be directly loaded if desired just like packages. ;[s] 2:0,0;52,1;220,-1; 2:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = subsection; inactive; preserveAspect] Documentation :[font = text; inactive; preserveAspect] CalcEDoc.ma (This file) contains general information about calcE and documentation for the user features of InitE. ;[s] 4:0,0;13,1;25,2;29,3;125,-1; 4:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = text; inactive; preserveAspect] The remaining documentation files are loaded with examples showing how calcE can be used. :[font = text; inactive; preserveAspect; endGroup] MathEDoc.ma contains documentation and examples for the package MathE.m. PlotEDocI.ma contains documentation and examples for the package PlotE.m, except for geometric objects. PlotEDocII.ma contains documentation and examples for geometric objects in the package PlotE.m. TeachEDoc.ma contains documentation and examples for the packages TeachE.m and Plot3DE.m. ;[s] 8:0,0;16,1;76,2;94,3;189,4;208,5;294,6;312,7;394,-1; 8:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = section; inactive; Cclosed; preserveAspect; startGroup] Installing and Using calcE :[font = text; inactive; preserveAspect] The simplest thing to do is to copy all packages (or if you prefer, all notebook versions of the packages, or both) into your Mathematica "Packages" folder or directory. You may need assistance from your system adminstrator if installing on a Unix system. You can then load calcE by executing the command line ;[s] 3:0,0;130,1;141,2;318,-1; 3:1,13,10,Times,0,14,0,0,0;1,13,10,Times,2,14,0,0,0;1,13,10,Times,0,14,0,0,0; :[font = input; noFill; preserveAspect] <