updates[v43]
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 theMaple "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 likelyplace where a syntax error has occurred and the line number at which itoccurred 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 Irisfacility with these advanced features is available for the Macintosh and willsoon 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 releasedfor X-Windows, SunView, and the Macintosh. Both 2-D and 3-D plotting exploitthe new `evalhf` function (see below) to achieve improved efficiency of pointgeneration.New prettyprinter----------------- The generic Iris facility available on all host systems now uses a newprettyprinter. 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 displayedone 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 beginwith the letter f. A facility to generate examples of Maple expressions isalso available.Macro and alias facilities-------------------------- A macro facility and an alias facility provide the user with a mechanismfor 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 thevalue 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 asequence 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 inZn[x], i.e. univariate polynomials over the integers modulo n. Modp1 greatlyenhances 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) andlarge 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 GFand evalgf).Hardware floating-point evaluation---------------------------------- A new function 'evalhf' is available. Like 'evalf' its purpose is toevaluate an expression in floating-point mode but the new function evaluatesusing 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 mustevaluate to numeric values (unlike evalf which allows mixed symbolic andnumeric data). Evalhf achieves much faster numeric evaluation than evalf whichuses a software floating-point facility.Numerical computation facilities-------------------------------- The numerical integration facility `evalf/int` exploits the new evalhffunction 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 knownto evalf and therefore the invocation evalf(Int(f,x)) can be used to applynumerical 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 thecomputation 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 Rischalgorithm, providing a fast heuristic method which deals with trigonometricfunctions in real form rather than in complex exponential form. New capabilities for definite integration have been added, particularlyfor infinite ranges when the integrand involves exponential, logarithmic, andtrigonometric functions.New simplification routines--------------------------- A facility for simplification with respect to side relations (rewriterules) 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 theexpression 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 -- seehelp(simplify) for the complete list of simplification procedures: BesselJ,BesselY Bessel functions BesselI,BesselK Modified Bessel functions Ei Exponential integral dilog Dilogarithm functionOther 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 ambiguitiesCombine function---------------- The new function "combine" provides another class of transformationswhich are a form of simplification. Its purpose is to combine terms ofspecific 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 extendedto include "structured types". A structured type is a Maple expression whichis interpreted as a composite type; for example, list(algebraic),name=integer..integer . Structured types allow for more concise and completeargument 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 whoseright-hand side is a range of algebraic's. See help(type,structured) fordetails. 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 expressionThe interface function---------------------- The interface function allows one to set or inquire about values relatingto the user interface. This provides a unique mechanism for communicationbetween the Iris interface and the Maple "algebra engine". The variablesrelating 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 interfaceMiscellaneous 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 rationalsNew functions-------------(use "help(f);" in a Maple session for information about f)alias Define an abbreviation or denotationallvalues Evaluate expressions involving RootOf's and return all valuesbernstein Bernstein polynomial approximating a functioncombine Combine terms into a single termcost Operation evaluation countDet Inert determinant function for use with mod and modp1Eigenvals Inert eigenvalues function, for use with evalfEval Inert evaluation function, for use with the mod operatorevalgf Finite field arithmetic (including polynomial factorization)evalhf Evaluate using hardware floating-point arithmeticexample Generate a random example for a specified functionExpand Inert expand function, for use with evala, evalgf, and modextrema Find relative extrema of given expressionFactors Inert factors function, for use with mod and modp1factors Generate a list of factors and multiplicitiesFunctions Maple function informationGF Galois field (finite field) arithmeticifactors Generate a list factors and multiplicities for an integerinterface Setting and inquiry of interface parametersIrreduc Inert irreducibility test function, for mod and modp1isqrfree Integer square-free factorizationlhs The left-hand-side of an equation, relation, or rangemacro Define a macro (input abbreviation)modp1 Efficient polynomial arithmetic over the integers mod nmodpol Expression evaluation in a quotient fieldnorm Compute the norm of a polynomialNormal Inert normal form function, for evala and evalgfoptimize Generate an optimized computation sequenceplot3d Generate a 3-dimensional surface plotplotsetup Parameter setting for plottingPower Inert power function, for use with mod and modp1Powmod Inert powering modulo a polynomial, for use with mod and modp1procbody Maple procedure created in a "neutralized form"procmake Maple procedure creationrecipoly Reciprocal polynomialrhs The right-hand-side of an equation, relation, or rangeRoots Inert roots function, for use with mod and modp1Sqrfree Inert square-free factorization function, for evala, mod, modp1Svd Inert singular value decomposition function, for evalfseries Generalized series expansion (replaces taylor)taylor Now computes a pure Taylor series, else returns an Errorunassign Unassign a sequence of namesconvert/hypergeom Convert summations to hypergeometricsconvert/mod2 Reduce modulo 2New 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 solvablelinalg 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 integerstudent 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 kindgeometry 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 triangleprojgeom 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