home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / calculat / cc4_9206.zip / XPL.HLP < prev    next >
Text File  |  1992-06-02  |  88KB  |  2,242 lines

  1. Remarks on structure of help file.  This screen is never displayed by X(PLORE).
  2. Each screen of information begins with a centered title, and the last line
  3. is followed by CHR(200) ╚ .  Following that is the list of screen numbers
  4. referred to by <A>, <B>, ... on the screen.  The screen number of this screen
  5. is 0, the first visible screen (the next screen) is number 1.  The last number
  6. in the list of numbers before the terminator 9999 is the screen number of the
  7. current screen.
  8. 9999
  9.                       X(PLORE) - The Mathematics Processor
  10.                                   On-Line Help
  11.  
  12.  
  13. <A>  How to use On-Line Help
  14.  
  15. <B>  Capabilities of X(PLORE)
  16.  
  17. <C>  Introduction to X(PLORE)
  18.  
  19. <D>  Help for individual commands
  20.  
  21. <E>  Function keys and other special keys
  22.  
  23. <F>  Saving and loading your formulas and data files
  24.  
  25. <G>  Printing
  26.  
  27. <H>  Disk and Memory management
  28. 7
  29. 6
  30. 8
  31. 2
  32. 5
  33. 78
  34. 79
  35. 81
  36. 1
  37. 9999
  38.                                    Commands 1
  39.  
  40. <A>  !              <F>  AND            <L>  COLOR          <Q>  DIF
  41. <H>  "              <K>  ASC            <H>  COLS           <L>  DIFFG
  42. <K>  '              <B>  ASIN           <H>  COLVECTOR      <C>  DIV
  43. <A>  *              <B>  ASINH          <H>  COND           <H,I> DISPLAY
  44. <A,K> +             <B>  ATAN           <D>  CONJ           <L>  DOTGRAPH
  45. <A>  -              <B>  ATAN2          <B>  COS            <L>  DTG
  46. <H>  .*             <B>  ATANH          <B>  COSH           <H>  EIG
  47. <H>  ./             <H,I> AVERAGE       <B>  COT            <H>  EIGENVAL
  48. <H>  .^             <L>  AXIS           <L>  CRCOLOR        <T>  ELSE
  49. <A>  /              <L>  AXISCOLOR      <L>  CROSSX         <T>  END
  50. <W>  //             <L>  BARG           <L>  CROSSY         <L>  ERASE
  51. <F>  <              <T>  BEEP           <B>  CSC            <W>  EVAL
  52. <F>  <=             <C>  BIN            <M>  CURVE3D        <J>  EVALPOLY
  53. <F>  <>             <A>  BINOM          <L>  CYAN           <E>  EXACTOFF
  54. <F>  ==             <L>  BKCOLOR        <L>  DARKGRAY       <E>  EXACTON
  55. <F>  >              <L>  BLACK          <K>  DATE           <T>  EXIT
  56. <F>  >=             <L>  BLUE           <B>  DEGREE         <B>  EXP
  57. <A>  ABS            <L>  BROWN          <E>  DENOMINATOR    <Y>  EXPANDON
  58. <B>  ACOS           <H>  CHARPOLY       <H>  DET            <Y>  EXPANDOFF
  59. <B>  ACOSH          <K>  CHR            <H>  DIAG           <X>  more commands
  60. 21
  61. 22
  62. 23
  63. 24
  64. 25
  65. 26
  66. 27
  67. 28
  68. 35
  69. 36
  70. 37
  71. 38
  72. 57
  73. 2
  74. 64
  75. 67
  76. 68
  77. 69
  78. 2
  79. 71
  80. 78
  81. 79
  82. 8
  83. 3
  84. 83
  85. 2
  86. 9999
  87.                                    Commands 2
  88.  
  89. <H>  EYE            <H>  GETMATRIXTOL   <C>  INOT           <L>  LIGHTMAGENTA
  90. <F>  FALSE          <O>  GETSOLVETOL    <T>  INPUT          <L>  LIGHTRED
  91. <L>  FIELD          <L>  GR             <T>  INPUT@         <L>  LINE
  92. <L>  FILL           <M>  GR3            <T>  INPUTS         <L>  LINESTYLE
  93. <R>  FIN            <L>  GRAPH          <T>  INPUTS@        <Y>  LIST
  94. <E>  FIX            <M>  GRAPH3D        <C>  INT            <L>  LISTG
  95. <E>  FLOAT          <T>  GRAPHICS       <L>  INTEG          <B>  LN
  96. <L>  FONTSIZE       <L>  GREEN          <C>  INTEGER        <B>  LNGAMMA
  97. <T>  FOR            <L>  GRID           <Q>  INTOL          <U>  LOAD
  98. <W>  FORGET         <Z>  GSAVEOFF       <C>  IOR            <U>  LOADGRAPH
  99. <C>  FRAC           <Z>  GSAVEON        <F>  ISALIST        <U>  LOADTEXT
  100. <I>  FREQUENCIES    <C>  HEX            <F>  ISBIGNUM       <B>  LOG10
  101. <U>  FSAVE          <L>  HISTOGRAM      <C>  IXOR           <H>  LU
  102. <U>  FSAVEGRAPHS    <C>  IAND           <L>  KEEPLINE       <L>  MAGENTA
  103. <O>  FSOLVE         <T>  IF             <I,K>  LENGTH       <L>  MARK
  104. <T>  FUNCTION       <D>  IM             <L>  LEVELC         <H>  MATRIX
  105. <L>  GETBKCOLOR     <O>  IMPLICIT       <L>  LIGHTBLUE      <M>  MATRIXG
  106. <L>  GETCOLOR       <R>  IN             <L>  LIGHTCYAN      <H>  MATRIXTOL
  107. <R>  GETINDEPTH     <R>  INDEPTH        <L>  LIGHTGRAY      <H,I> MAX
  108. <R>  GETINTOL       <R>  INERROR        <L>  LIGHTGREE      <X>  more commands
  109. 21
  110. 22
  111. 23
  112. 24
  113. 25
  114. 26
  115. 27
  116. 28
  117. 35
  118. 36
  119. 37
  120. 38
  121. 57
  122. 3
  123. 64
  124. 67
  125. 68
  126. 69
  127. 3
  128. 71
  129. 78
  130. 79
  131. 8
  132. 4
  133. 34
  134. 63
  135. 3
  136. 9999
  137.                                    Commands 3
  138.  
  139. <L>  MAXCOLOR       <L>  POLARG          <H>  ROWS          <B>  TAN
  140. <H>  MEDIT          <L>  POLARGRID       <I>  ROWVECTOR     <B>  TANH
  141. <H,I> MIN           <K>  POS             <H>  RREF          <T>  TEXT
  142. <C>  MOD            <W>  PRECISION       <U>  SAVEGRAPH     <W>  TEXTCOLOR
  143. <V>  NEWPAGE        <V>  PRINT           <U>  SAVE          <L>  THICKLINE
  144. <L>  NOAXIS         <V>  PRINTGRAPH      <B>  SEC           <L>  THICKTEXT
  145. <L>  NOGRID         <T>  PROCEDURE       <L>  SETCRO        <L>  THINLINE
  146. <F>  NOT            <G,H,I> PRODUCT      <B>  SINH          <L>  THINTEXT
  147. <E>  NUMERATOR      <H>  QR              <B>  SIN           <H>  TRACE
  148. <H>  ONES           <L>  QU              <L>  SK            <K>  TIME
  149. <F>  OR             <L>  QUICKG          <L>  SKETCH        <L>  TRAJ
  150. <L>  PA             <B>  RADIAN          <O>  SOLVE         <H>  TRANS
  151. <M>  PA3            <A>  RANDOM          <J>  SOLVEPOLY     <F>  TRUE
  152. <A>  PAR            <H>  RANK            <O>  SOLVETOL      <W>  UNDEFINED
  153. <L>  PARAMG         <D>  RE              <H>  SORT          <L>  UNMARK
  154. <M>  PARAMG3D       <L>  RECT            <A>  SQRT          <T>  UNTIL
  155. <T>  PAUSE          <L>  RED             <H,I> STANDEV      <K>  UPCASE
  156. <B>  PI             <H,I> REGR           <K>  STR           <K>  VAL
  157. <H>  PINV           <T>  REPEAT          <G,H,I> SUM        <L>  VARYLINE
  158. <L>  PLOT           <T>  RETURN          <H>  SVD           <L>  VWRITE@
  159. <L>  PO             <A>  ROOT            <P>  TABLE         <X>  more commands
  160. 21
  161. 22
  162. 23
  163. 24
  164. 25
  165. 26
  166. 27
  167. 28
  168. 35
  169. 36
  170. 37
  171. 38
  172. 57
  173. 4
  174. 64
  175. 67
  176. 68
  177. 69
  178. 4
  179. 71
  180. 78
  181. 79
  182. 8
  183. 5
  184. 18
  185. 4
  186. 9999
  187.                                    Commands 4
  188. <T>  WAIT            <V>  WINDOWTOP       <W>  ZERO           <Z>  Σ (alt-s)
  189. <X>  WHILE           <M>  WORDWRAPON      <F>  ^              <A,F>  ()
  190. <V>  WHITE           <M>  WORDWRAPOFF     <B>  π (alt-p)      <I>    {}
  191. <V>  WINDOW          <Q>  WRITE           <C>  î (alt-i)      <A,G,H>  []
  192. <V>  WINDOWBOTTOM    <V>  WRITE@          <B>  ê (alt-e)      <H,S>  |
  193. <V>  WINDOWLEFT      <X>  XOR             <E>  ² (alt-r)      <J>    %
  194. <V>  WINDOWRIGHT     <Y>  YELLOW          <E>  √ (alt-q)      <U>  &
  195. Function Keys and other special keys
  196. F1      Help   (If graphics screen visible, abbreviated help)  <K>
  197. F2      Print menu  (If graphics screen visible, print graphic)  <L>
  198. F3      Begin marking text        Shift-F3   Mark entire entry  <M>
  199. F4      Insert text cut with F3   Control-F4   Delete text buffers  <M>
  200. F5      Scroll output up          Shift-F5   Scroll up full screen   <N>
  201. F6      Scroll output down        Shift-F6   Scroll down full screen  <N>
  202. F7      Save current work   (If graphics screen visible, save screen)  <O>
  203. F8      Load work from file <O>
  204.              Shift-F8  View directory    Control-F8  Change directory  <O>
  205. F9      Display last graph     Shift-F9     Toggle last graph to disk <P>
  206.                                Control-F9   Redo configuration file <T>
  207. F10     Toggle between Input Window and Subroutine Window <Q>
  208. Insert           Toggle Insert/Overwrite mode <R>
  209. Control-Enter    Insert a blank line
  210. 34
  211. 22
  212. 24
  213. 26
  214. 21
  215. 10
  216. 30
  217. 37
  218. 29
  219. 82
  220. 7
  221. 79
  222. 18
  223. 11
  224. 78
  225. 63
  226. 71
  227. 11
  228. 35
  229. 19
  230. 25
  231. 38
  232. 28
  233. 23
  234. 17
  235. 27
  236. 5
  237. 9999
  238.                            Capabilities of X(PLORE)
  239.  
  240. Evaluate formulas <A>
  241.     Using trigonometric, exponential and logarithmic functions <B>
  242.     Using real and complex numbers <C>
  243.           hexadecimal and binary numbers <D>
  244.           exact fractions and huge integers <E>
  245.           strings <F>
  246.     Algebraic Simplification <Z>
  247. Graph curves <G>, polar <H> and parametric <I> curves
  248. Graph surfaces <J>, parametric surfaces <K>, space curves <L>
  249.                                                        and matrix data <M>
  250. Solve equations and systems of equations <N>
  251. Define implicit functions <O>
  252. Differentiate <P> and integrate <Q> functions
  253. Perform vector and matrix calculations <R> including eigenvalues and
  254.    eigenvectors <S> and statistical operations <T>
  255. Collect data into lists <U> and perform statistical operations <V>
  256. Save and load data from external files <W>
  257. Print calculations, results and graphs <X>
  258. Write your own Pascal-like functions and procedures <Y> using X(PLORE)'s
  259.     powerful mathematical and graphing operators.
  260. 21
  261. 22
  262. 24
  263. 23
  264. 25
  265. 37
  266. 40
  267. 41
  268. 42
  269. 58
  270. 59
  271. 60
  272. 61
  273. 64
  274. 65
  275. 68
  276. 69
  277. 28
  278. 31
  279. 32
  280. 34
  281. 35
  282. 78
  283. 79
  284. 71
  285. 83
  286. 6
  287. 9999
  288.                          How to use On-Line Help
  289.  
  290.      Items on each help screen are accompanied by letters surrounded by
  291. angle brackets, like <*>.  Pushing the corresponding letter on the keyboard
  292. will get you more help on this topic.
  293.  
  294.      To leave Help and return to X(PLORE), push <ESC>.  To back up to the
  295. previous help screen, push <PgUp>.
  296.  
  297.      Throughout these screens, X(PLORE) commands are printed entirely in
  298. UPPERCASE letters.
  299.  
  300.      These help screens are stored in the file X(PLORE).HLP, which should be
  301. in the same directory as X(PLORE) unless you have set up a different location
  302. in your configuration file <A>.
  303. 19
  304. 7
  305. 9999
  306.                           Introduction to X(PLORE)
  307.  
  308. <A>  Stopping X(PLORE) and saving your work so you can continue later
  309. <B>  Entering mathematical formulas into X(PLORE)
  310. <C>  Understanding your results and controlling decimal precision
  311.          PRECISION and UNDEFINED
  312. <D>  Using variables for storing results
  313.          FORGET
  314. <E>  Defining your own functions
  315.          EVAL
  316. <F>  Creating two-dimensional graphs
  317. <G>  Creating three-dimensional graphs
  318. <H>  Writing your own procedures and functions
  319. <I>  Adding comments to your work with //
  320. <J>  Using TEXTCOLOR to control the colors of your screen
  321. <K>  Using cut and paste to copy and edit your formulas
  322. <L>  Creating a configuration file for your own system
  323. <M>  List of reserved words (4 screens)
  324. 9
  325. 10
  326. 12
  327. 13
  328. 14
  329. 38
  330. 57
  331. 15
  332. 16
  333. 17
  334. 18
  335. 19
  336. 2
  337. 8
  338. 9999
  339.                     Stopping X(PLORE) and saving your work
  340.  
  341.      To stop X(PLORE), push Control-Q (for quit).  You will be asked if you
  342. want to save your work.  If you respond Y for yes, you will be asked to enter
  343. a file name for saving your work.  Enter any memorable name, followed by a
  344. period, followed by an extension.  The name can be up to 8 characters long,
  345. and the extension up to 3 characters.  One common practice is to always use the
  346. extension XPL to identify X(PLORE) files.  For example, you could call your work
  347. LEVERARM.XPL .
  348.      To reload your work when you next use X(PLORE), start X(PLORE) with the
  349. command:
  350.                    XPL LEVERARM.XPL
  351. That is, follow the program name X(PLORE) with the name of the file containing
  352. your work.
  353.      When you restart X(PLORE) you must execute all the lines in your Input
  354. Window. None of your functions or variables will be defined until you do this.
  355.      Advanced information:  Path information can be part of the file name.
  356. X(PLORE) will run files from remote directories, or CC can be in a remote
  357. directory and operate on a file in the current directory.
  358.  
  359.      See also <A> Using external files.
  360. 78
  361. 9
  362. 9999
  363.                 Entering mathematical formulas into X(PLORE)
  364.  
  365.      Mathematical formulas are entered into X(PLORE) much as you would
  366. ordinarily write them.  They are evaluated when you press <ENTER>.  The usual
  367. order of operations is followed, with exponentiation following multiplication
  368. and division following addition and subtraction. Parentheses () can be used to
  369. alter this order.  The main difference from ordinary mathematical notation is
  370. that everything must be written on one line. Here are some examples:
  371.  
  372.      Mathematics                                 X(PLORE)
  373.                 2
  374.       2(3.2-4.3)                               2*(3.2-4.3)^2
  375.  
  376.       4.2 - 2.3
  377.       ---------                           (4.2 - 2.3)/(2.1 + 3.2)
  378.       2.1 + 3.2
  379.  
  380.        Sin(4.2)                                  SIN(4.2)
  381.  
  382.      See also editing entries <A>, entering numbers <B>, algebraic functions
  383. <C>, transcendental functions <D>, hexadecimal and binary numbers <E>, matrices
  384. <F>, complex numbers <G>, huge integers and exact fractions <H> and output <I>.
  385. 11
  386. 20
  387. 21
  388. 22
  389. 23
  390. 28
  391. 24
  392. 25
  393. 12
  394. 10
  395. 9999
  396.                                 Editing entries
  397.  
  398.      When typing an entry to X(PLORE), you can correct your entry by erasing
  399. with the Backspace and Delete keys, moving the cursor with the arrow keys, and
  400. toggling between insert and overwrite mode by pressing the Insert key.  You
  401. can leave your formula with the vertical arrow keys, but if you do the formula
  402. will not be evaluated.  To evaluate a formula, you must press <ENTER> while
  403. the cursor is somewhere in the formula.  Formulas that have been evaluated are
  404. displayed as normal text; unevaluated formulas, including the one you are
  405. currently typing, are displayed in boldface or a different color.
  406.      Formulas longer than one line can be entered into X(PLORE), but you must
  407. not press <ENTER> while typing an entry.  Just keep typing and let the entry
  408. flow from one line to the next.  If you press <ENTER>, you will cause your
  409. (partial) entry to be terminated and evaluated. After using a formula once, you
  410. can use it again.  Move the cursor to it, modify it if desired, and push
  411. <ENTER>.
  412.      CC is controlled temporally like a calculator rather than spatially
  413. like a spreadsheet.  Your results depend on the order in which you execute your
  414. formulas, not on the order in which they are listed on your screen. You can
  415. scroll more rapidly up and down your list of entries with the <PgUp> and <PgDn>
  416. keys. You can add blank lines between formulas by pressing Control-Enter. See
  417. Cut and Paste <A> for information on advanced editing.
  418. 18
  419. 11
  420. 9999
  421.           Understanding your results and controlling decimal precision
  422.  
  423.      When you enter a formula into X(PLORE) and press <ENTER> <A>, the result
  424. appears after the variable ANS in the Output Window.  If you assigned your
  425. formula to a variable <B>, it will appear after the variable in the Output
  426. Window.
  427.  
  428.      If the formula you entered had an undefined result, for example 1/0, then
  429. the value UNDEFINED will be returned.  If UNDEFINED is combined with any other
  430. value, the result is UNDEFINED.  You can even enter UNDEFINED from the
  431. keyboard.
  432.  
  433.      You can control the number of significant digits displayed by X(PLORE)
  434. with the command PRECISION(n), where n is a number between 1 and 9 (15 for
  435. CC87). PRECISION(0) causes results to be displayed in scientific notation:
  436. 1,234,567,890 = 1.23456789E9, -0.0000001 = -1E-7.
  437.  
  438.      Numbers displayed with î are complex values <C>.  These may be created by
  439. apparently real formulas like LN(-2) or ASIN(3) as well as by overtly complex
  440. formulas.
  441. 10
  442. 13
  443. 24
  444. 12
  445. 9999
  446.                       Using variables for storing results
  447.  
  448.      You can assign the result of any formula to a variable with a command
  449. like:    X = SIN(4.2) .  Variable names can be up to 12 characters long.  They
  450. must begin with a letter and use only letters and digits.  X(PLORE) ignores
  451. upper and lower case distinctions in variable names, so AB, ab, Ab and aB are
  452. the same variable.  All of your variables are listed in the Output Window.  If
  453. there are more variables than can be shown at one time, you can scroll the
  454. Output Window with the function keys F5 and F6.
  455.      Once a variable is defined, it can be used in another formula.  Having
  456. defined X as above, you could define Y = ASIN(X).  You can also redefine a
  457. variable by storing a new value in it.  If you do this, you will lose the
  458. original value entirely.
  459.      Variables are useful for long calculations.  You can save yourself a lot
  460. of recalculations by always storing the results of your calculations in your
  461. own variables instead of leaving them in the default variable ANS.
  462.      You can destroy the variable X with the command FORGET(X).  If X stored a
  463. large list, you could regain a considerable amount of memory by FORGETting X.
  464. Also, since a variable and a function <A> cannot have the same name, you must
  465. forget a variable before using its name for a function, and vice versa.
  466.      Greek letters can be used in variable names:  α=alt-a, ß=alt-b, δ=alt-d,
  467. φ=alt-f, Γ=alt-g, ε=alt-h, Ω = alt-o, and Θ=alt-t.
  468. 14
  469. 13
  470. 9999
  471.                           Defining your own functions
  472.  
  473.      X(PLORE) allows you to define your own functions for evaluating or
  474. graphing <A>. Anytime you find yourself using the same expression over and
  475. over, you should turn it into a function.  Here are some sample function
  476. definitions:
  477.                    f(x) = SIN(x + PI/3)
  478.                    g(x,y) = x^2 - y^2
  479.      Once defined, functions can be used in expressions or in other function
  480. definitions:
  481.                    y = f(3.2)
  482.                    z = g(4.1, -5.3)
  483.      Variables can be used in function definitions, and that leads to an
  484. important difference between functions and variables.  When a variable is
  485. defined, all terms of the definition are evaluated.  When a function is
  486. defined, its terms are not evaluated; they are evaluated when the function is
  487. evaluated.  That means that if a component of the function definition is
  488. changed, that change will be reflected the next time the function is evaluated.
  489.      You can force all the components of a function to be evaluated when the
  490. function is defined by preceding the function with the command EVAL:
  491.                    f(x) = EVAL(x^2+a)
  492. 38
  493. 14
  494. 9999
  495.              Writing your own procedures and subroutine functions
  496.  
  497.      X(PLORE) allows you to extend its power with multi-line procedures and
  498. functions written in a Pascal-like programming language.  All standard control
  499. structures are available.  These functions can have value parameters and
  500. function-name parameters.  You can write a routine that operates on an
  501. arbitrary function, like an equation-solving routine.  Subroutines can call one
  502. another irrespective of the order in which they are defined, and recursion is
  503. fully supported.
  504.      Subroutines can be used to implement algorithms from numerical analysis,
  505. to write interactive data analysis routines, or even to develop dynamic
  506. presentations and interactive mathematics lessons.  Programming commands are
  507. available to pause a routine or make it wait a specified number of seconds; to
  508. build complex graphics screens and permit the user to select one region with
  509. the crosshairs; to write messages to the user and to acquire input from text or
  510. graphics screens.  Text and graphics color can be controlled completely, and
  511. complex graphs can be recalled from disk for quick display.
  512.  
  513.      For more information on subroutines, see <A>.
  514. 71
  515. 15
  516. 9999
  517.                      Adding comments to your work with //
  518.  
  519.       You can add comments to your list of X(PLORE) entries to remind yourself
  520. why you did what you did or to inform another user how to use your routines.
  521. Comments can be used in both the Input Window and the Subroutine Window.
  522.  
  523.       To add a comment to the end of an entry, preface the comment with the
  524. symbol //, for example:
  525.  
  526.                         s = 16*t^2  // Law of falling bodies
  527.  
  528.      A line can be started with //, in which case the entire entry is a comment.
  529. 16
  530. 9999
  531.              Using TEXTCOLOR to control the colors of your screen
  532.  
  533.      If you are using a color screen, you can specify the color of executed
  534. entries and all but the last output, the color of new entries and the last
  535. output, and the background color with the command:
  536.  
  537.                         TEXTCOLOR(foreground,highlight,background)
  538.  
  539.      Foreground, highlight and background must be integers between 0 and
  540. MAXCOLOR, or color words which are just synonyms for these integers.  The color
  541. words corresponding to 0..15 are:
  542.  
  543. BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  544. DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW
  545. WHITE
  546.  
  547.         The author's favorite is TEXTCOLOR(BLUE, RED, LIGHTGRAY)
  548.         These colors can also be used for the graphics screens <A>.
  549. 51
  550. 17
  551. 9999
  552.               Using cut and paste to copy and edit your formulas
  553.  
  554.      You can copy part or all of one formula to another part of your Input
  555. Window or Subroutine Window as follows:  move the cursor to one end of the text
  556. to be copied, press F3, move the cursor to the other end (the selected text
  557. will be highlighted) and press <ENTER>.  At any later time, you can press F4,
  558. and the selected text will be copied at the cursor.
  559.      If you press <DEL> instead of <ENTER>, the selected text will disappear
  560. from the screen.  However, pressing F4 will still make it reappear at the
  561. position of the cursor.
  562.      You can insert the selected text at several points; just move the cursor
  563. to each place you want the text and press F4.
  564.      Pressing Shift-F3 will select the entire entry at the cursor, then
  565. pressing <ENTER> or <DEL> will either select or cut and select this entry.
  566.      X(PLORE) has 10 buffers for saving text.  If you make a second selection,
  567. your first selection is retained.  You can cause it to be copied at the cursor
  568. by pressing Alt-1.  Each time you make a new selection, your previous
  569. selections are promoted through the text buffers and can be accessed with the
  570. keys Alt-1 through Alt-9.  If you need to recover the memory used by the text
  571. buffers, you can empty all of them by pressing Control-F4.
  572.      Normally X(PLORE) will break long lines at a "natural" place.  To force
  573. lines to to use the full width of the screen, enter WORDWRAPOFF; to restore
  574. word wrap, enter WORDWRAPON.
  575. 18
  576. 9999
  577.                Creating a configuration file for your own system
  578.  
  579.      X(PLORE) starts with a number of default assumptions.  It starts in radian
  580. mode <A>, in insert mode <B>, with varying linestyles and colors <C>, and with
  581. certain screen colors <D>.  You can change these assumptions, you can change
  582. the location of the help file <E> and the last graph file <F>, and you can
  583. specify your printer type <G> with a configuration file.  To create a
  584. configuration file, press Control-F9 and answer the questions on the screen.
  585. X(PLORE) will create a file X(PLORE).CFG in the same directory as X(PLORE).  It
  586. will read this file the next time it starts and use the information found there
  587. to determine its default assumptions.
  588.  
  589.      If you already have a configuration file, you can change it by pressing
  590. Control-F9 and answering the questions on the screen.
  591. 22
  592. 11
  593. 49
  594. 17
  595. 7
  596. 63
  597. 79
  598. 19
  599. 9999
  600.                    Entering Numerical values into X(PLORE)
  601.  
  602.      Numerical values are entered into X(PLORE) just as you would ordinarily
  603. write them.  You can precede numbers with optional + or - signs.  The following
  604. are all valid numerical entries for X(PLORE):
  605.  
  606.                         3.47    0.347   .347   -347
  607.  
  608. Blanks are not permitted in numbers; the expression    - 34    is not valid.
  609.  
  610.      Numbers can be entered in scientific notation.  The exponent is preceded
  611. by E or e.  The following numbers are all valid and all equal:
  612.  
  613.              3.47    0.347E1    34.7e-1    347E-2    0.003470e3
  614.  
  615.      See also complex numbers <A>, huge integers and exact fractions <B>,
  616. hexadecimal and binary numbers <C>, and display precision <D>.
  617. 24
  618. 25
  619. 23
  620. 12
  621. 20
  622. 9999
  623.                       Arithmetic and algebraic functions
  624.  
  625.      Numbers <A> can be combined with + (addition), - (subtraction), *
  626. (multiplication), / (division) and ^ (exponentiation).  For example:
  627.  
  628.      3+4 = 7    3-4 = -1    3*4 = 12    3/4 = 0.75    3^4 = 81
  629.  
  630. Where it is not ambiguous, multiplication can be indicated by adjacency:
  631. 3(4-1) = 3*(4-1) = 9.  Implicit multiplication is potentially dangerous, and
  632. it is generally preferable to use * to indicate multiplication.
  633.  
  634.   The following functions are available (z is complex, x  real, n,m integers):
  635. SQRT(z) = square root of z -- abbreviation:  √=Alt-q
  636. z² = square of z -- ² entered as Alt-r
  637. ABS(z) = absolute value of z;
  638. n! = n-factorial
  639. RANDOM(n) = random integer in range 1..n
  640. RANDOM = random real in (0,1)
  641. INT(z) = integer part of x
  642. FRAC(z) = fractional part of x
  643. ROOT(x,n) = nth real root of x
  644. LNGAMMA(z) = natural log of Γ(z);  LNGAMMA(n+1) = LN(n!)
  645. BINOM(n,m) = binomial coefficient = n!/(m!*(n-m)!)
  646. 20
  647. 21
  648. 9999
  649.                     Trigonometric and exponential functions
  650.  
  651.      The value π = 3.14159... is entered into X(PLORE) as PI or alt-p.
  652. Available trigonometric functions are:  SIN(x), COS(x), TAN(x), COT(x), SEC(x)
  653. and CSC(x).  Inverse trigonometric functions are:  ASIN(x), ACOS(x) and
  654. ATAN(x). Trig functions are evaluated in radian mode unless you have changed to
  655. degree mode by entering the command DEGREE.  You can switch back to radian mode
  656. by entering the command RADIAN.  The current mode is indicated in the upper
  657. right corner of the screen.
  658.  
  659.      The function ATAN2(x,y) returns the polar angle of the point (x,y).
  660.  
  661.      The base of the natural logarithms, ê = 2.718... is entered as alt-e.
  662. Available exponential functions are EXP(x) = ê^x, LN(x) = natural logarithm of
  663. x, and LOG10(x) = real log (base 10) of x.
  664.  
  665.      Hyperbolic functions are also defined:  SINH(x), COSH(x), TANH(x),
  666. ASINH(x), ACOSH(x) and ATANH(x).
  667.  
  668.      In all of these functions (except LOG10), x can be any real or complex
  669. value <A>.
  670. 24
  671. 22
  672. 9999
  673.                    Integers:  hexadecimal and binary numbers
  674.  
  675.      X(PLORE) can distinguish integers from non-integers, and it will operate
  676. on integers with  n DIV m  (integer part of n/m) and  n MOD m  (remainder of n
  677. divided by m).
  678.  
  679.      Integers can be combined bitwise with the commands  n IAND m,  n IOR m
  680. and  n IXOR m.  You can invert the bits in an integer with the command INOT n .
  681.  
  682.      Integers can be entered in hexadecimal or binary notation.  Hexadecimal
  683. numbers are preceded by $, binary by #.  The following numbers are all equal:
  684.                            27 = $1a = #11011
  685.  
  686.      Integers, hexadecimal and binary numbers are all 32-bit quantities, but
  687. integers are signed and the others are not.  One kind of number can be changed
  688. to another with the command INTEGER(n)  (change to integer), HEX(n)  (change to
  689. hexadecimal)  and BIN(n)  (change to binary).
  690.  
  691.      There is a function PAR(n) that returns 1 if n is even and -1 if n is odd.
  692. This is useful for defining sums and products <A>.
  693.  
  694.      See also huge integers and exact fractions <B>;
  695. 25
  696. 23
  697. 9999
  698.                                 Complex numbers
  699.  
  700.      X(PLORE) can use complex numbers as easily as real numbers.  Any of
  701. X(PLORE)'s functions which are mathematically defined for complex values, for
  702. example SIN(x) and EXP(x), will accept complex arguments.  Complex numbers are
  703. entered into X(PLORE) like this:  3.2 - 4.7î, where î is entered with alt-i.
  704.  
  705.      Special complex functions include:
  706.  
  707. RE(z) = real part of z
  708. IM(z) = imaginary part of z
  709. CONJ(z) = conjugate of z
  710.  
  711.      If z is complex, then INT(z) returns INT(RE(z)) + INT(IM(z))î, and FRAC(z)
  712. is defined by INT(z) + FRAC(z) = z.  Also ABS(z) is the real modulus of z.  The
  713. polar argument of z can be computed as ATAN2(RE(z),IM(z)) <A>.
  714.  
  715.      Functions which do not use complex values include ATAN2, LOG10 and ROOT.
  716.  
  717.      Complex numbers can be defined with huge integer or exact fraction
  718. coefficients <B>.
  719. 22
  720. 25
  721. 24
  722. 9999
  723.                     Using huge integers and exact fractions
  724.  
  725.      X(PLORE) has special routines to accommodate huge integers and exact
  726. fractions with huge numerators and denominators.  To enter a huge integer,
  727. precede it with &:  &12345678987654321 will be stored exactly.  To create an
  728. exact fraction, use two exact parts:  &2/&3 is stored as 2/3, not 0.666666667.
  729.      Huge integers and exact fractions can be added, subtracted, multiplied,
  730. divided, and operated on by integer exponents.  The functions DIV, MOD, ! and
  731. BINOM work on huge integers; ABS, INT and FRAC work on exact fractions.
  732.      If any other function is applied to an exact fraction, the fraction will
  733. be changed to a decimal before the function is applied.
  734.      Matrices <A> can be defined with exact fraction entries, in which case
  735. addition, multiplication and division of matrices will be exact.
  736.      If  x  is an exact fraction, then NUMERATOR(x) and DENOMINATOR(x) are the
  737. numerator and denominator of x, and FLOAT(x) is the floating point approximation
  738. to x.  Conversely, if x is a floating point number, FIX(x) is the exact fraction
  739. which is the floating point representation of x.  This is useful for turning
  740. integers into huge integers.  Note:  because of the inaccuracies in the floating
  741. point representation of numbers, FIX(1/3) is different from &1/&3 = 1/fix(3).
  742.      To make X(PLORE) treat all integers as huge and all fractions as exact,
  743. enter the command EXACTON.  To leave exact mode, enter EXACTOFF.
  744.      You can try &3^100 and &100! to see huge integers, and &1/&3 + &2/&7 to see
  745. exact fractions.
  746. 28
  747. 25
  748. 9999
  749.                               Boolean expressions
  750.  
  751.      Real numbers and strings <A> can be compared with the operators
  752.  
  753. a == b     ( a equals b )
  754. a <> b     ( a does not equal b )
  755. a < b      ( a is less than b )
  756. a > b      ( a is greater than b )
  757. a <= b     ( a is less than or equal to b ) also denoted by ≤ = alt-l
  758. a >= b     ( a is greater than or equal to b) also denoted by ≥ = alt-m
  759.  
  760. The results of these comparisons is always one of the values TRUE, FALSE or
  761. UNDEFINED.  The result is UNDEFINED if one side is undefined or symbolic.
  762. These comparisons are used mostly in conjunction with the decision-making
  763. commands in subroutines <B>.  Complex numbers can be compared with == and <>.
  764. Note that the equals operator is 2 equal signs:  == .  This is so the
  765. expression  x == y  won't be confused with the variable assignment  x = y. The
  766. boolean values TRUE and FALSE can be combined with the usual logical operators
  767. AND, OR, XOR and NOT, for example:
  768.                            a < b OR c <> d
  769. Boolean values can be combined with numbers, since TRUE=1 and FALSE=0.
  770.      Variables can be tested for being a list or a huge number or exact
  771. fraction with the boolean functions ISALIST(x) or ISBIGNUM(x).
  772. 37
  773. 71
  774. 26
  775. 9999
  776.                                Sums and Products
  777.  
  778.      You can defined finite sums (and analogous products) with X(PLORE).  For
  779. example, to sum the first 20 squares, enter:
  780.  
  781.                           SUM(i^2,i = 1 to 20)
  782.  
  783. To take the product of the first 10 even inverses (1/2)*(1/4)*..*(1/20), enter:
  784.  
  785.                       PRODUCT(1/n,n = 2 to 20 step 2).
  786.  
  787. Functions can be defined with sums and products.  To define the nth Fourier
  788. approximation to the square wave, enter:
  789.  
  790.               f(x,n) = SUM(SIN(i*x)/i,i=1 to n step 2)
  791.  
  792. The operator SUM can be abbreviated with Σ = alt-s.
  793.  
  794.      You can also take the sum (product) of a list x with SUM(x) <A> or sum the
  795. columns of a matrix m with SUM(m) <B>.
  796. 35
  797. 32
  798. 27
  799. 9999
  800.                                     Matrices
  801.  
  802. <A>  Entering matrices into X(PLORE)
  803.         {...}  MATRIX  MEDIT  LOAD DISPLAY
  804. <B>  Defining special matrices
  805.         ONES  ZERO  EYE  RANDOM  DIAG
  806. <C>  Matrix operations
  807.          +  -  *  /  \  ^  .*  ./ .^
  808. <D>  Matrix functions
  809.          CONJ  TRANS  "  DET  TRACE  LU  QR  RREF  RANK  ROWS  COLS CHARPOLY
  810.          EIGENVAL  EIG  SVD  PINV  COND
  811. <E>  Sorting and statistical operations
  812.          SORT  MIN  MAX  SUM  PRODUCT  AVERAGE  STANDEV  REGR
  813. <F>  Controlling the accuracy of matrix operations
  814.          MATRIXTOL  GETMATRIXTOL
  815. 29
  816. 29
  817. 30
  818. 31
  819. 32
  820. 33
  821. 28
  822. 9999
  823.                 Entering matrices and defining special matrices
  824. There are four ways to enter a matrix into X(PLORE):
  825.  
  826. (i) enclose the elements in braces, separating the elements with commas and the
  827. rows with semicolons:   M = {1,2,3;4,5,6}
  828.  
  829. (ii) define each matrix element:  M = MATRIX(3*i+j-3, i = 1 to 2, j = 1 to 3)
  830.  
  831. (iii) make X(PLORE) display a spreadsheet for entering the elements of the
  832. matrix:  MEDIT(M).   Use the arrow and tab keys to move around the spreadsheet:
  833.  
  834. (iv)  read the elements of the matrix from a specially prepared file: LOAD(M)
  835. (see <A>)
  836.  
  837. To display a previously constructed matrix, enter the command
  838.                               DISPLAY(M).
  839. Certain matrices are predefined:
  840.      EYE(n) is an n x n identity matrix
  841.      ZERO(n,m) is an n rows by m columns matrix of zeros
  842.      ONES(n,m) is an n x m matrix of 1's
  843.      RANDOM(n,m) is an n x m matrix of random elements in the range (0,1)
  844.      DIAG(x) is a diagonal matrix whose elements are taken from the list (or
  845.              row or column vector) x.
  846. 78
  847. 29
  848. 9999
  849.                                Matrix operations
  850.  
  851.      Matrices can be combined in the usual way with  +  -  * , provided the
  852. sizes are correct.  You can raise a matrix to a positive or negative integer
  853. power:  A^n.  In addition, you can evaluate  A/B = A*B^(-1)  and
  854. A\B = A^(-1)*B.  Element-by-element multiplication or division between two
  855. matrices of the same size can be computed with the commands  A.*B  and A./B .
  856. The elements of a matrix can be raised to a power or their roots can be taken
  857. with  A.^x  or  Root(A,n) .
  858.  
  859.      Matrices and scalars can be multiplied and divided.  If  M  is a matrix
  860. and  x  a scalar, then  x*M  and M*x  multiplies each element of  M  times  x .
  861. Also, M/x  divides each element of  M  by  x , and  x/M = x*(M^(-1)).  A quick
  862. way to define the inverse of  M  is  1/M .
  863.  
  864.      Submatrices are also defined.  If  M  is a matrix, then  M[i,j]  is the
  865. i,j'th element of M, and  M[i1:i2, j1:j2]  is the submatrix of  M  with rows
  866. i1..i2  and columns j1..j2.  M[i1:i2,j] is part of the j'th column of  M , and
  867. M[i,j1:j2] is part of the i'th row of  M .
  868.  
  869.      If an ordinary scalar function like SIN is applied to a matrix, it is
  870. applied to every element of the matrix.
  871. 30
  872. 9999
  873.                                Matrix functions
  874.  
  875.      Suppose  M  is a matrix.  The following functions are defined:
  876.  
  877. COLS(M)      number of columns of M    ROWS(M)    number of rows of M
  878. TRACE(M)     trace of M                DET(M)     determinant of M
  879. RANK(M)      rank of M                 RREF(M)    row-reduced form of M
  880. TRANS(M)     transpose of M            CONJ(M)    conjugate each element of M
  881. PINV(M)      pseudo-inverse of M       COND(M)    condition number of M
  882. DIAG(v)      if v is a single row or column matrix, returns diagonal matrix
  883. M"           conjugate-transpose (Hermitian) of M
  884. CHARPOLY(M)  characteristic polynomial of M, expressed as a list <A>
  885. EIGENVAL(M)  list of eigenvalues of M
  886. EIG(M)       list of two matrices A and D.  A*D = M*A .  D is diagonal and the
  887.                   diagonal elements are the eigenvalues of M;  the columns of A
  888.                   are the eigenvectors of M.
  889. LU(M)        list of two matrices L and U;  L*U = M, L is a permuted lower
  890.                   triangular matrix and U is upper triangular.
  891. QR(M)        list of two matrices Q and R;  Q*R = M, the columns of Q are
  892.                   orthonormal and R is upper triangular.
  893. SVD(M)       list of three matrices A,B,C;  A and C have orthogonal columns,
  894.                   and B is an invertible diagonal matrix.  A*B*C" = M
  895.                   The diagonal elements of B are the singular values of M
  896. 34
  897. 31
  898. 9999
  899.                 Sorting and statistical operations on matrices
  900.  
  901.      If  M  is a matrix and  i  an integer, then SORT(M,i) returns a matrix of
  902. the same size as M with the same rows as  M  but sorted on the i'th column.
  903. The data in the i'th column can be real (not complex) numbers or strings <A>.
  904. To sort on multiple columns, first sort on the least significant column, then
  905. work your way up to sorting on the most significant column.
  906.      The commands MIN(M), MAX(M), PRODUCT(M), SUM(M), AVERAGE(M) and STANDEV(M)
  907. all work the same way.  They return a row vector the same size as one row of M,
  908. containing in each position the minimum, maximum, etc of the elements in
  909. the corresponding column of  M .
  910.      The operation of REGR is more complex.  Suppose  A  is an  n x s  matrix.
  911. Let  A1  be the matrix obtained by deleting the last column of  A  and adding a
  912. first column of 1's to A.  Let  c  be the deleted column.  Then  x = REGR(A) is
  913. a column vector which is the least squares solution to the equation  A1*x = c.
  914. For example, let  A  be a  n x 2  matrix.  If each row represents a point, and
  915. if  y = a+bx  is the regression line through the points, then:
  916.  
  917.          ┌ ┐
  918.          │a│
  919.          │b│ = REGR(A)
  920.          └ ┘
  921. 37
  922. 32
  923. 9999
  924.                  Controlling the accuracy of matrix operations
  925.  
  926.      There is a small constant that controls the accuracy of matrix operations
  927. like inverting matrices, the LU decomposition and row reduction.  Basically,
  928. whenever a matrix element smaller than this constant appears, it is set to 0.
  929. This procedure is necessary to overcome the inherent inaccuracies in floating
  930. point arithmetic.  The current value of this constant is returned by
  931. GETMATRIXTOL.
  932.      To give this constant a new value, for example 0.001, execute the command
  933. MATRIXTOL(0.001).  Executing MATRIXTOL(0) restores the constant to its
  934. default value.  Too small a value for this constant makes even singular
  935. matrices appear non-singular to X(PLORE); too large a value makes non-singular
  936. matrices with large condition numbers <A> appear singular.  Fiddling with this
  937. constant can sometimes make a delicate matrix operation converge.
  938. 31
  939. 33
  940. 9999
  941.                                      Lists
  942.  
  943.      A list is a sequence of values of any sort:  real or complex numbers,
  944. strings <A>, even other lists.  Many different kinds of values can be in a
  945. single list.  To define a list, either enclose its elements in parentheses:
  946.                              (1,2,3,4,5)
  947. or defined it with a formula:
  948.                           LIST(i,i = 1 to 5).
  949. The indexing variable in LIST need not increment by 1.  You could define the
  950. list (0, 0.01, 0.02, ... , 1.00) with the command LIST(x, x=0 to 1 step 0.01).
  951.      The expression () means the empty list. Defining a singleton list is
  952. tricky, because (x) just means x.  One way is to use the formula LIST(x,i=1,1).
  953.      If  t  is a list, then t[i] is the i'th element of t, and t[i:j] is the
  954. sublist of t consisting of elements t[i]..t[j].  The expression t[i,j] means
  955. the same thing as t[i][j]; it indicates the j'th element of the i'th element of
  956. t, so it is not defined unless t[i] is itself a list.
  957.      Lists can be added, subtracted, multiplied and divided, term by term.  The
  958. length of the result is the length of the shortest component.   If a scalar is
  959. combined with a list by any of these arithmetic operations, it is combined with
  960. each element of the list.  Thus (1,2) + (3,4) = (4,6)  and  1 + (2,3) = (3,4).
  961. Scalar functions like SIN applied to a list are applied to every element of the
  962. list.
  963.      For a description of list functions, see <B>.
  964. 37
  965. 35
  966. 34
  967. 9999
  968.                                 List Functions
  969.  
  970.      If  x  and  y  are lists, then we have the functions:
  971. LENGTH(x)  length of x                  x|y    concatenation of x and y
  972. SUM(x)  sum of elements of x            PRODUCT(x)  product of elements of x
  973. MIN(x)  minimum of x                    MAX(x)   maximum of x
  974. AVERAGE(x) average of x                 STANDEV(x)  standard deviation of x
  975. ROWVECTOR(x) make x a row matrix        COLVECTOR(x) make x a column matrix
  976. DIAG(x)  diagonal matrix <A> from elements of x.
  977. FREQUENCIES(x,a,b,n)  divides interval (a,b) into  n  subintervals and returns
  978.                       list of number of elements of  x  in each subinterval.
  979.                       See HISTORGRAM or BARG <B>.
  980. REGR(x,y)  returns list (a,b,r) of data for regression line through the points
  981.            (x[i],y[i]).  The regression line is  y = a + bx  and the
  982.            correlation coefficient is r.
  983.  
  984. If an ordinary scalar function is applied to a list, for example SIN(x), then
  985. the function is applied to every element in the list.
  986.  
  987. Once a list has been created, you can view it with the command
  988.                          DISPLAY(x)
  989. 28
  990. 52
  991. 35
  992. 9999
  993.                                   Polynomials
  994.  
  995.      For X(PLORE), a polynomial is a list <A> of coefficients.  The polynomial
  996.                  n
  997. a + bx + ... + cx   is represented by the list (a,b,...,c).  If  p  is a list,
  998. the value of the polynomial  p  at the point  x  can be computed with the
  999. function
  1000.  
  1001.                                  EVALPOLY(p,x).
  1002.  
  1003. For example, EVALPOLY((1,2,3), -1) = 2.
  1004.      All the roots, real and complex with multiplicity, of the polynomial  p
  1005. can be computed with the function
  1006.  
  1007.                                  SOLVEPOLY(p)
  1008.  
  1009. which returns a list of roots.  For example, SOLVEPOLY((2,-3,1)) = (1,2).
  1010. If some roots cannot be found, they are replaced by UNDEFINED in the list of
  1011. roots.
  1012. 34
  1013. 36
  1014. 9999
  1015.                                     Strings
  1016.      In X(PLORE), a string is a sequence of characters.  Strings are defined by
  1017. placing the desired characters between apostrophes, like this:
  1018.                               'This is a string'
  1019. Strings are used in INPUT and WRITE statements, they can be stored in
  1020. variables, and they can be manipulated as follows.
  1021.      If  s  is a string, then  s[i]  is the i'th character of s, and  s[i,j]
  1022. or  s[i:j]  is the substring of  s  consisting of characters  i  through  j .
  1023.      Strings  s  and  t  can be concatenated with the operator  s|t  or  s+t.
  1024.      Strings can be compared with the operators ==, <>, < , <=, >, >=  <A>, and
  1025. strings can be put into list and matrices.  A list of strings can be operated
  1026. on by MAX and MIN <B>, and a matrices can be sorted on a column of strings <C>.
  1027.      The following functions apply to strings:
  1028. LENGTH(s)  number of characters in s.
  1029. ASC(s)     list of ascii codes of characters of s.  If s is a single character,
  1030.            then ASC(s) is an integer, not a list of integers.
  1031. CHR(x)     is x is an integer or list of integers, CHR(x) is the string of
  1032.            characters whose codes are in x.  Only codes 32..255 are recognized.
  1033. UPCASE(s)  the same string as  s , but with a..z replaced by A..Z.
  1034. POS(s,t)   returns the position of the substring s in the string t, or 0.
  1035. STR(v)     v is a value, returns a string representing the value
  1036. VAL(s)     s is a string representing a math expression, returns value
  1037. DATE, TIME return the current date and time as strings
  1038. 26
  1039. 35
  1040. 32
  1041. 37
  1042. 9999
  1043.                             Two-dimensional Graphing
  1044. <A>  Defining Windows:  WINDOW ERASE
  1045.                         WINDOWTOP WINDOWBOTTOM WINDOWLEFT WINDOWRIGHT
  1046. <B>  Graphing y = f(x):  GRAPH  GR  DOTGRAPH  DTG  QUICKG  QU  SKETCH  SK
  1047. <C>  Graphing r = f(Θ) in polar coordinates:  POLARG  PO
  1048. <D>  Graphing parametric curves x = f(t), y = g(t):  PARAMG  PA
  1049. <E>  Graphing level curves f(x,y) = c:  LEVELC
  1050. <F>  Vector fields and level curves:  FIELD  TRAJ
  1051. <G>  Drawing lines and rectangles, filling regions:   LINE  RECT  FILL
  1052. <H>  Plotting and marking points:  MARK  UNMARK  PLOT
  1053. <I>  Adding labels to your graphs:
  1054.           WRITE@  VWRITE@  THICKTEXT  THINTEXT  FONTSIZE
  1055. <J>  Axes and Grids: AXIS NOAXIS AXISCOLOR GRID POLARGRID NOGRID
  1056. <K>  Making successive graphs appear different:  KEEPLINE  VARYLINE
  1057. <L>  Setting line styles:   THICKLINE THINLINE LINESTYLE
  1058. <M>  Setting screen colors: COLOR  BKCOLOR  GETCOLOR  GETBKCOLOR  MAXCOLOR
  1059.  BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  1060.  DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW
  1061. WHITE
  1062. <N>  Bar graphs of list data:  BARG or HISTOGRAM
  1063. <O>  Graphing lists of points:  LISTG  MARK  UNMARK  PLOT
  1064. <P>  Using crosshairs:  CROSSX  CROSSY SETCROSS,CRCOLOR
  1065. <Q>  Graphing integrals and derivatives:  INTEG  DIFFG
  1066. <R>  Using Zoom and UnZoom to change the graphics window
  1067. 39
  1068. 40
  1069. 41
  1070. 42
  1071. 43
  1072. 44
  1073. 45
  1074. 46
  1075. 47
  1076. 48
  1077. 49
  1078. 50
  1079. 51
  1080. 52
  1081. 53
  1082. 54
  1083. 55
  1084. 56
  1085. 38
  1086. 9999
  1087.                                 Defining Windows
  1088.  
  1089.      Two-dimensional graphs appear in a window which you define with the
  1090. command:
  1091.                                 WINDOW(a,b,c,d)
  1092. where  a,b,c,d  are real numbers.  The graphics window is then  a ≤ x ≤ b,
  1093. c ≤ y ≤ d .  For example, if you want to graph the function  y = sin(x)  in the
  1094. range  0 ≤ x ≤ 2π  and show values  -1 ≤ y ≤ 1, execute  WINDOW(0,PI,-1,1)
  1095. before the graphics command <A>.
  1096.      When you create a new window, it is empty except for optional axes <B>.
  1097.      X(PLORE) actually expands the window you specify by 10% to assure that your
  1098. entire graph will be visible.  The ends of the axes, which are not quite at
  1099. the edge of the window, correspond to your specified window limits.
  1100.      You can erase all the figures in a window without rescaling the window
  1101. with the command:
  1102.                                      ERASE
  1103.      The startup window parameters are -1.4 ≤ x ≤ 1.4, -1 ≤ y ≤ 1.  The aspect
  1104. ratio  1.4:1 makes circles appear round, not oval, on most monitors. The
  1105. command WINDOW(0,0,0,0) restores these parameters.
  1106.      There are functions which return the boundaries of the current window:
  1107.                  WINDOWTOP  WINDOWBOTTOM  WINDOWLEFT  WINDOWRIGHT
  1108. These are useful mostly for programming operations <C>.
  1109. 40
  1110. 48
  1111. 71
  1112. 39
  1113. 9999
  1114.                                Graphing y = f(x)
  1115.  
  1116.      Once you have defined a graphing window <A>, you can view the portion of
  1117. the graph of  y = f(x)  which lies within the window by executing the command:
  1118.                                 GRAPH(f(x),x)
  1119.  
  1120. f(x) can be either a function <B> with bound variable x or an expression
  1121. involving x.  For example, you could graph the parabola with the command
  1122. GRAPH(x^2,x).  The abbreviation for GRAPH is GR.
  1123.      The operator GRAPH plots one point (x,f(x)) for each pixel on the x-axis,
  1124. and connects successive points.  To omit the connections and just plot the
  1125. points, use the command:
  1126.                                DOTGRAPH(f(x),x)
  1127.  
  1128. or its abbreviation DTG(f(x),x).
  1129.      To plot only every third point (and connect the points), use
  1130.                                 QUICKG(f(x),x)
  1131.  
  1132. or its abbreviation QU(f(x),x).  To plot only every 20th point, which is
  1133. useful for rapidly graphing complicated functions, use
  1134.                                 SKETCH(f(x),x)
  1135.  
  1136. or its abbreviation SK(f(x),x).
  1137. 39
  1138. 14
  1139. 40
  1140. 9999
  1141.                      Graphing r = f(Θ) in polar coordinates
  1142.  
  1143.      Once you have defined a graphing window <A>, you can graph the portion of
  1144. a polar curve  r = f(Θ) that lies in the window with the command:
  1145.  
  1146.                         POLARG(f(t),t)
  1147.  
  1148. f(t) can be a function with bound variable t or an expression involving t.  For
  1149. example, to graph the cardoid  r = 1+cos(Θ), execute the command
  1150.  
  1151.                        POLARG(1+cos(t),t).
  1152.  
  1153. The variable t covers the domain (0, 2π); you can change this default by
  1154. specifying a range for t:  POLARG(f(t),t = a to b).
  1155.      Polar curves are, by default, graphed with 200 line segments.  To change
  1156. that default to any number of line segments up to 1000, add the desired number
  1157. of segments after the last parameter.  Using a large number of segments can
  1158. make a smoother curve; using a smaller number can draw a faster curve or even a
  1159. polygon.  Try
  1160.                           WINDOW(-1.4, 1.4, -1, 1)
  1161.                           POLARG(1, T = 0 TO 4*PI, 5)
  1162.  
  1163.      The abbreviation for POLARG is PO.
  1164. 39
  1165. 41
  1166. 9999
  1167.                  Graphing parametric curves x = f(t), y = g(t)
  1168.  
  1169.      Once you have defined a graphing window <A>, you can graph the portion of
  1170. a parametric curve  x = f(t), y = g(t)  for   a ≤ t ≤ b  that lies in the
  1171. window with the command:
  1172.  
  1173.                         PARAMG(f(t),g(t),t=a to b)
  1174.  
  1175. f(t) and g(t) can be a functions with bound variable t or expressions involving
  1176. t.  For example, to graph the Lissajous curve  x = sin(6t), y = sin(7t),
  1177. 0 ≤ t ≤ 2π , execute the command
  1178.  
  1179.                     PARAMG(SIN(6*t), SIN(7*t),t=0 to 2*PI)
  1180.  
  1181.      Parametric curves are, by default, graphed with 200 line segments.  To
  1182. change that default to any number of line segments up to 1000, add the desired
  1183. number of segments after the last parameter.  Using a large number of segments
  1184. can make a smoother curve; using a smaller number can draw a faster curve or
  1185. even a polygon.  Try
  1186.  
  1187.                  PARAMG(SIN(6*t), SIN(7*t),t=0 to 2*PI,1000)
  1188.  
  1189.      The abbreviation for PARAMG is PA.
  1190. 39
  1191. 42
  1192. 9999
  1193.                   Graphing level curves f(x,y) = g(x,y)
  1194.  
  1195.      To graph the solution to the equation  f(x,y) = 0, use the command:
  1196.  
  1197.                    LEVELC(f(x,y)=g(x,y), x = a, y = b)
  1198.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7)
  1199.  
  1200. The graph will start at the solution point nearest (a,b) and extend in two
  1201. directions.  Normally 50 steps are
  1202. used in each direction.  To change the number of steps, add the number you wish
  1203. at the end of the command:  LEVELC(f(x,y) = g(x,y), x = a, y = b, n).  If you
  1204. specify the number of steps, you can optionally specify the step size as a
  1205. number between -5 and 5 (the default is 0--the scale is logarithmic).
  1206. Examples:
  1207.  
  1208.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100)
  1209.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100, 2)
  1210.                    LEVELC(x^2+y^2 = 1, x =.7, y = .7, 100, -2)
  1211. 43
  1212. 9999
  1213.                    Vector fields and trajectories
  1214.  
  1215.      To graph the vector field (f(x,y), g(x,y)), issue the command:
  1216.  
  1217.                     FIELD(f(x,y), g(x,y), x, y)
  1218.                     FIELD(-y/(x^2+y^2), x/(x^2+y^2), x, y)
  1219.  
  1220. Normally a field of 14 x 14 vectors will be displayed.  Larger vectors show as
  1221. larger on the screen, but the proportions are not necessarily correct.  To show
  1222. more or fewer vectors, add an integer parameter after the first and second
  1223. variable indicating how many vectors to show in each direction:
  1224.  
  1225.                     FIELD(-y/(x^2+y^2), x/(x^2+y^2), x, 10, y, 10)
  1226.  
  1227.      To draw a trajectory following a vector field (f(x,y), g(x,y)), use:
  1228.  
  1229.                     TRAJ(f(x,y), g(x,y), x=a, y=b)
  1230.                     TRAJ(-y/(x^2+y^2), x/(x^2+y^2), x=0.5, y=0.5)
  1231.  
  1232. The trajectory will start at (a,b).  Usually 50 steps are used; you can
  1233. optionally specify a different step number and step size as for LEVELC <A>.
  1234. 43
  1235. 44
  1236. 9999
  1237.                  Drawing lines and rectangles, filling regions
  1238.  
  1239.      You can add lines and rectangles to your graphics screens or fill bounded
  1240. regions on the screen.  To draw a line between (a,b) and (c,d) (assuming that
  1241. both these points lie in the current graphing window <A>), use the command:
  1242.  
  1243.                                LINE(a,b,c,d)
  1244.  
  1245. To draw a rectangle with opposite corners (a,b) and (c,d), execute:
  1246.  
  1247.                                RECT(a,b,c,d)
  1248.  
  1249. The color and style of the line or rectangle can be determined by COLOR <B>
  1250. and LINESTYLE <C>.
  1251.  
  1252.      To fill a region, first pick a point (a,b) inside the region.  Then pick a
  1253. color c1 to fill with and a fill pattern p, 0 ≤ p ≤ 11.  Use p = 1 for solid
  1254. fill.  Suppose c2 is the color of the boundary of the region (the region must
  1255. be bounded by curves of one color).  To fill the region, execute the command:
  1256.  
  1257.                             FILL(a,b,c1,c2,p)
  1258. 39
  1259. 51
  1260. 50
  1261. 45
  1262. 9999
  1263.                           Plotting and marking points
  1264.  
  1265.  
  1266.      If (a,b) is a point in the current graphing window <A>, you can plot a
  1267. point of the current color <B> at (a,b) with the command:
  1268.  
  1269.                                   PLOT(a,b)
  1270.  
  1271. To draw a cross of the current color <B> at (a,b), use the command:
  1272.  
  1273.                                   MARK(a,b)
  1274.  
  1275. To delete this cross, use:
  1276.  
  1277.                                  UNMARK(a,b)
  1278.  
  1279. Individual points created with PLOT are very hard to see, but numbers of them
  1280. can be used to shade regions or produce curves.
  1281.  
  1282.      See <C> for information on using these commands with lists.
  1283. 39
  1284. 51
  1285. 53
  1286. 46
  1287. 9999
  1288.                           Adding labels to your graphs
  1289.  
  1290.      You can put alphanumeric labels anywhere on your two-dimensional graphic
  1291. screens.  They can be horizontal or vertical, and they can be printed in
  1292. various sizes.  To print a string  s  <A> horizontally on the screen with the
  1293. lower-left corner at Window coordinates (a,b), use the command:
  1294.                                 WRITE@(a,b,s)
  1295. To write vertically bottom to top, use
  1296.                                VWRITE@(a,b,s)
  1297.      You can change the size of your labels by entering an optional size
  1298. parameter after the string.  The parameter should be an integer in the range
  1299. 1..7; the default is 2.  For example, to label a curve you might enter:
  1300.                          WRITE@(0.5,0.5,'Parabola',3)
  1301.      To change the default font size on graphic labels, enter FONTSIZE(n),
  1302. where n is the desired size.  FONTSIZE(0) returns you to the default of 2.
  1303. this command also affects the size of coordinate labels on graphs.
  1304.      You can use the crosshairs <B> to locate labels.  First, while
  1305. viewing the graphics screen, move the crosshairs to the desired point.  Then
  1306. press control-W (Control-V for vertical labels), enter the font size, and type
  1307. the desired label.
  1308.      To use thicker characters on the screen (only in size 3 or greater), enter
  1309. the command THICKTEXT.  To return to the default characters, execute THINTEXT.
  1310. 37
  1311. 54
  1312. 47
  1313. 9999
  1314.                Showing and hiding axes, and changing their color
  1315.  
  1316.      When you create a new graphics screen with WINDOW or ERASE <A>, X(PLORE)
  1317. normally adds axes the screen.  You can suppress the display of axes by
  1318. entering the command:
  1319.                                NOAXIS
  1320. Axes are not displayed on any subsequent screen until you restore them with:
  1321.                                 AXIS
  1322. Labeled tics every dx, dy can be added to the axes with nx, ny subdivisions:
  1323.                         AXIS(dx, nx, dy, ny)
  1324.      You can change the color of the axes for the next new screen with the
  1325. command:
  1326.                             AXISCOLOR(c)
  1327. where  c  is one of the color words or numbers <B>.
  1328.       A rectangular grid with separations dx and dy can be added to
  1329. two-dimensional graphs with the command:
  1330.                              GRID(dx, dy)
  1331. A polar coordinate grid can be created with:
  1332.                            POLARGRID(dr, dΘ)
  1333. Grids are turned off with the command:
  1334.                                 NOGRID
  1335.  
  1336. 39
  1337. 51
  1338. 48
  1339. 9999
  1340.                    Making successive graphs appear different
  1341.  
  1342.      X(PLORE) allows you to draw as many graphs as you want on the same
  1343. two-dimensional graphics screen.  Normally these graphs are distinguished by
  1344. being drawn with different line styles <A> (monochrome systems) or colors <B>
  1345. (color systems).  To stop X(PLORE) from changing line styles or colors between
  1346. graphs, issue the command
  1347.  
  1348.                                   KEEPLINE
  1349.  
  1350. To start changing again, issue:
  1351.  
  1352.                                   VARYLINE
  1353.  
  1354.      If you set the color for a graph with the command COLOR <B>, the next
  1355. graph will always be drawn in that color.  Subsequent graphs will have
  1356. different colors or the same color depending on whether KEEPLINE or VARYLINE is
  1357. active.
  1358.  
  1359.      Lines drawn with LINE <C> and LISTG <D> are always drawn with the current
  1360. line style and do not change the style, even if VARYLINE is active.  Only
  1361. graphs drawn with GRAPH <E>, POLARG <F> and PARAMG <G> are affected.
  1362. 50
  1363. 51
  1364. 45
  1365. 53
  1366. 40
  1367. 41
  1368. 42
  1369. 49
  1370. 9999
  1371.                               Setting line styles
  1372.  
  1373.      On both monochrome and color systems, X(PLORE) will draw lines and graphs
  1374. with different line styles.  (Since the line segments used to draw graphs are
  1375. usually very short, different line styles may not be distinguished in graphs,
  1376. but they will be distinguished on long lines.)  Linestyles are indicated by
  1377. integers in the range 0..3, and are set by the command:
  1378.  
  1379.                                 LINESTYLE(n)
  1380.  
  1381.      See <A> for information on varying line styles with graphs.
  1382.      Lines and graphs can be either thin (the default) or thick.  You set this
  1383. default with the commands:
  1384.  
  1385.                                  THICKLINE
  1386.                                  THINLINE
  1387.  
  1388. Once set, the thickness stays the same until changed.
  1389. 49
  1390. 50
  1391. 9999
  1392.                              Setting screen colors
  1393.  
  1394.      If you are using a color system, you can set the color of the next line or
  1395. graph with the command:
  1396.                                  COLOR(c)
  1397. where c is one of the color words:  
  1398.  
  1399.  BLACK    BLUE      GREEN      CYAN      RED      MAGENTA      BROWN  LIGHTGRAY
  1400.  DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW
  1401. WHITE
  1402.  
  1403. or an integer in the range 0..15.  The color of successive graphs may vary
  1404. unless you hold it constant <A>.
  1405.      You can set the background color for your graphs with the command
  1406.                                BKCOLOR(c)
  1407.      You can determine the current color or background color with the
  1408. functions:
  1409.                                GETCOLOR
  1410.                               GETBKCOLOR
  1411. The highest color number available on your system is MAXCOLOR.
  1412.     To erase a curve or line, redraw it in the background color, using
  1413. linestyle 0 <B>.
  1414.     Color commands also apply to three-dimensional graphs. <C>
  1415. 49
  1416. 50
  1417. 62
  1418. 51
  1419. 9999
  1420.                             Bar Graphs of List Data
  1421.  
  1422.      If  x  is a list <A> of data, you can plot a bar graph of the data with
  1423. the command:
  1424.  
  1425.                     BARG(x,a,b,n) or HISTOGRAM(x,a,b,n)
  1426.  
  1427. X(PLORE) divides the interval  (a,b)  into  n  subintervals, computes the
  1428. number of elements in  x  contained in each subinterval, and plots a bar graph
  1429. of these numbers.  Outliers are included in the lowest and highest categories
  1430. respectively.  BARG is also a function;  it returns as its value a list of the
  1431. frequencies <B> or numbers of elements contained in each subinterval.
  1432.  
  1433.      BARG makes its own graphics window, ignoring the current window as
  1434. defined by WINDOW <C>.
  1435. 34
  1436. 35
  1437. 39
  1438. 52
  1439. 9999
  1440.                             Graphing lists of points
  1441.  
  1442.      If  x  and  y  are lists of real numbers, then the command:
  1443.  
  1444.                                   LISTG(x,y)
  1445.  
  1446. draws line segments from the point  (x[i],y[i])  to the point  (x[i+1],y[i+1])
  1447. for i = 1..length(x)-1.  If  x  and  y  have different lengths, the shorter
  1448. length is used.  If one end of a line is outside the current window, the line
  1449. will not be drawn.
  1450.      You can plot these points instead of connecting them with the command:
  1451.  
  1452.                                   PLOT(x,y)
  1453.  
  1454. and you can mark them with crosses with:
  1455.  
  1456.                                   MARK(x,y)
  1457.  
  1458. and erase the marks with:
  1459.  
  1460.                                  UNMARK(x,y).
  1461.  
  1462.      See <B> for applying these commands to pairs of real numbers.
  1463. 54
  1464. 45
  1465. 53
  1466. 9999
  1467.                                 Using Crosshairs
  1468.  
  1469.      When you are viewing the two-dimensional graphics screen, you will see a
  1470. circle somewhere on the screen.  On a new screen it appears in the upper-left-
  1471. hand corner.  This is the crosshairs.  The coordinates of the center of the
  1472. crosshairs are printed at the lower-right hand corner of the screen.  You can
  1473. move the crosshairs with the cursor (arrow) keys.  Try it, and see how the
  1474. coordinates change.  You can effect finer movements with the shifted-cursor
  1475. keys, or the number keys 2,4,6,8.  The crosshairs are useful for locating the
  1476. intersections of curves or points where graphs cross the axes.
  1477.      The functions CROSSX and CROSSY return the last x- and y-coordinates of
  1478. the crosshairs.  Suppose you have graphed a function y = f(x), and you want to
  1479. solve the equation f(x) = 0.  Using the crosshairs, you can find the point
  1480. where the graph of f(x) crosses the x-axis.  The x-coordinate of this point is
  1481. the solution to f(x) = 0.  Return to the Input Window, and enter the command
  1482. <A>:
  1483.                       SOLVE(f(x) = 0, x = CROSSX)
  1484. That is, after you move the crosshairs to the x-intercept of the graph, you can
  1485. use CROSSX as an accurate approximation to the desired root.
  1486.  
  1487.      The command SETCROSS(x,y) moves the crosshairs to the window point (x,y).
  1488. This is useful for pointing out something on the screen to the user of a
  1489. procedure.  CRCOLOR(colorword) sets the color of the crosshairs.
  1490. 64
  1491. 54
  1492. 9999
  1493.                        Graphing integrals and derivatives
  1494.  
  1495.      You can illustrate the processes of integration and differentiation while
  1496. computing integrals and derivatives.  Suppose  you wanted to compute the
  1497. integral of sin(x) between  x = 0  and  x = π .  You could use the command
  1498. IN(SIN(x), x = 0 to PI) <A>, but you can watch the integral being calculated by
  1499. using the command:
  1500.  
  1501.                            INTEG(SIN(x), x = 0 to PI)
  1502.  
  1503. X(PLORE) will draw the graph of SIN(x) on the screen and fill in the area being
  1504. integrated (if it is inside your current graphing window <B>) as well as
  1505. computing the integral.  Actually, you will see X(PLORE) draw a sequence of
  1506. vertical lines.  X(PLORE) draws a line each time it evaluates the function
  1507. being integrated. Watching the lines will show you how X(PLORE) computes its
  1508. integrals. Similarly, you could computed the derivative of a function f(x) at x
  1509. = a with the command DIF(f(x), x = a) <C>, but if you use the command:
  1510.  
  1511.                             DIFFG(f(x),x = a)
  1512.  
  1513. X(PLORE) will draw the graph of f(x) and the tangent line at x = a as well as
  1514. computing the derivative.
  1515. 69
  1516. 39
  1517. 68
  1518. 55
  1519. 9999
  1520.              Using Zoom and UnZoom to change the graphics window
  1521.  
  1522.      Once you have displayed a two-dimensional graph on your screen, you can
  1523. outline and magnify part of it, or increase the size of the graphics window
  1524. to seem more of it.
  1525.      Move the crosshairs <A> to one corner of the region to be magnified.
  1526.      Press Control-Z.  The crosshairs will change to Z.
  1527.      Move the Z (with the cursor keys) to the opposite corner of the region to
  1528.           be magnified.  A box will outline the designated region.
  1529.      Press <ENTER>.
  1530. The region you have outlined will be expanded to fill the screen.
  1531.      To cancel Zoom any time after starting, just press <ESC>.  If you have
  1532. already started Zooming, you can restart at the location of the Z by pressing
  1533. Control-Z again.
  1534.      To undo the effect of zooming, press Control-U while the graph is visible
  1535. to return to the previous graph.
  1536.      If you press Control-U without a graphic to UnZoom to, then the current
  1537. screen will be doubled in size and the graphs redrawn.
  1538.      Only graphs drawn with GRAPH, DOTGRAPH, QUICKG, SKETCH, POLARG, PARAMG,
  1539. DIFFG, INTEG, FIELD, LEVELC and TRAJ  can be Zoomed and UnZoomed.  Written
  1540. labels <B>, lines drawn with LINE <C>, and area fills <D> will not be repeated.
  1541. 54
  1542. 47
  1543. 45
  1544. 56
  1545. 9999
  1546.                            Three-dimensional graphing
  1547.  
  1548. <A>  Graphing  z = f(x,y)
  1549.           GRAPH3D    GR3
  1550. <B>  Graphing parametric surfaces  x = f(s,t), y = g(s,t), z = h(s,t)
  1551.           PARAMG3D    PA3
  1552. <C>  Graphing parametric curves  x = f(t), y = g(t), z = h(t)
  1553.           CURVE3D
  1554. <D>  Graphing matrix data
  1555.           MATRIXG
  1556. <E>  Using color with three-dimensional graphs
  1557.           COLOR   BKCOLOR   AXISCOLOR   GETCOLOR   GETBKCOLOR
  1558.  
  1559.      After you have displayed a three-dimensional graph on the screen, you can
  1560. rotate it in space to view it from different directions by pressing the keys
  1561. x X y Y z Z.  Multiple keypresses effect larger rotations.  You can also change
  1562. the way the figure is shaded by pressing the keys 1 2 3 4.
  1563. 58
  1564. 59
  1565. 60
  1566. 61
  1567. 62
  1568. 57
  1569. 9999
  1570.                               Graphing  z = f(x,y)
  1571.  
  1572.      If  f(x,y)  is a function or expression in two variables, its graph is a
  1573. surface.  You can sketch the portion of the graph over the rectangle
  1574. a ≤ x ≤ b, c ≤ y ≤ d  with the command:
  1575.                     GRAPH3D(f(x,y), x = a to b, y = c to d)
  1576.  
  1577. Each side of the rectangle is divided in to 15 segments to make the drawing,
  1578. and the range shown on the vertical axis is sufficient to show all points of
  1579. the graph.
  1580.      You can control the number of subdivisions on each side of the domain
  1581. rectangle, and you can control the size of the vertical axis.  To specify the
  1582. number of subdivisions for one of the horizontal axes, place the number after
  1583. the upper limit for that axis.  To specify the vertical axis, place the lower
  1584. and upper limits after the specifications for the second horizontal axis. IF
  1585. YOU ADD SOME BUT NOT ALL OF THESE SPECIFICATIONS, YOU MUST SEPARATE THE PARTS
  1586. OF THE GRAPHING COMMAND WITH SEMICOLONS.  Here are some sample graphing
  1587. commands:
  1588.     GRAPH3D(x^2 - y^2, x = a to b step 10, y = c to d step 20, -2 to 2)
  1589.     GRAPH3D(x^2 - y^2, x = a to b; y = c to d; -2 to 2)
  1590.     GRAPH3D(x^2 - y^2, x = a to b step 10; y = c to d step 20)
  1591.  
  1592.      The abbreviation of GRAPH3D is GR3.
  1593. 58
  1594. 9999
  1595.        Graphing parametric surfaces  x = f(s,t), y = g(s,t), z = h(s,t)
  1596.  
  1597.      Parametric surfaces are graphed much like ordinary surfaces <A>.  You must
  1598. specify the range for each parameter.  You can optionally specify the number of
  1599. steps to use within each parameter (the default is 15) and the visible range of
  1600. the x-, y- and z-axes.  A sample minimal command for graphing a sphere is:
  1601.  
  1602.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI, T = 0 to 2*PI)
  1603.  
  1604.      If you use some but not all of the options, you must separate the parts of
  1605. the command with semicolons.  If you specify the range of one axis, you must
  1606. specify all the axes.
  1607.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI step 30,
  1608.                                    T = 0 to 2*PI step 30, -2,2,-2,2,-2,2)
  1609.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI; T = 0 to 2*PI;
  1610.                                                           -2,2,-2,2,-2,2)
  1611.      PARAMG3D(SIN(S)COS(T),SIN(S)SIN(T),COS(S), S = 0 to PI step 30;
  1612.                                                    T = 0 to 2*PI step 30)
  1613.  
  1614.      When you enter commands this long, just keep typing and let them spill
  1615. over onto a second or third screen line.  Don't push <ENTER> when you come to
  1616. the end of your first line; that will execute your partially completed command.
  1617.      The abbreviation for PARAMG3D is PA3.
  1618. 58
  1619. 59
  1620. 9999
  1621.             Graphing parametric curves  x = f(t), y = g(t), z = h(t)
  1622.  
  1623.      Parametric curves are graphed just like parametric surfaces <A>, but only
  1624. one parameter need be specified.  To graph the helix, for example, enter:
  1625.  
  1626.                     CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI)
  1627.  
  1628. You an optionally specify the number of segments to use for the parameter (the
  1629. default is 100) and the size of the x-,y- and z-axes.  You must specify all
  1630. axes or none, and if you don't specify all options you must separate the parts
  1631. of the command with semicolons.  Here are some examples:
  1632.  
  1633.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI step 20, -2,2, -2,2, 0,2)
  1634.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI; -2,2, -2,2, 0,2)
  1635.       CURVE3D(COS(T),SIN(T),T, T = 0 to 4*PI step 20)
  1636. 59
  1637. 60
  1638. 9999
  1639.                               Graphing matrix data
  1640.  
  1641.      If  M  is a matrix, you can graph a surface whose heights are the entries
  1642. of the matrix with the command:
  1643.  
  1644.                                    MATRIXG(M)
  1645.  
  1646. The size of the vertical axis is determined by the entries in the matrix  You
  1647. can change this default and specify the size of the vertical axis yourself by
  1648. adding the lower and upper limits after the name of the matrix:
  1649.  
  1650.                                 MATRIXG(M,-3,4)
  1651. 28
  1652. 61
  1653. 9999
  1654.                    Using color with three-dimensional graphs
  1655.  
  1656.      You can select the color of a three-dimensional graph by executing
  1657.  
  1658.                                COLOR(c)
  1659.  
  1660. before drawing the graph.  The parameter c can be any of the color words <A>.
  1661. You can also select the color of the axes with
  1662.  
  1663.                              AXISCOLOR(c)
  1664.  
  1665. or the background color with
  1666.  
  1667.                               BKCOLOR(c)
  1668.  
  1669. Three dimensional surfaces are actually drawn with two colors representing the
  1670. two sides of the surface; the colors used are the one you selected and either
  1671. its brighter or dimmer version, for example YELLOW and BROWN.
  1672.  
  1673.      The functions GETCOLOR and GETBKCOLOR return the current color values.
  1674. 51
  1675. 62
  1676. 9999
  1677.                                    Last Graph
  1678.  
  1679.      When you leave a graphics screen by pressing <ENTER> or <ESC>, your graph
  1680. is saved in memory.  (Actually, data that permits reconstruction of the graph
  1681. is saved.)  You can see your last graph again by pressing F9, even if you have
  1682. already told X(PLORE) to erase it by executing ERASE or WINDOW <A>.  After
  1683. redisplaying the graph, you can manipulate it by moving the crosshairs
  1684. (two-dimensional) or rotating it (three-dimensional).
  1685.  
  1686.      If you need more memory, you can save the last graph data on disk instead
  1687. of in memory by pressing shift-F9.  Pressing shift-F9 again returns the last
  1688. graph data to memory.  If X(PLORE) senses that it is running short of memory,
  1689. it will automatically shift the last graph data to disk.
  1690.  
  1691.      If you are saving your last graph on disk, the file of last graph data
  1692. will normally be located in the same directory as X(PLORE) (even if you called
  1693. X(PLORE) from a remote directory).  You can use the configuration file <B> to
  1694. change the location of the last graph file.
  1695.  
  1696.      You can stop saving the last graph, for example if you are drawing an
  1697. animation, with the command GSAVEOFF.  Start saving again with GSAVEON
  1698. 39
  1699. 19
  1700. 63
  1701. 9999
  1702.                                Solving equations
  1703.  
  1704.      To solve the equation  f(x) = g(x) , you must choose an estimate  a  for
  1705. the solution and enter the command:
  1706.  
  1707.                            SOLVE(f(x) = g(x), x = a)
  1708.  
  1709. The solution is returned in the variable  x .  SOLVE is not a function; it is a
  1710. procedure that changes the variable x.  For example, to solve  Cos(x) = x ,
  1711. enter  SOLVE(COS(x) = x, x = 1);
  1712.      You can solve systems of equations too, provided there are the same number
  1713. of variable as equations.  For example:
  1714.  
  1715.                SOLVE(x^3 - y^2 = 3, x^2 + y^3 = 0, x = 2, y = -2)
  1716.  
  1717.      The solutions show up in the variables  x  and  y .
  1718.      You can speed up equation solving, at the expense of accuracy, by
  1719. substituting FSOLVE for SOLVE.
  1720.  
  1721. See also:
  1722. <A>  Implicit functions   IMPLICIT
  1723. <B>  Controlling speed and accuracy of equation solving  SOLVETOL   GETSOLVETOL
  1724. 65
  1725. 66
  1726. 64
  1727. 9999
  1728.                                Implicit functions
  1729.  
  1730.      X(PLORE) allows you to define functions implicitly.  For example, the
  1731. equation Cos(x) = t*x  defines a function of t; for each value of t you get a
  1732. different solution.  You can define this function in X(PLORE)  with the command:
  1733.  
  1734.                       f(t) = IMPLICIT(COS(x) = t*x, x = 0.5)
  1735.  
  1736. The starting estimate x = 0.5 works well for t ≥ 0.
  1737.  
  1738.      IMPLICIT also works with systems of equations <A>, returning a list of
  1739. values.  You can make implicit functions evaluate faster by changing the
  1740. parameter SolveTolerance <B>.
  1741. 64
  1742. 66
  1743. 65
  1744. 9999
  1745.                Controlling speed and accuracy of equation solving
  1746.  
  1747.      Equation solving is controlled by a constant called SolveTolerance.  If
  1748. you are solving an equation  f(x) = g(x) , X(PLORE) stops when it finds  x
  1749. such that │f(x) - g(x)│ < SolveTolerance .  (If no such x can be found, but if
  1750. X(PLORE) can find x  such that  │f(x) - g(x)│ < 100*SolveTolerance,  X(PLORE)
  1751. will accept this solution.)
  1752.      You can change the value of SolveTolerance with the command:
  1753.  
  1754.                                   SOLVETOL(t)
  1755.  
  1756. t  must be a positive real number.  The larger the value of  t , the faster
  1757. your solutions will converge but the less accurate they may be.  The default
  1758. value of SolveTolerance is 0.0000001.  You can restore SolveTolerance to this
  1759. value with the command SETSOLVETOL(0).
  1760.  
  1761.      The function:
  1762.                                    GETSOLVETOL
  1763.  
  1764. returns the current value of this SolveTolerance.
  1765. 66
  1766. 9999
  1767.                        Creating tables of function values
  1768.  
  1769.      If f(x) is a function or expression using x, you can display a table of
  1770. functional values:
  1771.  
  1772.           x              f(x)
  1773.         0.0              ...
  1774.         0.1              ...
  1775.         0.2              ...
  1776.            ...........
  1777.         1.0              ...
  1778.  
  1779. with the command:
  1780.                      TABLE(f(x),x=0 to 1 step 0.1)
  1781.  
  1782. Of course you can use any values you like for the lower and upper limits and
  1783. step value of the parameter.  The step must be specified.  You can tabulate one
  1784. or two functions.  You can also enter, for example,
  1785.  
  1786.                TABLE(SIN(x), COS(x), x = 0 to PI/2 STEP PI/20)
  1787. 67
  1788. 9999
  1789.                                 Differentiation
  1790.  
  1791.      If f(x) is a function or expression using x, then you can differentiate it
  1792. at the point  x = a  with the command:
  1793.                                 DIF(f(x), x = a)
  1794.  
  1795. Differentiation is symbolic, not approximate.  You can see the symbolic
  1796. derivative of f(x) (provided x is an undefined variable) with the command:
  1797.                                  DIF(f(x), x)
  1798.  
  1799. Higher derivatives can be computed by putting the order of the derivative at
  1800. the end of the command:
  1801.                               DIF(f(x),x = a, 3)
  1802.  
  1803. To compute the third symbolic derivative, you must somehow tell X(PLORE) that
  1804. the 3 is not the value of x but the order of differentiation.  You do this by
  1805. placing it after a comma:
  1806.                               DIF(f(x),x,3)
  1807.  
  1808. To avoid ambiguities, you must use '=' in the DIF statement when assigning a
  1809. value to the variable of differentiation and a comma before the order.
  1810.      See <A> for graphing derivatives with DIFFG.
  1811. 55
  1812. 68
  1813. 9999
  1814.                                   Integration
  1815.  
  1816.      X(PLORE) will compute the numerical approximation to the integral of f(x)
  1817. for a ≤ x ≤ b:                      b
  1818.                                    ⌠
  1819.                                    │ f(x) dx
  1820.                                    ⌡
  1821.                                     a
  1822. with the command:
  1823.  
  1824.                               IN(f(x),x = a to b)
  1825. For example:
  1826.  
  1827.                             IN(EXP(x), x = 1 to 2)
  1828.  
  1829. You can compute integrals faster, if less accurately, by substituting FIN for
  1830. IN.
  1831.      See <A> for information on using INERROR INTOL  INDEPTH  GETINTOL
  1832. and GETINDEPTH  to control the speed and accuracy of integration.
  1833.      For graphing integrals with INTEG, see <B>.
  1834. 70
  1835. 75
  1836. 69
  1837. 9999
  1838.                Controlling the speed and accuracy of integration
  1839.  
  1840.      X(PLORE) uses an adaptive Gauss-Kronrod algorithm for computing integrals.
  1841. You can get a very conservative estimate of the error in an integral with the
  1842. command
  1843.                                  INERROR
  1844. which returns an error estimate for the last integral.
  1845.  
  1846.      The algorithm is controlled by two constants, InTolerance and Depth.  The
  1847. current values of these algorithms are returned by the functions:
  1848.                                  GETINTOL
  1849.                                 GETINDEPTH
  1850.      You can reset these constants with the commands:
  1851.                                   INTOL(t)
  1852.                                  INDEPTH(n)
  1853. t must be a positive real number, and n a positive integer.  Using 0 for either
  1854. value will reset the corresponding constant to its default value, which are
  1855. 0.00001 and 7 respectively (0.0000001 and 9 for X(PLORE)87).  The smaller the
  1856. value of InTolerance and the larger the value of depth, the slower and more
  1857. accurate will be the computation of integrals.
  1858. 70
  1859. 9999
  1860.                                   Subroutines
  1861.  
  1862.      Subroutines are entered in the Subroutine Window.  To see the Subroutine
  1863. Window, press function key F10.  Press F10 again to return to the Input Window.
  1864.      There are two kinds of subroutines, procedures and functions.  Functions
  1865. can return a value, procedures cannot.  Both consist of a header line which may
  1866. include parameters, followed by a series of ordinary X(PLORE) entries and
  1867. control structures, followed by the word END on its own line.  Subroutine names
  1868. can be up to 12 characters long and must begin with a letter.  They cannot
  1869. duplicate the name of any of X(PLORE)'s built-in operators or any of your
  1870. variables or functions.
  1871.      Subroutines CANNOT use variables and functions from the Input Window.
  1872.      To return a value from a subroutine function, place the command RETURN(v)
  1873. on one line of your subroutine, where v is the value to be returned.
  1874. See also  <A>  Subroutine headers and parameters
  1875.                   PROCEDURE FUNCTION %
  1876.           <B>  Displaying messages and accepting user input
  1877.                   WRITE   INPUT   INPUTS   PAUSE    WAIT    BEEP
  1878.           <C>  Decision and looping operators
  1879.                   IF..ELSE    FOR    WHILE    REPEAT..UNTIL    EXIT
  1880.           <D>  Programming and graphics
  1881.                   GRAPHICS    TEXT    INPUT@    INPUTS@
  1882.           <E>  Examples
  1883. 82
  1884. 75
  1885. 76
  1886. 77
  1887. 72
  1888. 71
  1889. 9999
  1890.                            Example 1 -- Taking a test
  1891.  
  1892. PROCEDURE Test(n)
  1893. // ask n addition questions, accept no wrong answers
  1894. FOR i = 1 to n
  1895.     a = RANDOM(9)
  1896.     b = RANDOM(9)
  1897.     REPEAT
  1898.         INPUT(STR(a)|' + '|STR(b)|' =',x)
  1899.       UNTIL x = a+b
  1900.   END
  1901. END
  1902.  
  1903. How to use:  in the Input Window, enter:
  1904.  
  1905.                                     Test(5)
  1906.  
  1907. To see another example, push <A>.
  1908. 73
  1909. 72
  1910. 9999
  1911.                             Example 2 -- Random Walk
  1912.  
  1913. PROCEDURE RandomWalk
  1914.   // Depict a two-dimensional random walk
  1915.   WINDOW(-4.2,4.2,-3,3)
  1916.   GRAPHICS
  1917.   x=0
  1918.   y=0
  1919.   WHILE x > WINDOWLEFT AND x < WINDOWRIGHT AND y > WINDOWBOTTOM
  1920.                                                  AND y < WINDOWTOP
  1921.       t = RANDOM*2*PI
  1922.       x1 = x+COS(t)
  1923.       y1 = y+SIN(t)
  1924.       LINE(x,y,x1,y1)
  1925.       x = x1
  1926.       y = y1
  1927.     END
  1928.   TEXT
  1929. END
  1930.  
  1931. To use this procedure, enter the command:  RandomWalk.
  1932.  
  1933. To see another example, push <A>.
  1934. 74
  1935. 73
  1936. 9999
  1937.                     Example 3 -- Displaying Newton's Method
  1938.  
  1939. FUNCTION Newton(%f,x)
  1940.   // Solving f(t) = 0 with Newton's method starting with t = x, illustrated
  1941.   GRAPHICS
  1942.   GRAPH(f(t), t)
  1943.   REPEAT
  1944.       x1 = x - f(x)/dif(f(t),t=x)
  1945.       LINE(x,f(x),x1,0)
  1946.       LINE(x1,0,x1,f(x1))
  1947.       x = x1
  1948.       INPUTS('x = '|STR(x)|'. Do another step (Y/N)?',c)
  1949.     UNTIL UPCASE(c[1]) == 'N'
  1950.   RETURN(x)  
  1951.   TEXT
  1952. END
  1953.  
  1954. To use this subroutine, enter the command:
  1955.                                      Newton(x)
  1956. where x is a number between -1.5 and 1.5.
  1957. 74
  1958. 9999
  1959.                     Displaying messages and accepting input
  1960.  
  1961.      Subroutines can write messages on the screen with the command WRITE, for
  1962. example:
  1963.  
  1964.                    WRITE('The final answers are',x,'and',y)
  1965.  
  1966. Multiple values, including strings, separated by commas, can appear in a single
  1967. WRITE statement.  When WRITE is executed, the subroutine pauses until the user
  1968. presses a key.
  1969.  
  1970.      Subroutines can also pause to accept input if you use one of the commands
  1971. INPUT or INPUTS.  INPUT asks for a numerical value; INPUTS for a string.  Some
  1972. sample commands are:
  1973.  
  1974.                    INPUT('Enter initial value',x)
  1975.                    INPUTS('Do you want to continue (Y/N)',c)
  1976.  
  1977. Each INPUT command has two parts:  a message to be displayed and a variable to
  1978. hold the users input.
  1979.  
  1980.      You can make your subroutine issue an audible sound with the command BEEP
  1981. on its own line.
  1982. 75
  1983. 9999
  1984.                          Decision and looping operators
  1985.  
  1986.      X(PLORE) supports all the standard looping and conditional statements
  1987. found in modern programming languages except CASE.  Here are some examples:
  1988.  
  1989. IF x < 3 OR y > 2         WHILE ABS(x) < 1           REPEAT
  1990.     z = z+3                   x = f(x)                   oldx = x
  1991.     w = x*y                 END                          x = x-f(x)/g(x)
  1992.   ELSE IF x > 3                                        UNTIL ABS(x) < 0.01
  1993.     z = 5
  1994.   ELSE
  1995.     w = 4
  1996.   END
  1997.  
  1998. FOR i = 1 TO 20            FOR x = 0.05 TO 1 STEP 0.05
  1999.     s = s + f(i/20)            s = s + f(x)
  2000.   END                        END
  2001.  
  2002. All conditional constructs, except REPEAT, must be terminated by END.  The term
  2003. "then" is not needed after IF.
  2004.  
  2005. The command EXIT, on its own line, causes the immediate termination of the
  2006. current subroutine.
  2007. 76
  2008. 9999
  2009.                             Programming and graphics
  2010.  
  2011.      Sometimes you will want to execute a sequence of graphing commands in a
  2012. subroutine, but X(PLORE) normally stops after each one and waits for the user
  2013. to press <ENTER> or <ESC>.  You can prevent X(PLORE) from stopping by prefacing
  2014. your list of graphics commands with the command GRAPHICS.  All commands can be
  2015. executed while GRAPHICS is in force, but X(PLORE) will not pause after each
  2016. graphing command.  The effect of GRAPHICS can be turned off with the command
  2017. TEXT.
  2018.      If you want to stop in the middle of a sequence of graphics commands while
  2019. GRAPHICS is in force, use the command PAUSE.  X(PLORE) will pause until the user
  2020. presses <ENTER> or <ESC>.  While paused, the user can move the crosshairs
  2021. but not zoom a graph.  You can also stop your subroutines for n seconds
  2022. with the command WAIT(n).
  2023.      While GRAPHICS is in effect, you may wish to require the user to input a
  2024. value.  The usual INPUT command could be used, but its window would obscure
  2025. part of the graphics screen.  Alternatively, you may use the command:
  2026.                 INPUT@(x,y,n,v)
  2027. X(PLORE) will place a box sufficient to hold n characters at location (x,y) on
  2028. the screen, and wait for you to type a value into the box.  The value entered
  2029. will be placed in the variable v.  To input a string instead of a value, use
  2030. INPUTS@.
  2031. 77
  2032. 9999
  2033.                               Using external files
  2034.      X(PLORE) will save files of commands or data for reloading later.  To save
  2035. all your current formulas and subroutines, press function key F7 and enter the
  2036. name of the file you want to save.  The file name can include path information.
  2037. To reload a saved file, press F8 and enter the name of the file.  See also <A>.
  2038.      To save data, use the command SAVE(data,filename).  The filename must be a
  2039. string value or surrounded by apostrophes.  The data can be either a variable
  2040. or an expression. Use FSAVE to force overwriting an existing file. To reload
  2041. the saved data into a variable, use the command LOAD(var-name, filename).
  2042. You can also load any ASCII file into a list of strings with the command
  2043. LOADTEXT(var-name, filename).
  2044.      To save a graph, either press F7 while the graph is visible, or use the
  2045. command SAVEGRAPH(filename) to save the last graph.  Use FSAVEGRAPH to force
  2046. overwriting an existing file.  To load a graph, which will appear on the screen
  2047. and become your last graph <B>, use the command LOADGRAPH(filename).
  2048.      To see a list of all the files in a directory, press Shift-F8 and enter the
  2049. name of the directory.  This name can include a mask.  After viewing the
  2050. directory, you will be asked if you wish to make it your current directory. You
  2051. can also change your current directory by pressing Control-F8 and entering the
  2052. name of the new current directory.
  2053. 9
  2054. 63
  2055. 78
  2056. 9999
  2057.                                   Printing
  2058.  
  2059.      X(PLORE) can print text to any printer, and it can print special
  2060. characters and graphs on printers than can emulate the Epson, IBM or LaserJet
  2061. printers.  All printer operations are entered via the function key F2.  After
  2062. pressing this key, CC will ask you to select your printer type if you have not
  2063. already done so, and then present you with a menu of choices:
  2064.  
  2065. 1.  Start printing a record of all input and results
  2066. 2.  Stop printing
  2067. 3.  Print all formulas from input window, all subroutines and all variables
  2068. 4.  Print all formulas from input window
  2069. 5.  Print all subroutines
  2070. 6.  Print all variables
  2071. 7.  Skip to top of page
  2072. 8.  Save input window, subroutines and variables to disk
  2073. 9.  Change printer type
  2074.  
  2075. Option 1 prints all of your entries and results as you enter them.  Option 2
  2076. cancels option 1.  Options 3-6 print all current values.  Option 8 prints to an
  2077. ASCII disk file instead of your printer.
  2078.  
  2079. See <A> for information about PRINT, PRINTGRAPH and NEWPAGE.
  2080. 80
  2081. 79
  2082. 9999
  2083.               Printing variables and graphs, Ejecting pages
  2084.  
  2085.      You can print a graph either by pressing F2 while the graph is visible or
  2086. by entering the command PRINTGRAPH to print your last graph.
  2087.  
  2088.      You can print a variable or any other expression, useful for lists or
  2089. matrices, with the command PRINT(data).  For example:
  2090.  
  2091.                     m = MATRIX(1/(i+j-1),i=1,4,j=1,4)
  2092.                     PRINT(m)
  2093.  
  2094. To force the printer to eject the current page and start a new page, use the
  2095. command:
  2096.  
  2097.                     NEWPAGE
  2098.  
  2099. 80
  2100. 9999
  2101.                            Disk and Memory Management
  2102.  
  2103.      X(PLORE) is a large program.  It will run in 512K of memory, but larger
  2104. problems require 640K.  X(PLORE) uses overlays to reduce the amount of code
  2105. that must be in memory at any time, so it runs best off a hard disk.  If you
  2106. must run X(PLORE) from a floppy disk, you must use a disk of at least 720K
  2107. capacity.
  2108.  
  2109.      You should make as much memory as possible available before running
  2110. X(PLORE). Delete all but the most necessary TSR programs before starting
  2111. X(PLORE).
  2112.      You can free up memory while X(PLORE) is running by using FORGET to delete
  2113. unnecessary variables <A> and Shift-F9 to transfer your Last Graph information
  2114. to disk <B>.
  2115. 13
  2116. 63
  2117. 81
  2118. 9999
  2119.                        Subroutine Headers and Parameters
  2120.  
  2121.      Each subroutine must begin with one of the lines:
  2122.                  PROCEDURE procedure-name(parameter-list)
  2123.                  FUNCTION function-name(parameter-list)
  2124. The procedure-name or function-name can be up to 12 characters long beginning
  2125. with a letter.  It cannot duplicate the name of any of X(PLORE)'s built-in
  2126. functions or the name of any of your variables or functions from the Input
  2127. Window.
  2128.       The parameter list is a list of variable names <A>.  When you call the
  2129. subroutine, you specify initial values for these variables, which can then be
  2130. used in the subroutine.
  2131.       You an also pass a function definition to a subroutine by passing its
  2132. name as a parameter.  You identify a function-name parameter in a subroutine
  2133. header by preceding it with %.  See <B> for an example.
  2134.  
  2135. 13
  2136. 74
  2137. 82
  2138. 9999
  2139.                       Algebraic Simplification
  2140.  
  2141. X(PLORE) is capable of minimal algebraic simplification, which is intended
  2142. mostly for putting X(PLORE)'s symbolic derivatives into reasonable form.  If
  2143. you evaluate a formula with undefined variables, X(PLORE) will simplify the
  2144. formula as much as it can.
  2145.  
  2146. X(PLORE) usually will leave powers of sums, for example (x+3)^5, unexpanded.
  2147. To change this and force X(PLORE) to expand these binomial expressions, enter
  2148. the command: EXPANDON
  2149.  
  2150. To return X(PLORE) to its default mode of simplifying expressions, enter:
  2151.  
  2152.                         EXPANDOFF
  2153.  
  2154. 13
  2155. 74
  2156. 83
  2157. 9999
  2158.