Symbolics - Maple Help

Online Help

All Products    Maple    MapleSim


Enhancements to Symbolic Capabilities in Maple 9.5

  

Maple 9.5 includes enhancements to its symbolic capabilities in the following areas.

  

Integration

  

Differential Equations

  

Summation

  

Simplification

  

The FunctionAdvisor command

  

Mathematical functions and their conversions

  

Differentiation knowledge for special functions

  

The combine command

  

The series command

  

The plotcompare command

  

Rational function decomposition

  

The singular command

 

Integration

Differential Equations (DEs)

Summation

The simplify Command

The FunctionAdvisor Command

Mathematical Functions

Network of Conversion Routines for Mathematical Functions

Differentiation Knowledge for Special Functions

The combine Command

The series Command

The plotcompare Command

Rational Function Decomposition

The singular command

Integration

  

The int command now uses differential equation routines for exact ODEs to compute integrals when the integrand contains unknown functions and is a total derivative with respect to those functions.

  

Example

Int((3*diff(u(x),x)*v(x)^2-diff(u(x),x)^3)*sin(u(x)) + (-6*v(x)*diff(v(x),x)+2*diff(u(x),x)*diff(u(x),x,x))*cos(u(x)) + 8*diff(v(x),x)*diff(v(x),x,x), x);

3ⅆⅆxuxvx2ⅆⅆxux3sinux+6vxⅆⅆxvx+2ⅆⅆxuxⅆ2ⅆx2uxcosux+8ⅆⅆxvxⅆ2ⅆx2vxⅆx

(1)

value((1));

ⅆⅆxux2cosux3vx2cosux+4ⅆⅆxvx2

(2)

Differential Equations (DEs)

  

The differential equation solving capabilities of the dsolve and pdsolve commands, for computing both exact and numeric solutions, have been enhanced with new algorithms (see Updates to Differential Equation Solvers). Also, seven new commands, some based on original algorithms, are available in DEtools and PDEtools for this release. For a description of these new commands, see Updates to Differential Equation Solvers: Packages.

Summation

  

The sum command has been greatly enhanced by rewriting it to use the SumTools[Summation] routine.

  

Examples

  

More closed forms by using accurate summation:

Sum(Psi(x)^2,x);

xΨx2

(3)

(3) = value((3));

xΨx2=4x416x321x24x2Ψx222x+1+2x3+9x2+13x+12Ψx+12+x+124x224x1Ψx+2222x+1

(4)
  

More partial results via additive decomposition:

Sum(5^x*(3*x-2)/x/(x+1), x);

x5x3x2xx+1

(5)

(5) = value((5));

x5x3x2xx+1=25xx+x55xx+1

(6)
  

Nicer results for some definite sums:

Sum(binomial(n,4*k),k=0..infinity);

k=0n4k

(7)

(7) = value((7));

k=0n4k=2n4+1+In4+1In4

(8)
  

The SumTools[IndefiniteSum] package also provides an extension mechanism that is used by sum. Using this facility, you can add a summation definition related to other special functions.

The simplify Command

  

The simplification of different types of expressions has been greatly enhanced in Maple 9.5.

  

Examples

Constant Expressions

  

The simplification of constant expressions has been enhanced in various ways.

-1/4*(2+2*2^(1/2))^(1/2)*(2*2^(1/2)-2)^(3/2) * (-1/3*(-3+3/(1+2^(1/2))*(2^(1/2)-1)) * (1+2^(1/2))/(2^(1/2)-1) - (1+1/(1+2^(1/2))*(2^(1/2)-1))^2 * (1+2^(1/2))^(3/2)/(2^(1/2)-1)^(3/2) * arctan(1/(1+2^(1/2))^(1/2)*(2^(1/2)- 1)^(1/2)));

2+22222323+3211+21+23211+211+221+232arctan211+221324

(9)

simplify((9), constant);

2+π

(10)

(sqrt(3)+3*I)*sqrt(1+I*sqrt(3));

3+3I1+I3

(11)

simplify((11), constant);

2I32

(12)

Powers

  

The simplification of powers is much faster, from one to two orders of magnitude faster for difficult examples. Also, more cases are now recognized.

(-1)^(argument(z)/Pi);

−1argzπ

(13)

simplify((13),power);

signum0,z,1

(14)

(-1)^a-(-1)^(-a)-2*I*sin(Pi*a);

−1a−1a2Isinπa

(15)

simplify((15),power);

0

(16)

Integrals, Sums, Products, and Limits

  

Enhancements in the simplification of int, sum, product, and limit and in their inert counterparts Int, Sum, Product, and Limit regarding the integration, summation, or product dummy variable and its range:

diff(s(t),t)*Int(f(x)*x^(s(t)-1)*ln(x),x = infinity..0) + int(f(x)*x^(s(t)-1)*diff(s(t),t)*ln(x),x = 0..infinity);

ⅆⅆtst0fxxst1lnxⅆx+0fxxst1ⅆⅆtstlnxⅆx

(17)

simplify( (17) );

0

(18)

Expressions Containing undefined

  

New routines for simplifying undefined expressions:

ee := Pi*undefined+undefined*I*Pi+x;

eeπundefined+undefinedIπ+x

(19)

simplify(ee);

undefinedundefinedI+x

(20)
  

To take all real and complex undefineds as a single, unique undefined, and then cause products and sums to return undefined if either operand is undefined, use the symbolic option.

simplify((20), symbolic);

undefined

(21)
  

The new routines are also sensitive to assumptions.

simplify(ee) assuming x::And(constant,real);

undefined+undefinedI

(22)

Simplification of Mathematical Functions

  

New simplifications regarding mathematical functions are available. Some previously existing simplifications were enhanced.

  

Examples

The abs Function

abs(x*y)^2 - abs(x)^2*abs(y)^2;

xy2x2y2

(23)

simplify((23), abs);

0

(24)

z = abs(z)*exp(I*argument(z));

z=zⅇIargz

(25)

simplify((25), abs);

z=z

(26)

The argument Function

  

New simplification routine for the argument function:

argument(z) + I*ln(z/abs(z));

argz+Ilnzz

(27)

simplify((27), argument);

0

(28)

The exponential Function

exp(argument(z)*I);

ⅇIargz

(29)

simplify( (29) );

signum0,z,1

(30)

The LambertW Function

  

Enhanced simplification of the LambertW function:

LambertW(-1, 7/6*I*Pi*(-1+3^(1/2)*I));

LambertW−1,7I6π1+I3

(31)

simplify((31));

7I3π

(32)
  

The new simplifications are sensitive to assumptions.

LambertW(n,2*Pi*I*(n+r)*exp(2*Pi*I*(m+r)));

LambertWn,2Iπn+rⅇ2Iπm+r

(33)

simplify((33)) assuming n::posint, m::integer, -3/4 < r, r <= 1/4;

2In+rπ

(34)

The logarithm Function

  

Enhancements in the simplification of logarithms and the argument function. Also, there is better manipulation in the presence of signum.

ln(signum(0,z,1));

lnsignum0&comma;z&comma;1

(35)

simplify( (35) );

Iargz

(36)
  

Better handling of the branches for compositions of the form ln@exp:

ln(exp(33/5*I));

ln&ExponentialE;33I5

(37)

simplify((37),ln);

33I52Iπ

(38)

The FunctionAdvisor Command

  

The FunctionAdvisor command provides supporting information on mathematical properties of mathematical functions, for example, on definitions, identities, integral forms, series expansions, and others. For Maple 9.5, the FunctionAdvisor command has been enhanced regarding the computation of non-trivial "specializations" of mathematical functions for particular values of their parameters. This permits answering questions like {"In terms of which functions could a given function, evaluated at some values of its parameters, be expressed?"}

  

Examples

  

In terms of which functions could Zeta(0, z, nu) be expressed?

FunctionAdvisor(specialize, Zeta(0, z, nu));

ζ0&comma;z&comma;ν=LerchPhi1&comma;z&comma;ν&comma;with no restrictions on z&comma;ν,ζ0&comma;z&comma;ν=−1zΨz1&comma;νz1!&comma;z::&apos;integer&apos;1<z,ζ0&comma;z&comma;ν=ζzharmonicν1&comma;z&comma;ν1::¬&apos;negint&apos;

(39)
  

Regarding the specialization into Psi, what is the specialization of Psi into Zeta if we ignore the restriction z::Typesetting:-_Hold&apos;integer&apos;1<z on the value of z?

FunctionAdvisor(specialize, Psi(z-1,nu), Zeta);

Ψz1&comma;ν=ζ1&comma;z&comma;ν+γ+Ψ1zζ0&comma;z&comma;νΓ1z&comma;with no restrictions on ν&comma;z

(40)
  

Non-trivial specializations for the hypergeometric function:

FunctionAdvisor(specialize, hypergeom([1, 1, 1 - n], [2, 2], 1) );

hypergeom1&comma;1&comma;n+1&comma;2&comma;2&comma;1=LerchPhi1&comma;2&comma;1&comma;n=0,hypergeom1&comma;1&comma;n+1&comma;2&comma;2&comma;1=MeijerG0&comma;0&comma;n&comma;&comma;0&comma;−1&comma;−1&comma;−1Γn+1&comma;with no restrictions on n,hypergeom1&comma;1&comma;n+1&comma;2&comma;2&comma;1=Ψn+1+γn&comma;with no restrictions on n,hypergeom1&comma;1&comma;n+1&comma;2&comma;2&comma;1=dilog0&comma;n=0

(41)
  

The enhanced routines are sensitive to assumptions. The specialization of BesselIa&comma;z in terms of the StruveL function assuming a+12 is a negative integer:

FunctionAdvisor(specialize, BesselI(a,z), StruveL) assuming (a+1/2)::negint;

BesselIa&comma;z=zaIStruveLa&comma;zzaIz2a_k1=012a−1_k1pochhammera+12&comma;_k1pochhammer12&comma;_k1I2za+1+2_k112a!πIza−1a12&comma;with no restrictions on a&comma;z

(42)
  

To compute all the specializations for BesselY12&comma;z that the FunctionAdvisor command can compute, enter FunctionAdvisorspecialize&comma;BesselY12&comma;z at the Maple prompt.

Mathematical Functions

  

The implementation of some mathematical functions has been improved to increase the knowledge about special values and relationships. More functions are sensitive to assumptions.

  

Examples

  

Elliptic functions:

EllipticNome( EllipticModulus(q) ) assuming abs(q) < 1;

q

(43)

EllipticModulus( EllipticNome(k) ) assuming Re(k) > 0;

k

(44)
  

binomial function:

binomial(a,k) assuming a::posint, k::negint;

0

(45)
  

The classic definition for the Psi(n,z) function as the nth derivative of Ψz, which requires that n be a positive integer, has been extended to arbitrary complex values of n in terms of the Hurwitz Zeta function and its first derivative.

FunctionAdvisor(analytic_extension, Psi(n,z));

Ψn&comma;z=ζ1&comma;n+1&comma;z+γ+Ψnζ0&comma;n+1&comma;zΓn

(46)

Network of Conversion Routines for Mathematical Functions

  

The network of conversions between mathematical functions was introduced in Maple 8. In Maple 9, the number of conversions was almost tripled. In Maple 9.5, more conversion routines and conversion rules were added.

  

Examples

  

For functions related to special cases of the hypergeom function:

polylog(2,z);

polylog2&comma;z

(47)

(47) = convert((47), hypergeom);

polylog2&comma;z=zhypergeom1&comma;1&comma;1&comma;2&comma;2&comma;z

(48)

convert((48),LerchPhi);

zLerchPhiz&comma;2&comma;1=zLerchPhiz&comma;2&comma;1

(49)

convert(lhs((49)),polylog) = convert(rhs((49)),hypergeom);    # convert the other way around

polylog2&comma;z=zhypergeom1&comma;1&comma;1&comma;2&comma;2&comma;z

(50)
  

For the argument function:

argument(z);

argz

(51)

(51)  =  convert((51),ln);

argz=−Ilnzz

(52)

(51) = convert((51),arctan);

argz=arctanz&comma;z

(53)
  

More Sum representations for special functions:

EllipticModulus(q);

EllipticModulusq

(54)

(54) = convert((54), Sum) assuming abs(q) < 1;

EllipticModulusq=_k1=02q12+_k122_k1=12q_k12+12

(55)
  

To reveal these sum representations without knowing in advance the required assumption on the function parameters, or the syntax of the function, use the FunctionAdvisor command.

FunctionAdvisor( sum, EllipticNome );

* Partial match of "sum" against topic "sum_form".

EllipticNomek=_k2=0_k1=0pochhammer12&comma;_k12k2+1_k1_k1!pochhammer1&comma;_k1π_k1=0pochhammer12&comma;_k12k2_k1_k1!pochhammer1&comma;_k1_k2_k2!&comma;k<1

(56)
  

New conversion rules for the hypergeometric 2F1 function

hypergeom([a,b],[c],z);

hypergeoma&comma;b&comma;c&comma;z

(57)

convert((57), hypergeom, "quadratic 1") assuming -1/2+a+b-c = 0;

hypergeom1+2a&comma;1+2b&comma;12+a+b&comma;12