New features that have been added to Maple for version 4.3
|
----------------------------------------------------------
|
Development of improved user interfaces
|
---------------------------------------
|
The user interface, known as Iris, is programmed separately from the
|
Maple "algebra engine". Availability of particular features is workstation-
|
dependent. All implementations of Maple include a new version of the pretty-
|
printer (see below) and a new lexical scanner. The lexical scanner now pro-
|
vides improved error messages, with a caret symbol pointing to the most likely
|
place where a syntax error has occurred and the line number at which it
|
occurred is also specified (for input from a file).
|
Versions of Iris which exploit workstation features such as windows,
|
mouse selection, session history, and editing have been developed. An Iris
|
facility with these advanced features is available for the Macintosh and will
|
soon be released for X-Windows and SunView.
|
3-D plotting
|
------------
|
A 3-D plotting facility has been developed. Availability of this facil-
|
ity is workstation-dependent. The 3-D plotting facility will soon be released
|
for X-Windows, SunView, and the Macintosh. Both 2-D and 3-D plotting exploit
|
the new `evalhf` function (see below) to achieve improved efficiency of point
|
generation.
|
New prettyprinter
|
-----------------
|
The generic Iris facility available on all host systems now uses a new
|
prettyprinter. The new prettyprinter supports the following:
|
1) break on interrupt -- the new prettyprinter is interruptible;
|
2) prettyprinting of Maple procedures;
|
3) columns of matrices are aligned where possible;
|
4) automatic labelling of common subexpressions in large output
|
as %1, %2, ... ;
|
5) the labelled subexpressions can be used for subsequent input.
|
Improved help facility
|
----------------------
|
The help facility has been improved so that the information is displayed
|
one screenfull at a time, when such a facility is supported by the host system.
|
In addition, when the help system fails to find information for the word speci-
|
fied, a list of "nearby names" is displayed. The definition of "nearby names"
|
is all names known to help which match the given name in the first three char-
|
acters. For example, help(f) will display all names known to help which begin
|
with the letter f. A facility to generate examples of Maple expressions is
|
also available.
|
Macro and alias facilities
|
--------------------------
|
A macro facility and an alias facility provide the user with a mechanism
|
for macros and abbreviations, respectively. For example, a user may state:
|
alias(J=BesselJ);
|
This allows the user to use the abbreviation J on input, Maple receives the
|
value BesselJ which it understands, and the abbreviation J will be used on out-
|
put.
|
Rule-based facility for function definition
|
-------------------------------------------
|
A new facility allows functions to be defined via the specification of a
|
sequence of rules which will be applied based on pattern and type matching.
|
For example, the following defines a linear operator:
|
define( L, forall( [x,y], L(x+y) = L(x)+L(y) ),
|
forall( [constant(n),x], L(n*x) = n*L(x) ) );
|
Operators may also be defined in terms of properties such as commutative, asso-
|
ciative, antisymmetric, etc. See help(define) and its subtopics.
|
Internal support for polynomials over the integers modulo n
|
-----------------------------------------------------------
|
An internal routine called 'modp1' provides support for arithmetic in
|
Zn[x], i.e. univariate polynomials over the integers modulo n. Modp1 greatly
|
enhances the performance of many operations including greatest common divisors,
|
resultants, and factorization of univariate polynomials over the integers.
|
Modp1 is designed to compute with both small primes (word-size primes) and
|
large primes. All the basic arithmetic operations are supported including Quo,
|
Rem, Eval, Interp, Gcd, Gcdex, Resultant, Discrim, Irreduc, Roots, and Factors.
|
Modp1 also makes possible an efficient implementation of Galois fields (see GF
|
and evalgf).
|
Hardware floating-point evaluation
|
----------------------------------
|
A new function 'evalhf' is available. Like 'evalf' its purpose is to
|
evaluate an expression in floating-point mode but the new function evaluates
|
using the hardware floating-point capabilities (if available) of the host sys-
|
tem. In particular, it uses the fixed-precision numerical accuracy of the
|
"double precision" hardware floats. The argument may be an expression involv-
|
ing the invocation of built-in functions or Maple procedures but all data must
|
evaluate to numeric values (unlike evalf which allows mixed symbolic and
|
numeric data). Evalhf achieves much faster numeric evaluation than evalf which
|
uses a software floating-point facility.
|
Numerical computation facilities
|
--------------------------------
|
The numerical integration facility `evalf/int` exploits the new evalhf
|
function to achieve improved speed of execution (at moderate precision require-
|
ments). There have also been functionality improvements in singularity-
|
handling and infinite-range capabilities. The inert function name Int is known
|
to evalf and therefore the invocation evalf(Int(f,x)) can be used to apply
|
numerical integration without first invoking symbolic integration.
|
New numerical computation facilities include Eigenvals (eigenvalue compu-
|
tation) and Svd (singular value decomposition). The floating-point solver
|
(fsolve) has been enhanced to handle a wider class of problems, including the
|
computation of all complex roots of a polynomial.
|
New mathematical functions and constants known to Maple
|
-------------------------------------------------------
|
- the Bessel functions BesselJ, BesselY, BesselI, BesselK
|
- the Beta function Beta
|
- the generalized Gamma constants gamma(1), gamma(2), ... (replacing the
|
former notation gamma1, gamma2, ...)
|
- the Fresnel integrals C and S have been renamed FresnelC and FresnelS
|
- the evalf knowledge of the Psi function has been enhanced to handle the n-th
|
derivative Psi(n,x)
|
- the incomplete GAMMA function
|
GAMMA(a,x) = int( exp(-t)*t^(a-1), t = x..infinity)
|
Enhanced integration facilities
|
-------------------------------
|
The Risch integration algorithm now handles some cases of radical func-
|
tions. The Risch-Norman method is now applied prior to the standard Risch
|
algorithm, providing a fast heuristic method which deals with trigonometric
|
functions in real form rather than in complex exponential form.
|
New capabilities for definite integration have been added, particularly
|
for infinite ranges when the integrand involves exponential, logarithmic, and
|
trigonometric functions.
|
New simplification routines
|
---------------------------
|
A facility for simplification with respect to side relations (rewrite
|
rules) has been installed. For example,
|
e := -1/3*x^5*y + x^4*y^2 + 1/3*x*y^3 + 1;
|
simplify( e, {x^3 = x*y, y^2 = x+1} );
|
causes the rewrite rules (specified as a set of equations) to be applied to the
|
expression e via an algorithm which uses a Groebner basis, resulting in the sim-
|
plified expression:
|
x^2*y + x^2 + x + 1 .
|
See help(simplify,siderels) for further information.
|
The following special functions are now known to simplify -- see
|
help(simplify) for the complete list of simplification procedures:
|
BesselJ,BesselY Bessel functions
|
BesselI,BesselK Modified Bessel functions
|
Ei Exponential integral
|
dilog Dilogarithm function
|
Other simplification enhancements:
|
- simplify/GAMMA extended; it now knows Gauss's multiplication formula, the
|
reflection formula, and it handles quotients of GAMMA functions
|
- simplify/power now does a^x*(-a)^y ==> (-1)^y*a^(x+y)
|
- simplify/hypergeom now includes all summation theorems given in Appendix III
|
of L.J.Slater's Generalized Hypergeometric Functions
|
- simplify(..,infinity) simplifies expressions which contain infinity when
|
there are no ambiguities
|
Combine function
|
----------------
|
The new function "combine" provides another class of transformations
|
which are a form of simplification. Its purpose is to combine terms of
|
specific forms, in a sense which is generally the inverse of expand. It han-
|
dles trigonometric functions, exponentials, logarithms, powers, limits, sums,
|
and integrals. For example:
|
combine( sin(x)*cos(x), trig ); ==> 1/2*sin(2*x)
|
expand( 1/2*sin(2*x) ); ==> sin(x)*cos(x)
|
New features of fsolve
|
----------------------
|
- incorporation of the option "complex" to compute complex roots of polynomials
|
- new options and new formats (ranges can use "infinity" now, and a single
|
range is used for all variables)
|
- a new algorithm for a Newton iteration on systems of equations
|
- a new algorithm for systems of equations based on reducing the system (with
|
the symbolic solver) for all the "simple" substitutions, and then solving
|
numerically for what is left
|
- a new algorithm for polynomials works in three stages: a heuristic method
|
based on a Newton-type iteration complemented with bisection, a complex New-
|
ton iteration to find complex quadratic factors, and a routine for refining
|
the roots found; the refinement of roots is done for each root over the ori-
|
ginal polynomial before deflating and hence relative errors should be signi-
|
ficantly reduced
|
- for scalar equations, the scalar zero finder has been made faster by recog-
|
nizing the case of slow convergence and accelerating the steps in such a
|
case.
|
Type expressions and structured types
|
-------------------------------------
|
The notion of a type (as defined by the type function) has been extended
|
to include "structured types". A structured type is a Maple expression which
|
is interpreted as a composite type; for example, list(algebraic),
|
name=integer..integer . Structured types allow for more concise and complete
|
argument checking and type analysis. For example,
|
type( expr, name=algebraic..algebraic );
|
returns true iff expr is an equation whose left-hand side is a name and whose
|
right-hand side is a range of algebraic's. See help(type,structured) for
|
details. Additionally, the following new types are known:
|
type/RootOf a RootOf expression
|
type/anything matches any type
|
type/even an even integer
|
type/odd an odd integer
|
type/negative a negative number
|
type/nonneg a non-negative number
|
type/positive a positive number
|
type/square a perfect square
|
type/type a valid Maple type expression
|
The interface function
|
----------------------
|
The interface function allows one to set or inquire about values relating
|
to the user interface. This provides a unique mechanism for communication
|
between the Iris interface and the Maple "algebra engine". The variables
|
relating to the interface are:
|
variable type/value description
|
=============================================================================
|
echo 0,1,2,3,4 for echoing of input
|
indentamount integer indentation for multiline expressions/procedures
|
labelling true/false labelling of expressions on output
|
labelwidth integer minimum size to be labelled
|
prettyprint true/false for two dimensional output
|
printfile string system command for displaying a file
|
prompt string user prompt
|
quiet true/false suppress auxiliary printing
|
screenheight integer screen height in characters
|
screenwidth integer screen width in characters
|
plotdevice string name of the plotting device
|
plotoutput string file name for plot output
|
preplot list(integer) terminal escape sequence
|
postplot list(integer) terminal escape sequence
|
terminal string terminal setup for plotting
|
verboseproc 0,1,2 controls printing of procedure bodies
|
version string name of the interface
|
Miscellaneous new features in version 4.3
|
-----------------------------------------
|
- series expansion of unknown functions now uses the D operator
|
- enhanced computation of generalized series, particularly for the case of tri-
|
gonometric functions with non-analytic function arguments
|
- asymptotic series with respect to expressions other than names; e.g.
|
asympt( sin(1/ln(n)), ln(n) )
|
- gcd now has special code for the case of a very small against a very large
|
argument; it factors the small one and does trial divisions
|
- a facility for modifying or creating Maple procedures is provided via two
|
functions: procbody and procmake; a neutralized language is used to
|
represent as expressions the <statement sequence> which makes up the body of
|
a procedure
|
- the optimize code includes a utility routine which allows a Maple procedure
|
to be dynamically constructed from a computation sequence; see
|
help(optimize,makeproc) for details
|
- match has been extended to handle various cases with missing powers which
|
were not previously handled
|
- definite and indefinite summation have improved handling of logarithms, and
|
of Psi(x) and its derivatives
|
- d in the difforms package does a better job of expanding a scalar w.r.t. a
|
basis of one-forms; for example, d(f, [d(x),d(y),d(z)]) gives
|
fx*d(x)+fy*d(y)+fz*d(z)
|
- dsolve, laplace, and powseries[powsolve] use the D operator to express ini-
|
tial conditions; for example, D(x)(0)=5 instead of xp(0)=5
|
- dsolve(..,..,series) now uses the method of Frobenius for linear differential
|
equations at regular singular points
|
- dsolve now solves systems of linear ODEs (previously handled only via
|
laplace transforms or series)
|
- convert(....,rational,exact) with the new option "exact" performs exact
|
conversion of a floating-point number to a rational number (rather than the
|
more intelligent and more expensive conversion via continued fractions)
|
- the function symmpoly has been renamed recipoly (computes the "reciprocal
|
polynomial")
|
- three-valued logic: true, false, or FAIL, is now used when evaluating in a
|
boolean context; FAIL is treated like false for branching decisions and for
|
evaluating boolean expressions
|
- internal format files (".m" files) are now identified by version so that
|
Maple will not attempt to read incorrect ".m" files; furthermore, Maple
|
understands how to read ".m" files whether they have been generated by a
|
VAX-type integer ordering or its reverse
|
- sort is now an internal function; it uses a variation of the basic merge
|
sort algorithm, consequently sorting is much faster
|
- cat is now an internal function
|
- the evalgf evaluator has been added for computing over non-prime finite
|
fields (i.e. GF(p^k) == algebraic extension of degree k over Z mod p for a
|
prime p); multiple extensions are supported
|
- various drivers have been added to the plotting routine; the present list of
|
drivers is:
|
plotdevice description
|
_______________________________________________________________
|
char character plot
|
i300 imagen 300 laser printer
|
ln03 DEC LN03 laser printer
|
mac Macintosh plot
|
pic output file for use with the troff pic preprocessor
|
postscript PostScript-compatible printer
|
regis terminals with Regis graphics
|
tek Tektronix graphics terminals
|
1 output file for use with the Unix plot command
|
vt100 VT100 line graphics
|
- when loading a package via "with", the list of functions available in the
|
package is now sorted
|
- the memory usage messages now report in bytes, rather than words
|
- diff can now operate over equations, lists, and sets
|
- taylor now checks that the resulting series is a true Taylor series and
|
returns an error otherwise; the series function will compute a generalized
|
series expansion
|
- `if` function incorporated into Maple. E.g.
|
absx := `if`( x<0, -x, x );
|
- asymptotic and generalized series expansions can be computed for unevaluated
|
recurrences
|
- generalized series, asymptotic series, and limits can be computed for
|
unevaluated integrals
|
- limit now handles the GAMMA and erf functions for all cases
|
- the "asympt" function now can develop asymptotic series with essential singu-
|
larities; these have the same power as the generalized hierarchical series
|
used in limit computation
|
- collect now supports an option to allow any Maple function (procedure) to be
|
applied to the coefficients
|
- computation over algebraic number fields has been improved via the use of
|
fast heuristic methods and improved factorization over the rationals
|
New functions
|
-------------
|
(use "help(f);" in a Maple session for information about f)
|
alias Define an abbreviation or denotation
|
allvalues Evaluate expressions involving RootOf's and return all values
|
bernstein Bernstein polynomial approximating a function
|
combine Combine terms into a single term
|
cost Operation evaluation count
|
Det Inert determinant function for use with mod and modp1
|
Eigenvals Inert eigenvalues function, for use with evalf
|
Eval Inert evaluation function, for use with the mod operator
|
evalgf Finite field arithmetic (including polynomial factorization)
|
evalhf Evaluate using hardware floating-point arithmetic
|
example Generate a random example for a specified function
|
Expand Inert expand function, for use with evala, evalgf, and mod
|
extrema Find relative extrema of given expression
|
Factors Inert factors function, for use with mod and modp1
|
factors Generate a list of factors and multiplicities
|
Functions Maple function information
|
GF Galois field (finite field) arithmetic
|
ifactors Generate a list factors and multiplicities for an integer
|
interface Setting and inquiry of interface parameters
|
Irreduc Inert irreducibility test function, for mod and modp1
|
isqrfree Integer square-free factorization
|
lhs The left-hand-side of an equation, relation, or range
|
macro Define a macro (input abbreviation)
|
modp1 Efficient polynomial arithmetic over the integers mod n
|
modpol Expression evaluation in a quotient field
|
norm Compute the norm of a polynomial
|
Normal Inert normal form function, for evala and evalgf
|
optimize Generate an optimized computation sequence
|
plot3d Generate a 3-dimensional surface plot
|
plotsetup Parameter setting for plotting
|
Power Inert power function, for use with mod and modp1
|
Powmod Inert powering modulo a polynomial, for use with mod and modp1
|
procbody Maple procedure created in a "neutralized form"
|
procmake Maple procedure creation
|
recipoly Reciprocal polynomial
|
rhs The right-hand-side of an equation, relation, or range
|
Roots Inert roots function, for use with mod and modp1
|
Sqrfree Inert square-free factorization function, for evala, mod, modp1
|
Svd Inert singular value decomposition function, for evalf
|
series Generalized series expansion (replaces taylor)
|
taylor Now computes a pure Taylor series, else returns an Error
|
unassign Unassign a sequence of names
|
convert/hypergeom Convert summations to hypergeometrics
|
convert/mod2 Reduce modulo 2
|
New functions in packages
|
-------------------------
|
(use "help(<packagename>,<funcname>);" for help)
|
grobner
|
finduni Find smallest univariate polynomial in an ideal
|
finite Determine if system has finitely many solutions
|
gsolve Reduced Groebner basis (for solving a system of polynomials)
|
solvable Determine if system is solvable
|
linalg
|
basis Basis of a vector space
|
charmat Characteristic matrix
|
charpoly Characteristic polynomial
|
col Pick off the j'th column of a matrix as a vector
|
copyinto Copy one matrix into another
|
eigenvects Eigenvectors of a matrix of rationals
|
equal Test for matrix equivalence
|
exponential Matrix exponential
|
extend Extend a matrix by n rows and m columns
|
fibonacci Fibonacci matrix
|
gaussjord Gauss-Jordan form (row echelon form) over a field
|
hermite Hermite normal form (row echelon form) for polynomials
|
htranspose Hermitian transpose
|
ihermite Hermite normal form (row echelon form) for integers
|
intbasis Basis for intersection of spaces
|
iszero Test for zero matrix
|
mdet removed -- use Det(..) mod p
|
minpoly Minimal polynomial
|
randmatrix Generate random matrix
|
row Pick off the i'th row of a matrix as a vector
|
sumbasis Basis for sum of spaces
|
swapcol Changed to run in place (destructive)
|
swaprow Changed to run in place (destructive)
|
numtheory
|
B Synonym for bernoulli
|
binomial Moved to combinat
|
E Synonym for euler
|
fermat Fermat primes
|
fibonacci Moved to combinat
|
issqrfree Test for square-free (formerly named isqrfree)
|
mersenne Mersenne primes
|
nthpow Greatest integer power which divides n
|
sigma Sum of the positive divisors of an integer
|
student
|
leftbox Graph of an approximation to an integral
|
leftsum Numerical approximation to an integral using rectangles
|
middlesum Numerical approximation to an integral using rectangles
|
rightbox Graph of an approximation to an integral
|
rightsum Numerical approximation to an integral using rectangles
|
showtangent Plot of a tangent to a function
|
simpson Numerical approximation to an integral using Simpson's rule
|
trapezoid Numerical approximation to an integral using trapezoids
|
value Evaluate inert forms (formerly named Eval)
|
New packages
|
------------
|
(use "help(<packagename>);" for information about a specific package)
|
combinat
|
A combinatorial functions package has been added. It is named "combinat"
|
and it includes the following functions:
|
bell Bell numbers B(n)
|
binomial Binomial coefficients C(n,k)
|
combine Construct the combinations of size m from n objects
|
combinations Count the combinations
|
fibonacci Fibonacci numbers F(k)
|
multinomial Multinomial coefficients (n; k1, k2, ..., km)
|
partition Construct the partitions of an integer
|
partitions Count the partitions
|
kpartition Construct the k-partitions of an integer
|
kpartitions Count the k-partitions
|
permute Construct the permutations of a list of objects
|
permutations Count the permutations
|
powerset Generate the power set for a set or multiset
|
randperm Generate random permutation of n objects
|
stirling1 Stirling numbers of the first kind
|
stirling2 Stirling numbers of the second kind
|
geometry
|
A package dealing with two-dimensional Euclidean geometry has been added.
|
The package is named "geometry" and the following functions are avail-
|
able:
|
Appolonius Eulercircle Eulerline Gergonnepoint
|
Nagelpoint Simsonline altitude are_collinear
|
are_concurrent are_harmonic are_orthogonal are_parallel
|
are_perpendicular are_similar are_tangent area
|
bisector center centroid circle
|
circumcircle conic convexhull coordinates
|
detailf diameter distance ellipse
|
excircle find_angle harmonic incircle
|
inter inversion is_equilateral is_right
|
line make_square median midpoint
|
on_circle on_line onsegment orthocenter
|
parallel perpen_bisector perpendicular point
|
polar_point pole_line powerpc projection
|
rad_axis rad_center radius reflect
|
rotate sides similitude square
|
symmetric tangent tangentpc triangle
|
projgeom
|
A package dealing with projective geometry has been added. This package,
|
named "projgeom", includes the following functions:
|
collinear concur conic conjugate ctangent
|
fpconic harmonic inter join lccutc
|
lccutr lccutr2p line linemeet midpoint
|
onsegment point polarp poleline ptangent
|