What's New in Version 2
- To: mathgroup at yoda.ncsa.uiuc.edu
- Subject: What's New in Version 2
- From: pea
- Date: Thu, 31 Jan 91 16:55:37 CST
- Cc: joe, pea
New Features in Version 2.0
These notes describe new features in the kernel of Mathematica Version 2.0 that
were not in Version 1.0. Incompatibilities between Versions 1.0 and 2.0 are
indicated below by *. Particularly important enhancements are indicated by
exclamation points (!). Page references are to the second edition of Stephen
Wolfram's book "Mathematica: A System for Doing Mathematics by Computer". Some
of the features described below were already present in Mathematica Versions
1.1 or 1.2.
. Sign has been generalized to handle complex numbers. See pages 550
. Random has been speeded up for the case of real numbers. (It now uses
a Fibonacci generator in this case; it continues to use a cellular
automaton generator for integers.) See page 552.
* GCD now handles numbers only. PolynomialGCD has been added to handle
polynomials. See pages 553 and 598.
. PrimePi[x] gives the number of primes less than x. See page 554.
. FactorInteger has been greatly speeded up. A package is now provided
for factoring with elliptic curves. See page 554.
. The option GaussianIntegers has been added for FactorInteger and PrimeQ,
allowing factoring of complex integers. See page 556.
. The functions ClebschGordan, ThreeJSymbol, and SixJSymbol have been added
for computing rotational coupling coefficients. See page 561.
* The trigonometric functions Csc, Sec, and Cot are now handled explicitly,
and are not automatically written in terms of Sin, Cos and Tan.
* The hyperbolic functions Sinh, etc., are now handled explicitly, and are
not automatically written in terms of Exp, etc.
* Principal roots are now used for all fractional powers. Thus (-8)^(1/3) is
now converted to 2 (-1)^(1/3), rather than to -2. See page 564.
. The evaluation of Pi, EulerGamma and Catalan to arbitrary precision has been
speeded up. See page 566.
. The computation of Bessel, Airy and related functions has been speeded up,
particularly for machine-precision arguments. The computation of all
hypergeometric functions has been made more robust.
. AiryBi, AiryAiPrime, and AiryBiPrime have been added. See page 570.
. SinIntegral and CosIntegral have been added. See pages 570 and 571.
. Erfc has been added. See page 570.
. The functions RiemannSiegelTheta and RiemannSiegelZ have been added.
See page 571.
. JacobiZeta has been added, and EllipticTheta, EllipticThetaPrime and
EllipticPi have been completed. See page 580.
. A standard package giving common statistical distributions has been added.
See page 586.
! A compiler for numerical expressions has been added, making their
evaluation much faster. With the option setting Compiled->True, the compiler
is automatically invoked in various numerical and graphical functions. You
can explicitly create CompiledFunction objects using the function Compile.
See page 312.
* The functions IntegerDigits and RealDigits have been added, for giving lists
of digits in numbers. See page 537. (These functions supersede the function
Digits provided in Version 1.2.)
. MantissaExponent gives the mantissa and exponent of a number, in any base.
See page 538.
. MachineNumberQ has been added to test for machine numbers. The global
variables $MachinePrecision, $MachineEpsilon, $MinMachineNumber and
$MaxMachineNumber give parameters of machine arithmetic on your particular
computer system. See page 545.
. SetPrecision and SetAccuracy have been added, to allow the precision and
accuracy for arbitrary-precision numbers to be changed. (These functions
were already present in Version 1.1.) See page 544.
. Interpolation gives an InterpolatingFunction which represents interpolation
of data. See page 676.
. InterpolatingPolynomial gives an exact polynomial fit to data. See page 675.
. Fourier and InverseFourier have been generalized to allow data with any number
of dimensions. They also allow data with arbitrary precision. See page 682.
. Numerical operations on functions have been made more efficient and robust.
* NIntegrate, NSum and NProduct now have a PrecisionGoal option as well as
AccuracyGoal. Other options to these functions have also been slightly
. NSolve has been added to give numerical solutions to polynomial equations in
the form returned by Solve. It extends the Version 1.0 function NRoots.
! NDSolve has been added for finding numerical solutions to systems of ordinary
differential equations. See page 696.
! ConstrainedMin, ConstrainedMax and LinearProgramming have been added for
solving linear programming problems. See page 705.
. Numerical linear algebra has been made much more efficient.
. MatrixPower and MatrixExp have been added. See page 659.
. A Modulus option has been added for Inverse. See page 663.
. QRDecomposition and SchurDecomposition have been added. See page 665.
. Solve can now solve some equations involving exponential, logarithms and
trigonometric functions. (This functionality was already present in Version
1.2.) See page 612.
. InverseFunction has been added, to represent inverse functions which can be
returned by Solve. (Already present in Version 1.2.) See page 612.
. GroebnerBasis gives the Grobner basis for a list of polynomials. (This
function was already present in Version 1.2.) See page 622.
* Power does not automatically rewrite expressions of the form (ab)^c and
(a^b)^c. The function PowerExpand has been added to do this. See page 592.
. Expand and related functions now take a second argument which is a pattern
specifying which parts of an expression should be expanded. See pages 592
* PolynomialGCD and PolynomialLCM have been added. GCD no longer works on
polynomials. (The functions PolynomialGCD and PolynomialLCM were already
present in Version 1.2.) See page 598.
* PolynomialMod has been added to reduce polynomials with respect to one or
several moduli. Mod no longer reduces coefficients in polynomials. See pages
598 and 602.
. FactorTerms now takes a second argument to specify which variables should
appear in terms that are factored out. See page 598.
. Factor and related functions now take the option GaussianIntegers which allows
factoring in terms of polynomials with complex number coefficients.
See page 600.
. Expand, Factor and related functions now take the option Trig. With the
setting Trig -> True, transformations are made for trigonometric functions.
See page 603.
. ComplexExpand transforms expressions, using explicit assumptions about whether
symbolic variables are real or complex. See page 604.
. Integrate has been considerably extended. It now incorporates the complete
Risch algorithm for indefinite integration, as well as algorithms for definite
integration based on generalized hypergeometric functions. Version 2.0 may
give results for some integrals in a different form from Versions 1.0 or 1.2.
See page 632.
! DSolve has been added for finding symbolic solutions to ordinary differential
equations. See page 637. (Dsolve existed in Version 1.2, but has been much
extended in Version 2.0.)
. InverseSeries now allows two arguments to be given, so that the value of the
series and the name of the expansion variable need not be the same.
See page 644.
. Limit has been much extended. The option Direction has been added to allow for
directional limits. Limit can now return RealInterval objects. See page 646.
. Series has been extended to handle many kinds of special functions. (Already
done in Version 1.2.)
. Residue has been added. (This function was already present in Version 1.2.)
See page 648.
. ParametricPlot3D has been added as a built-in function to allow parametric
curves and surfaces to be generated in three dimensions. (ParametricPlot3D
was given in a package in Version 1.2.) See page 168.
. GraphicsArray has been added to allow a plot to be built up from several
subplots. See page 146.
. Surfaces generated by Plot3D, etc., can now be combined using Show. See
. Conversions can now be done between all types of graphics. See page 448.
. Options now takes a second argument which specifies the particular option
whose value is to be given. FullOptions gives the explicit value used for
an option even if its setting is Automatic. See page 398.
. FullGraphics gives a complete graphics object containing the explicit graphics
primitives for axes and other elements specified by graphics options.
See page 398.
* The graphics primitive CellArray has been renamed Raster. The new graphics
primitive RasterArray has been added, to allow an array of graphics directives,
rather than an array of levels, to be specified. See page 405.
. The graphics primitives Circle and Disk have been added. See page 404.
. Rectangle now allows a second argument, which can be any graphics object. The
graphics object is rendered within the specified rectangle. This allows
subplots to be drawn in a flexible way.
. The graphics directive Hue has been added, to allow specification of colors in
hue, saturation and brightness as well as red, green and blue. See page 407.
. AbsolutePointSize, AbsoluteThickness and AbsoluteDashing have been added to
allow sizes of graphics objects to be specified in absolute units, independent
of the overall size of a plot. See page 409.
. The options Background and DefaultColor have been added to allow overall
colors for plots to be specified. See page 412.
. The options Prolog and Epilog have been added to allow graphics primitives to
be specified for rendering before or after the main part of a plot. See
. The option PlotRegion has been added to allow margins around plots to be
specified. See page 414.
* The option Axes now allows only the settings True and False in both two and
three dimensions. AxesOrigin specifies the origin to use for axes in two
dimensions. AxesStyle specifies the style in which axes should be rendered.
See page 418.
. New settings for the Ticks option have been added, to allow labels and styles
for ticks to be given, and to allow tick specifications to be given
automatically by a function. See page 420.
* The option Framed has been removed. Frame has been added, to allow axes to be
given on a frame around a plot. Details of the frame can be specified using
the options FrameStyle, FrameLabel, FrameTicks and RotateLabel. See page 422.
. The option GridLines has been added, to allow grid lines to be drawn in
* ContourPlot and ContourGraphics have been modified so that by default they
shade the regions between contour lines. This can be prevented by setting the
option ContourShading -> False. See page 151.
* ContourPlot and ContourGraphics now do not by default generate smooth
contours. Smooth contours can usually be produced by setting the option
ContourSmoothing -> Automatic. See page 153.
. The option ColorFunction has been added for surface, contour and density plots
to allow color maps to be specified. See page 425.
* The option Contours for contour plots gives the total number of contours to
use, or a list of the contour values. This option supersedes the options
ContourLevels and ContourSpacing in Version 1. See page 427.
. The three-dimensional graphics primitive Cuboid has been added. See page 430.
. Hidden surface elimination has been made substantially faster for complex
* The default setting for the option Lighting in Plot3D has been changed to
True. See page 436.
. The options ViewCenter and ViewVertical have been added to allow a wider range
of possible orientations for three-dimensional graphics to be used.
See page 443.
. The three-dimensional graphics directive SurfaceColor has been added to allow
reflection properties of surfaces to be specified. See page 458.
. Axes on three-dimensional plots can now have labels and tick marks. (Supported
in Version 1.2). See page 461.
. The option FaceGrids has been added for three-dimensional graphics.
See page 463.
. The graphics primitive PostScript has been added to allow verbatim PostScript
code to be given. See page 465.
* The mechanism for specifying fonts for text in graphics has been changed.
The option DefaultFont is now available in all graphics functions, with a
default value given by the global variable $DefaultFont. All fonts available
on a particular PostScript system can now be accessed from Mathematica.
See page 468.
. Text in graphics can now be written vertically, as well as horizontally.
See page 470.
. Text is now supported in three-dimensional graphics. See page 471.
. The graphics directive CMYKColor has been added to allow color specifications
to be given in a form directly suitable for color printing. See page 472.
* The option PlotColor has been superseded by the more general option
ColorOutput, which specifies how colors generated by Mathematica should be
transformed before output. See page 473.
. Sound generation capabilities have been added. Play and ListPlay are the
analogs for sound of Plot and ListPlot for graphics. See page 176.
TEXT AND STRING MANIPULATION
* ToASCII and FromASCII have been replaced by ToCharacterCode and
FromCharacterCode. See page 366.
. Extended character sets are now fully supported. Any one- or two-byte
character can be used. See page 367.
. $StringConversion and the option StringConversion specify how special
characters should be output. See page 371.
. The special input form <> is now allowed for StringJoin. See page 376.
. StringTake and StringDrop allow substrings to be extracted and removed from
strings. See page 376.
. StringReverse reverses the characters in a string. See page 376.
. StringPosition allows the position of one or more substrings in a string to be
found. See page 376.
. StringReplace allows substrings within a string to be replaced. See page 376.
. DigitQ, LetterQ, UpperCaseQ and LowerCaseQ test for particular types of
characters. See page 378.
. ToUpperCase and ToLowerCase convert strings. See page 378.
. The option IgnoreCase allows string manipulation operations to be done in a
case-insensitive way. See page 379.
* The standard sorting order for strings and symbol names has been changed to
agree with the order usually used for indices and dictionaries. The variable
$StringOrder specifies the ordering of characters to be used. See page 379.
. ToHeldExpression converts a string to an expression, wrapping the expression
with Hold to prevent it from evaluating. See page 381.
. SyntaxQ and SyntaxLength allow the syntactic correctness of strings considered
as Mathematica input to be tested. See page 381.
. StringToStream converts a string to an object that can be treated like an
input file, and on which many standard file operations can be done.
See page 382.
. The option SpellingCorrection has been added for Names and related functions
to allow names that differ only slightly to be found. See page 385.
INPUT AND OUTPUT
. Shallow has been added as an alternative to Short in generating outline forms
for expressions. See page 346.
. Padding and various alignment and other options have been added for printing
numbers. See page 351.
. AccountingForm and PaddedForm have been added as new output formats for
numbers. See page 352.
. Many options have been added for TableForm and MatrixForm, including spacing
and labeling. See page 354.
* Functions such as Get now return $Failed if they cannot access the files
specified, rather than returning unevaluated. See page 477.
. Encode allows files to be encoded so that their text can be read only by
Mathematica. See page 480.
. Streams have been introduced, to allow multiple instances of a particular
file or pipe to be used simultaneously for input or output. See page 483.
. Options and SetOptions can now be used on streams. See page 488.
. The option RecordLists has been added to ReadList, to allow separate records
to appear as separate sublists. See page 494.
. ReadList now takes a third argument which specifies the maximum number of
objects to read. See page 494.
. ReadList can now handle Word and Record objects. Delimiters for these objects
are specified by options to ReadList. See page 496.
. Directory, SetDirectory and a variety of other functions have been added for
manipulating directories. See page 489.
. FileNames gives a list of the names of files matching a string pattern, in
specified directories. See page 491.
. Context names can now be used as system-independent specifications of files
containing Mathematica packages. See page 492.
. CopyFile, DeleteFile, FileDate, FileByteCount and related functions have been
added. See page 493.
. Skip allows objects in a file being read to be skipped over. See page 499.
. FindList allows records containing particular pieces of text to be found in
files. See page 500.
. StreamPosition and SetStreamPosition allow the current point in a file to be
manipulated. See page 503.
. The /; operator can now be used anywhere in a pattern, not just on the
right-hand sides of rules. See page 225.
. The special input forms === and =!= have been introduced for SameQ and
UnsameQ. See page 228.
. The operator | (Alternatives) can be used to specify a pattern which can have
one of several forms. See page 229.
. Dispatch has been added to allow lists of rules to be preprocessed into
dispatch tables which use hashing, and are much more efficient. See page 246.
* The procedure that Mathematica uses for ordering definitions has been changed
so that a larger class of more specific rules are placed before more general
ones. See page 254.
. DownValues and UpValues now provide explicit access to lists of rules set up
by assignments. See page 266.
. Lists of attributes can now be specified for pure functions. See page 274.
* Evaluate evaluates a function argument even if the attributes of the function
specify that the argument should be held. Evaluate takes over one of the two
uses of Release in Version 1. See page 280.
* ReleaseHold removes Hold and HoldForm in an expression. It takes over the
second of the two uses of Release in Version 1. See page 282.
. HeldPart and ReplaceHeldPart allow parts of expressions to be accessed and
replaced without evaluation. See page 282.
. Unevaluated allows a particular function argument to be passed to the function
without evaluation. See page 282.
. Iteration functions such as Table, Sum and Do now effectively use Block to
localize iteration variables. See page 286.
* If, Switch and Which now all remain unevaluated if the truth values of
conditions in them cannot be determined. See page 287.
* Break, Continue and Return now work inside Do. See page 293.
! Trace and related functions provide a range of capabilities for tracing the
evaluation of Mathematica functions. See page 295.
* Debug has been superseded by Trace and TraceDialog.
. Stack gives a list of the objects being evaluated at a particular point in a
computation. See page 306.
. $IterationLimit and $RecursionLimit now provide two ways to limit
computations. See page 308.
. Interrupt and Abort generate interrupts during the execution of a program.
See page 311.
! Module and With have been added to allow the names as well as the values of
variables to be treated as local. See page 318.
* Pure functions, rules and assignments are now treated as scoping constructs,
so that the names of variables appearing in them are considered to be local.
See page 326.
. Contexts gives a list of contexts with names of a particular form.
See page 335.
. DeclarePackage has been added to allow automatic loading of packages to be set
up. See page 341.
. $NewSymbol has been added to allow operations to be performed whenever a new
symbol is created. See page 386.
SYMBOLIC AND STRUCTURAL OPERATIONS
. ReplacePart allows one or more parts with specified indices in an expression
to be replaced. See page 195.
. Insert now allows a list of positions to be specified, at each of which the
same expression will be inserted. See page 128.
. Delete allows parts at specified positions to be removed. See page 128.
. DeleteCases allows parts matching a particular pattern to be removed.
See page 222.
. RotateLeft, RotateRight and Partition have been generalized to handle arrays
of any rank. See page 132.
. The functions Position, Cases and Count now take level specifications.
See page 198.
. The option Heads can be used in functions which take level specifications
to determine whether heads of expressions are included in levels.
See page 198.
. The option SameTest has been added for FixedPoint, to allow an arbitrary
function to be used to determine whether a fixed point has been reached.
See page 201.
. FixedPointList is the analog for FixedPoint of NestList for Nest.
See page 201.
* Fold and FoldList are analogs of Nest and NestList for two-argument functions.
They supersede Accumulate. See page 202.
. MapIndexed is a version of Map which gives the index of each part as a second
argument. See page 206.
. MapThread is a version of Map which can be applied to several expressions with
the same structure. See page 206.
. ComposeList successively applies a list of functions, and gives a list of the
results. See page 210.
. Select now takes a third argument which specifies the maximum number of
elements to select. See page 211.
* The functional operator Composition supersedes the function Compose.
See page 213.
. FlattenAt effectively allows Flatten to be applied to specific elements.
See page 215.
. VectorQ and MatrixQ now take a second argument which is applied to each
element of the candidate vector or matrix. See page 227.
. Many warning messages have been renamed and rewritten. Documentation for the
messages is available as a Wolfram Research technical report.
. Many common input errors are now detected, and warnings are generated.
. MessageList gives the list of all messages generated during the evaluation of
a particular input line in a Mathematica session. See page 389.
. $Language specifies the default language to use for messages. See page 391.
. InString now stores the textual input given on each line in a Mathematica
session. See page 513.
. $PreRead allows input for Mathematica to be modified in textual form, before
it is converted to an expression. See page 514.
. $SyntaxHandler specifies how syntax errors in Mathematica input should be
handled. See page 514.
* SetOptions is now used instead of ResetMedium to change the options for input
and output streams. See page 517.
. Streams is now used instead of to give a list of streams that are currently
open. See page 519.
. $MessagePrePrint is applied to expressions that are to be printed as part of
messages. See page 519.
. Dialog initiates a dialog, which serves as a subsession within a complete
Mathematica session. See page 520.
. Date, TimeZone, AbsoluteTime, SessionTime and TimeUsed give various measures
of time. See page 524.
. Pause tells Mathematica to pause for a certain time. See page 524.
. ToDate and FromDate convert to and from explicit date representation.
See page 524.
. Several global parameters specifying properties of a particular Mathematica
system have been added. Examples are $CreationDate and $OperatingSystem.
. On many computer systems, a DataOnly option is supported for Dump, which
allows smaller, incremental, dump files to be used. See page 783.
. The operator <> has been added as a special input form for StringJoin.
. The operator | has been added to represent alternatives in patterns.
. The operators === and =!= have been added as special input forms
for SameQ and UnsameQ.
. The form s::m::m represents messages in specific languages.
. New special input forms have been added for special characters, including
16-bit ones. See page 714.
Prev by Date:
math-mode bug fix
Previous by thread:
math-mode bug fix