home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: sci.math.symbolic
- Path: sparky!uunet!charon.amdahl.com!pacbell.com!sgiblab!spool.mu.edu!yale.edu!ira.uka.de!chx400!bernina!neptune!monagan
- From: monagan@inf.ethz.ch (Michael)
- Subject: Maple V Release 2
- Message-ID: <1992Nov17.175606.20110@neptune.inf.ethz.ch>
- Keywords: Maple
- Sender: news@neptune.inf.ethz.ch (Mr News)
- Nntp-Posting-Host: rutishauser-gw.inf.ethz.ch
- Organization: Dept. Informatik, Swiss Federal Institute of Technology (ETH), Zurich, CH
- Date: Tue, 17 Nov 1992 17:56:06 GMT
- Lines: 755
-
- Here is a summary of the new facilities in Release 2.
- I'm sending this in two parts because it's large.
- I've put a LaTeX version in the file maple/5.2/tex/summary.tex
- in the Maple share library if you want a better copy.
- You can get the files using anonymous ftp from
- daisy.uwaterloo.ca or neptune.inf.ethz.ch
-
- Michael Monagan
-
-
-
- New features that have been added for Maple V Release 2
- -------------------------------------------------------
-
- Development of Improved User Interfaces
- =======================================
-
- New user interfaces for Maple which include as a minimum 3-dimensional graphics,
- and some command line editing facility have been designed since the release of
- Maple V for the X Window system, Sunview, Macintosh, Amiga DOS, Vax VMS, NeXT,
- and the PC under Windows and MS/DOS. The new user interfaces for Release 2
- will include worksheets, output real mathematical formulae, and a help browser.
-
- 1: Maple worksheets
- -------------------
- Beginning with the Macintosh user interface for Maple V, the new user
- interfaces will all support the concept of a "worksheet" which integrates text,
- Maple input commands, Maple output, and graphics into one document. Worksheets
- have been standardized and are being ported to other platforms for Release 2.
- They provide editable input and text fields, simple commands for re-executing
- parts of worksheets etc. A collection of examples of applications of Maple
- will be now be distributed in the form of worksheets. A new save facility is
- being added that will also save the state of a worksheet as well as the display.
-
- 2: Two-dimensional output
- -------------------------
- Beginning with Release 2 of the X Window interface, new interfaces will
- display output using mathematical, Greek, and italics fonts, with proper
- subscripts and superscripts for improved display of mathematical formulae.
-
- 3: Help topic browser
- ---------------------
- Beginning with Sunview user interface in Maple V, new user interfaces will
- include a help browser for accessing the on-line help information.
-
- 4: Unix Maple interface
- -----------------------
- Now supports command line editing using a vi and emacs like editor.
- Hitting the interrupt key Ctrl-C twice will no longer kill a Maple session, it
- will only interrupt the current calculation. The quit key Ctrl-\ can be used
- to immediately kill the Maple session. Also, running a Maple session in a
- shell under the X Window system, interface(plotdevice=x11); will allow you to
- access the X plotting facilities.
-
- 5: X Window interface
- ---------------------
- The interface has been redesigned to follow Motif style conventions. The help
- index is accessible from a menu. The user input fields and the Maple output
- fields are completely separated. Hardcopy output (PostScript) is available for
- worksheets including output of mathematical formulae. Input, text and output
- fonts can be set interactively.
-
- 6: Improved error messages
- --------------------------
- The new type checking facility results in better error messages, e.g.
-
- > f := proc(n:integer) if n < 0 then 0 else n fi end:
- > f(x);
- Error, f expects its 1st argument, n, to be of type integer, but received x
-
- Not all Maple functions have been updated yet to make use of this new facility.
- This should be completed by the next version of Maple.
-
- 6: On-line tutorial
- -------------------
-
- An on-line introductory tutorial has been added for Release 2. For more
- information see ?tutorial . Note you can write your own tutorial using the
- readline, parse and printf commands.
-
-
-
- Graphics
- ========
-
- The Maple plotting facility consists of two parts, the rendering of the picture
- which is written in C, and the point generation which is done in Maple. The
- basic 2 dimensional plotting command is plot(f(x),x=a..b);. It creates a
- PLOT data structure which contains the points, which then is displayed by
- the user interface. The 3 dimensional plotting command is
- plot3d(f(x,y),x=a..b,y=c..d);. It creates a PLOT3D data structure.
- Thus the PLOT and PLOT3D data structures define the what can be displayed.
- Details on these data structures can be obtained from ?plot3d,structure
-
- 1: Improvements to rendering and the PLOT and PLOT3D data structures
- --------------------------------------------------------------------
- - better (more robust but slower) hidden line removal algorithm
- - the PLOT3D data structure supports text and polygon primitives
- - PLOT and PLOT3D include support for 2 and 3 D frame sequence animation
- - the PLOT3D data structure supports a contour plot style option,
- which is also accessible interactively from the style menu
- - The plotting primitives in the PLOT and PLOT3D data structures have
- been made more flexible e.g. each object can have its style and
- colour assigned individually.
- - a wider choice of colours, with more user control of surface colouring
- (PLOT3D).
- - addition of Lighting models
- - We have also made the PLOT and PLOT3D data structures compatible.
-
- 2: Device support
- -----------------
- - encapsulated postscript, colour postscript and grayscale shading postscript
- output are now supported
- - addition of HP Laserjet output
- - a wider selection of output devices for PLOT3D are supported in particular
- any device that is supported in 2 dimensions including tektronics, i300
- imagen laser printer, Unix plot, DEC ln03 laser printer etc.
-
- 3: New plotting facilities and improvements (plots package)
- -----------------------------------------------------------
- This is a list of the new plotting tools. All are written in Maple, making
- use of the PLOT and PLOT3D data structures. For details see the section
- on the plots package in the section on the Library Packages.
- - 2d and 3d animation
- - 2d and 3d implicit plotting
- - 2d and 3d vectorfield and gradient plots
- - Density plots
- - Plotting of dsolve(...,numeric) procedures in odeplot
- - Plotting of polygons and polyhedra
- - Log and log-log plots
- - Phase portraits and direction field plots, plotting of 1-st order and
- 2-nd order differential equations (in DEtools package)
- - Ability to specify color function for objects in plot3d, tubeplot,
- vectorfield and gradient plots, etc.
-
-
- New and Enhanced Mathematical Facilities
- ========================================
-
- 1: New mathematical functions known to Maple
- --------------------------------------------
- - The floor and ceiling functions floor(x) and ceil(x)
- - The Elliptic integrals where 0<k<1 and c = sqrt(1-k^2)
- LegendreE(x,k) = int( (1-k^2*t^2)/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..x )
- LegendreEc(k) = int( (1-k^2*t^2)/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..1 )
- LegendreEc1(k) = int( (1-k^2*t^2)/sqrt(1-t^2)/sqrt(1-c^2*t^2), t=0..1 )
- LegendreF(x,k) = int( 1/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..x )
- LegendreKc(k) = int( 1/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..1 )
- LegendreKc1(k) = int( 1/sqrt(1-t^2)/sqrt(1-c^2*t^2), t=0..1 )
- LegendrePi(x,k,a) = int( 1/(1-a*t^2)/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..x )
- LegendrePic(k,a) = int( 1/(1-a*t^2)/sqrt(1-t^2)/sqrt(1-k^2*t^2), t=0..1 )
- LegendrePic1(k,a) = int( 1/(1-a*t^2)/sqrt(1-t^2)/sqrt(1-c^2*t^2), t=0..1 )
- - Routines for complex numbers Re(z), Im(z), argument(z), conjugate(z), csgn(z)
- - Routines for computing the magnitude of a number ilog[b](x), ilog10(x)
- - Utility routine polar(z) to allow computing with complex numbers in polar
- form i.e. polar(a,b) = a \cos (b) + i a \sin (b)
- - The logarithmic integral Li(x) = Ei(ln(x)) for x > 1
- - The exponential integrals Ei(n,x) = int(exp(t)/t^n,t=1..infinity) for Re(x)>0
- extended by analytic continuation to the complex plane except for 0
- when n=1. Note Ei(x) is the Cauchy principle value.
- - Ssi(x) the shifted sine integral
- - W(n,x), the W function satisfying exp(W(x))*W(x) = x where n, any integer,
- specifies a branch cut. Note W(x) is the principle branch
- - erfc(n,x) = int(erfc(n-1,t),t=x..infinity), for n=1,2,... where
- erfc(0,x) = erfc(x). Note erfc(n,z) corresponds to "i^n erfc z" notation
- in Abramowitz & Stegun
- - The derivatives of signum, csgn, trunc, frac, round, floor, ceil implemented
- as signum(1,x), csgn(1,x) etc.
-
- 2: Enhanced numerical facilities
- --------------------------------
- - automatic complex numerical arithmetic, i.e. +, -, *, /, ^
- - extend evalf to the complex domain for all elementary functions and erf(z),
- erfc(z), erfc(n,z), GAMMA(z), GAMMA(a,z) (incomplete Gamma function),
- Beta(u,v), Psi(z), Psi(n,z), W(z), W(n,z) (all branches), Ei(z),
- Ci(z), Si(z), Chi(z), Shi(z), Ssi(z)
- - Dawson's integral dawson(x) = exp(-x^2) * int(exp(t^2),t=0..x)
- - Elliptic integrals, LegendreE(x,k), LegendreEc(k), LegendreEc1(k),
- LegendreF(x,k), LegendreKc(k), LegendreKc1(k), LegendrePi(x,k,a),
- LegendrePic(k,a), LegendrePic1(k,a)
- - Li(x) = Ei(ln(x) the logarithmic integral defined only for real x>1
- - fsolve has a new algorithm for solving a univariate polynomial over R or C
- which should always succeed and, all digits should be accurate to 0.6 ulps.
- - Addition of the Remez algorithm for minimax rational function approximation
- - Addition of an adaptive double exponential algorithm for numerical integration
- - Addition of Levin's u transform for the numerical evaluation of infinite
- sums, products and limits
- - The routines gauselim, gaussjord, rowspace, colspace, eigenvals, eigenvects,
- inverse, det, in the linalg package now all handle matrices of
- floating point and complex floating point entries
-
- 3: Algebraic numbers and algebraic functions
- --------------------------------------------
- The evala facility in Maple V supports polynomial operations over algebraic
- number fields. This facility is used in indefinite integration, eigenvectors,
- and solving polynomial equations. E.g. Maple can factor the polynomial
-
- 3 1/2 2 1/2 1/2
- x + (- 28 + 16 2 ) x + (- 288 2 + 384) x - 1792 + 1280 2
-
- over the algebraic number field Q(sqrt(2)) as follows
-
- > a := x^3+(-28+16*sqrt(2))*x^2+(-288*sqrt(2)+384)*x-1792+1280*sqrt(2):
- > factor(a,sqrt(2));
- 1/2 1/2
- (x - 8) (x - 8 + 8 2 ) (x - 12 + 8 2 )
-
- Because Maple can do this factorization, it means Maple can compute the
- eigenvalues (also the eigenvectors -- see below) of the following matrix, e.g.
-
- > A := matrix( [[5-5*sqrt(2), -2+4*sqrt(2), 5+sqrt(2)],
- > [-5+sqrt(2), 10-4*sqrt(2), 3+3*sqrt(2)],
- > [-3+3*sqrt(2), -2+4*sqrt(2), 13-7*sqrt(2)]] ):
- > eigenvals(A);
-
- 1/2 1/2
- 8, 12 - 8 2 , 8 - 8 2
-
- The generalization of the evala facility to algebraic functions in Release 2
- means that we can replace the sqrt in the above problem by a sqrt of a formula
- and not just an integer, e.g. sqrt(a). Examples in the following sections
- illustrate other new capabilities in Maple which use the evala facility for
- integration, polynomial factorization, and symbolic eigenvector calculation.
- See also the sections on computing with field extensions describing the
- functions Norm, Trace, Indep, and Primfield.
-
- 4: Polynomial factorization over algebraic number and function fields
- ---------------------------------------------------------------------
- Maple V can factor multivariate polynomials over the rational numbers Q and
- univariate polynomials over algebraic number fields Q(alpha) as in the above
- example. Release 2 can factor multivariate polynomials over algebraic number
- fields. For example let's factor the polynomial x^6+y^6 over the rationals
- then over Q(i) the complex rationals.
-
- > factor(x^6+y^6);
- 2 2 4 2 2 4
- (x + y ) (x - x y + y )
-
- > factor(x^6+y^6,I);
-
- 2 2 2 2
- (x - I x y - y ) (x + I x y - y ) (x - I y) (x + I y)
-
- Release 2 can also factor multivariate polynomials over algebraic
- function fields e.g. let's factor the following polynomial over Q(sqrt(a)).
-
- > f := x^3 + (16*a^(1/2)-28)*x^2 + (64*a-288*a^(1/2)+256)*x
- > -512*a+1280*a^(1/2)-768:
- > factor(f,sqrt(a));
-
- 1/2 1/2
- (x - 12 + 8 a ) (x + 8 a - 8) (x - 8)
-
- Two new factorization routines split and AFactor have been added to the
- library. split(a,x) factors a univariate polynomial in x into linear factors
- over its splitting field. evala(AFactor(a)) does a complete factorization
- of a multivariate polynomial, i.e. over the algebraic closure of Q, e.g.
-
- > evala(AFactor(x^2-2*y^2));
-
- 2 2
- (x - RootOf(_Z - 2) y) (x + RootOf(_Z - 2) y)
-
- The RootOf value that you see in the output above is Maples notation for
- the algebraic numbers which are the solutions to the polynomial equation
- _Z^2 - 2 = 0. In this case, the solutions are +- sqrt(2), i.e. they can
- be written in terms of exact radicals.
-
- 5: Symbolic eigenvalue and eigenvector computation.
- ---------------------------------------------------
- The eigenvector routine linalg[eigenvects] returns the eigenvectors of a matrix
- represented exactly in terms of the roots of the characteristic polynomial.
- For example, for our matrix A used previously, we obtain the eigenvectors
-
- > A := matrix( [[5-5*sqrt(2), -2+4*sqrt(2), 5+sqrt(2)],
- > [-5+sqrt(2), 10-4*sqrt(2), 3+3*sqrt(2)],
- > [-3+3*sqrt(2), -2+4*sqrt(2), 13-7*sqrt(2)]] ):
- > eigenvects(A);
-
- 1/2 1/2 1/2
- [8 - 8 2 , 1, {[ -1, - 2 , 1 ]}], [12 - 8 2 , 1, {[ 1, -1, 1 ]}],
-
- [8, 1, {[ 1, 1, 1 ]}]
-
- The output is a sequence of lists [e,m,b] where e is the eigenvalue, m
- its multiplicity, and b a basis for the eigenspace for e. In Maple V, the
- eigenvects command could handle algebraic numbers, including rational numbers.
- Now it can handle algebraic functions, hence matrices of polynomials, e.g.
-
- > A := matrix(4,4,[[a,a,a,0], [b,b,0,c], [b,0,c,c], [0,a,a,a]]);
- [ a a a 0 ]
- [ ]
- [ b b 0 c ]
- A := [ ]
- [ b 0 c c ]
- [ ]
- [ 0 a a a ]
-
- > factor(charpoly(A,x));
-
- 3 2 2 2 2 2
- (x - a) (x - x a - c x - b x + b c x - c a x - b x a + c a + b a + a b c)
-
- > alias(alpha=RootOf(op(2,"),x)): # Denote the roots of the cubic by alpha
- > eigenvects(A);
-
- [a, 1, {[ - c/b, 0, 0, 1 ]}],
-
- 2
- 2 b a - alpha + alpha c + alpha a + c a
- [alpha, 1, {[ 1, - ----------------------------------------,
- a (b - c)
-
- 2
- b a + alpha b - alpha + alpha a + 2 c a
- ----------------------------------------, 1 ]}]
- a (b - c)
-
- Note: the optional argument 'radical' to the eigenvects command asks Maple
- to express roots of polynomials as exact radicals where possible instead of in
- terms of the RootOf representation.
-
- 6: ODEs with Bessel and hypergeometric function solutions
- ---------------------------------------------------------
- Many more cases are handled with a better algorithm, which gives results
- in terms of Bessel functions rather than hypergeometric functions, e.g.
-
- > (1-x)*x*diff(y(x),x,x) + (1/3- 23/2*x)*diff(y(x),x) -5*y(x);
-
- / 2 \
- | d | / d \
- (1 - x) x |----- y(x)| + (1/3 - 23/2 x) |---- y(x)| - 5 y(x)
- | 2 | \ dx /
- \ dx /
-
- > dsolve(",y(x));
-
- y(x) = _C1 hypergeom([1/2, 10], [1/3], x)
-
- 2/3
- + _C2 x hypergeom([7/6, 32/3], [5/3], x)
-
- 7: Symbolic Fourier transform
- -----------------------------
- The call fourier(f(s),s,w) computes the fourier transform
-
- infinity
- /
- | - I t w
- F(w) = | f(t) e dt
- |
- /
- - infinity
-
- For example,
-
- > fourier(s,s,w);
- 2 I Pi Dirac(1, w)
-
- > fourier(1/(4 - I*t)^(1/3),t,w);
-
- 1/2
- 3 GAMMA(2/3) exp(- 4 w) Heaviside(w)
- ---------------------------------------
- 2/3
- w
-
- 8: New limit algorithm
- ----------------------
- The idea behind the new algorithm is the following. First locate the most
- varying part of the expression. Treat this indeterminate as a symbol and
- compute a series expansion in this symbol alone. If there is no constant
- coefficient in the resulting series, you are done, otherwise, recurse on
- that constant coefficient. Here are some examples
-
- > f := exp(exp(exp(Psi(Psi(Psi(n))))))/n;
-
- exp(exp(exp(Psi(Psi(Psi(n))))))
- f := -------------------------------
- n
-
- > limit(f,n=infinity);
- 0
-
- > f := n*(GAMMA(n-1/GAMMA(n))-GAMMA(n)+ln(n));
-
- / 1 \
- f := n |GAMMA(n - --------) - GAMMA(n) + ln(n)|
- \ GAMMA(n) /
-
- > limit( f, n=infinity );
- 1/2
-
- 9: Symbolic simplifications for min, max, trunc, round, ceil, floor, Re, Im
- ---------------------------------------------------------------------------
- These routines now do quite a number of symbolic simplifications.
- Note, interval arithmetic is used by the signum function in these examples
- to prove that the constant Pi < sqrt(10) and that cos(2) < 0.
-
- > min( min(Pi,sqrt(10)), min(a+1,a-1), a );
-
- min(Pi, a - 1)
-
- > Re( ln(Pi-sqrt(10)) + sqrt(cos(2)) );
-
- 1/2
- ln(- Pi + 10 )
-
- 10: Norms and traces in algebraic number and function fields
- ------------------------------------------------------------
- Norm(alpha,L,K) and Trace(alpha,L,K) compute the norm (trace) of an algebraic
- number or function in L over field K. I.e. the input is over the field L and
- the output is over the field K a subfield of L. The fields L and K are
- specified by sets of RootOf's which define the field extensions. For example
-
- > alias( s2 = RootOf(x^2-2=0), s3 = RootOf(x^2-3=0) ):
- > L := {s2,s3}: # so L = Q(sqrt(2),sqrt(3)) and
- > K := {s2}; # K = Q(sqrt(2))
- > evala(Trace(x-s2-s3,L,K));
- 2 x - 2 s2
-
- > evala(Norm(x-s2-s3,L,K));
- 2
- x - 2 s2 x - 1
-
- > evala(Norm(x-s2-s3)); # K = Q
-
- 4 2
- x - 10 x + 1
-
- 11: Computing with field extensions: Indep, Primfield
- -----------------------------------------------------
- These are tools for computing with nested field extensions. Indep(L) searches
- for relations between between the set of field extensions (RootOfs) L.
- Primfield(L,K) computes a primitive element alpha for a set of field
- extensions L over the subfield K of L, e.g.
-
- > evala(Primfield({s2,s3}));
- 3 3
- [ [%1 = s3 + s2], [s3 = 11/2 %1 - 1/2 %1 , s2 = - 9/2 %1 + 1/2 %1 ]]
-
- 4 2
- %1 := RootOf(_Z - 10 _Z + 1)
-
- The result is a list of two elements. The first element defines the primitive
- element alpha as a RootOf the minimal polynomial over K. We see that the
- minimal polynomial in this example is x^4-10*x^2+1. It equates alpha in terms
- of L, i.e. here alpha = sqrt(3)+sqrt(2). The second entry expresses the field
- extensions of K in terms of alpha. Here sqrt(2) = alpha^3/2-9*alpha/2, and
- sqrt(3) = 11/2*alpha-alpha^3/2.
-
- 12: Continued fractions
- -----------------------
- The cfrac routine in the numtheory package now computes continued fraction
- expansions for real numbers, polynomials, series, and formulae. Several forms
- are available including simple, regular, simregular, etc. The utility routines
- nthconver, nthnumer, nthdenom return the nth convergent, numerator, denominator
- e.g. here is the continued fraction for Pi, and the first few convergents
-
- > with(numtheory):
- > cf := cfrac(Pi,5);
-
- 1
- cf := 3 + --------------------------
- 1
- 7 + ----------------------
- 1
- 15 + -----------------
- 1
- 1 + -------------
- 1
- 292 + -------
- 1 + ...
-
- > seq( nthconver(cf,i), i=0..5 );
-
- 333 355 103993 104348
- 3, 22/7, ---, ---, ------, ------
- 106 113 33102 33215
-
- > cf := cfrac(exp(x),x,4,simregular);
- x
- cf := 1 + -------------------------------
- x
- 1 - 1/2 -----------------------
- x
- 1 + 1/6 ---------------
- x
- 1 - 1/6 -------
- 1 + ...
- > seq(nthconver(cf,i),i=0..3);
-
- 2
- 1 + 1/2 x 1 + 2/3 x + 1/6 x
- 1, 1 + x, ---------, ------------------
- 1 - 1/2 x 1 - 1/3 x
-
- 13: Diophantine approximation
- -----------------------------
- The functions minkowski and kronecker in the number theory package solve
- the linear diophantine approximation problem, namely, given real or p-adic
- numbers a[i][j] and epsilon[i], and m equations of the form
-
- || sum( a[i][j]*x[j], j=1..m ) || <= epsilon[i], for i=1..m
-
- where || z || means, in the real case, the distance between z and the nearest
- integer z, for p-adic case || z || means p-adic valuation (see function valuep
- in padic package), solve for integers x[j]. I.e. find integers x[j] and y[i]
- such that abs( sum(a[i][j]*x[j],j=1..n) - y[i] ) <= epsilon[i] for i=1..m
- (in the real case). This homogeneous case is solved by the minkowski function
- where the equations are input in the form
-
- abs( sum( a[i][j]*x[j], j=1..m ) - y[i] ) <= epsilon[i], for i=1..m
-
- For example
-
- > eqn1 := abs( E*x1 + 2^(1/2)*x2 - y1 ) <= 10^(-2):
- > eqn2 := abs( 3^(1/3)*x1 + Pi*x2 - y2 ) <= 10^(-4):
- > minkowski( {eqn1,eqn2}, {x1,x2}, {y1,y2} );
-
- [x1 = 7484], [x2 = -2534], [y1 = 16760], [y2 = 2833]
-
- The non-homogeneous case (more difficult) i.e. for real or p-adic alpha[i],
- equations of the form
-
-
- || sum( a[i][j]*x[j], j=1..n ) + alpha[i] || <= epsilon[i], for i=1..m
-
- are solved by the kronecker function.
-
-
- New and Enhanced Integration Facilities
- =======================================
-
- 1: Dirac and Heaviside
- ----------------------
- Integration now knows about the Heaviside and Dirac functions, e.g.
-
- > int(f(x)*Dirac(x),x=-infinity..infinity);
-
- f(0)
-
- > int(f(x)*Heaviside(x),x=-3..4);
-
- 4
- /
- |
- | f(x) dx
- |
- /
- 0
-
- 2: Elliptic integrals
- ---------------------
- Integration now recognizes Elliptic integrals and reduces them to a normal
- form in terms of Legendre functions
-
- > f := sqrt( (1-x^2) * (1/25 + x^2/4) );
-
- 2 1/2 2 1/2
- f := 1/10 (1 - x ) (4 + 25 x )
-
- > int(1/f,x=1/2..1);
-
- 10 1/2 1/2 1/2
- ---- 29 LegendreF(1/2 3 , 5/29 29 )
- 29
-
- > evalf(");
-
- 2.327355206
-
- 3: Algebraic functions
- ----------------------
- Integration of algebraic functions is now using the Risch-Trager algorithm.
- This includes a full implementation of the algebraic part including integrands
- which involve parameters and algebraic numbers, e.g.
-
- > alias(alpha=RootOf(y^3-x^2-a,y); # i.e. alpha = (x^2+a)^(1/3)
- > f := (4*alpha^2*x^3+(5*x^4+3*x^2*a)*alpha-3*x^2-3*a)/(x^2+a)/x^2;
-
- 2 3 4 2 2
- 4 alpha x + (5 x + 3 x a) alpha - 3 x - 3 a
- f := ------------------------------------------------
- 2 2
- (x + a) x
-
- > int(f,x);
- x - 1 2
- - 3 ----- + 3 x alpha + 3 alpha
- x
-
- and an implementation of the transcendental part for algebraic functions
- which do not contain parameters, e.g.
-
- > alias(alpha=RootOf(y^2-x^3-1,y)); # i.e. beta = sqrt(x^3+1)
- > f := (3*x^4-6*x^3+5*x^2-2*x+2)/(x^5-2*x^4-x+2*x^3+1)*beta
- > +(3*x^4+5*x^2-5*x^3-2*x)/(x^5-2*x^4-x+2*x^3+1);
-
- 4 3 2 4 2 3
- (3 x - 6 x + 5 x - 2 x + 2) beta 3 x + 5 x - 5 x - 2 x
- f := ----------------------------------- + ------------------------
- 5 4 3 5 4 3
- x - 2 x - x + 2 x + 1 x - 2 x - x + 2 x + 1
-
- > int(f,x);
- 2 3
- x + x + 1 - 2 x beta
- 2 beta - ln(----------------------)
- 3 2 2
- (x - x + 1)
-
- 4: Integration of the W function
- --------------------------------
- Indefinite integration now uses an inverse function transformation to
- transform integrals involving the W function (where note W(x) is the function
- defined to satisfy exp(W(x))*W(x)=x) of linear arguments to elementary
- defined to satisfy e^{W}(x)} W}(x) = x ) of linear arguments to elementary
- functions, hence the following integrals are computed
-
- > int(x/W(x),x);
- 2 2
- x x
- 1/2 ---- + 1/4 -----
- W(x) 2
- W(x)
- > int(1/W(x),x);
- x
- ---- - Ei(1, - W(x))
- W(x)
-
- 5: The exponential integral, error function, and related integrals
- ------------------------------------------------------------------
- Indefinite integration of the forms g(x)*sin(f(x)) and g(x)*cos(f(x)) where
- g(x) is a rational function in x and f(x) is a quadratic polynomial in x are
- expressed in terms of the Fresnel integrals FresnelC(x) and FresnelS(x),
- and the cosine and sine integrals Ci(x) and Si(x). Note, Maple V can do
- these examples, but the answer involves complex error functions and
- Exponential integrals of complex arguments
-
- > int( 5*x^4*sin(2*x^2+1), x );
-
- 3 2 15 2
- - 5/4 x cos(2 x + 1) + ---- x sin(2 x + 1)
- 16
-
- 15 1/2 / x x \
- - ---- Pi |cos(1) FresnelS(2 -----) + sin(1) FresnelC(2 -----)|
- 32 | 1/2 1/2 |
- \ Pi Pi /
-
- > int( sin(u*x^2-v)/x, x );
-
- 2 2
- 1/2 cos(v) Si(u x ) - 1/2 sin(v) Ci(u x )
-
- 6: New classes of definite integrals
- ------------------------------------
- Several new classes of infinite indefinite integrals are now handled.
- These are computed by evaluating derivatives of special functions
- and exploiting symmetry. For example, for p>0 and q>0, the class
-
- infinity
- /
- | (a - 1) s q
- | x exp(- p x - ----) dx
- | s
- / x
- 0
-
- in general can be expressed in terms of the Bessel K function e.g.
-
- > assume(p>0);
- > assume(q>0);
- > int( x^2*exp(-p*x^3-q/x^3), x=0..infinity );
-
- 1/2 1/2 1/2
- q~ BesselK(1, 2 p~ q~ )
- 2/3 -------------------------------
- 1/2
- p~
-
- Note, the appearance of p~ and q~ in this answer indicates that assumptions
- about p and q have been made.
- Also, several classes involving Bessel functions e.g. for u>0,v>0, the class
-
- infinity
- /
- | s w s/2
- | exp(- u t ) t BesselJ(v , c t ) dt
- |
- /
- 0
-
- in general results in 1 F 1, the confluent hypergeomic function, e.g.
-
- > int( exp(-t)*t^2*BesselJ(1,sqrt(t)), t=0..infinity );
-
- 15 1/2
- ---- Pi hypergeom([7/2], [2], -1/4)
- 16
-
- Also classes involving the error functions, e.g. for u>0
-
- > assume(u>0);
- > Int( exp(-u*x^2)*erf(b*x), x=0..infinity ) =
- > int( exp(-u*x^2)*erf(b*x), x=0..infinity );
-
- b
- infinity arctan(-----)
- / 1/2
- | 2 u~
- | exp(- u~ x ) erf(b x) dx = -------------
- | 1/2 1/2
- / Pi u~
- 0
-
- 7: Handling singularities in an indefinite integral
- ---------------------------------------------------
- Definite integration now uses a new algorithm to resolve integrals which have
- discontinuities (removable or non-removable) in the result from indefinite
- integration. For example,
-
- > int( 1/(5+3*cos(x)), x=0..13*Pi/2 );
-
- 1/2 arctan(1/2) + 3/2 Pi
-
- This result was obtained by first computing the indefinite integral
-
- > int( 1/(5+3*cos(x)), x );
-
- 1/2 arctan(1/2 tan(1/2 x))
-
- then by taking limits given the following information about the discontinuities
-
- > readlib(discont)(",x);
- {2 Pi _Z1 + Pi}
-
- A second example showing that Maple can prove that this integral diverges,
- instead of returning unevaluated -- meaning I don't know.
-
- > int(1/x^2,x=-1..1);
- infinity
-
- Also, the addition of the CauchyPrincipalValue option to int handles
-
- > int( 1/x, x=-1..1, CauchyPrincipalValue);
-
- 0
-
- > int( exp(-t)/t, t=-2..infinity, CauchyPrincipalValue );
-
- - Ei(2)
-
-
-