REDUCE

7.9 INT Operator

INT is an operator in REDUCE for indefinite integration using a combination of the Risch-Norman algorithm and pattern matching. It is used with the syntax:

INT(EXPRN:algebraic,VAR:kernel) : algebraic.

This will return correctly the indefinite integral for expressions comprising polynomials, log functions, exponential functions and tan and atan. The arbitrary constant is not represented. If the integral cannot be done in closed terms, it returns a formal integral for the answer in one of two ways:

  1. It returns the input, INT(…,…) unchanged.
  2. It returns an expression involving INTs of some other functions (sometimes more complicated than the original one, unfortunately).

Rational functions can be integrated when the denominator is factorizable by the program. In addition it will attempt to integrate expressions involving error functions, dilogarithms and other trigonometric expressions. In these cases it might not always succeed in finding the solution, even if one exists.

Examples:

        int(log(x),x) ->  X*(LOG(X) - 1),  
        int(e^x,x)    ->  E**X.

The program checks that the second argument is a variable and gives an error if it is not.

Note: If the int operator is called with 4 arguments, REDUCE will implicitly call the definite integration package (DEFINT) and this package will interpret the third and fourth arguments as the lower and upper limit of integration, respectively. For details, consult the documentation on the DEfiNT package.

7.9.1 Options

The switch TRINT when on will trace the operation of the algorithm. It produces a great deal of output in a somewhat illegible form, and is not of much interest to the general user. It is normally off.

The switch TRINTSUBST when on will trace the heuristic attempts to solve the integral by substitution. It is normally off.

If the switch FAILHARD is on the algorithm will terminate with an error if the integral cannot be done in closed terms, rather than return a formal integration form. FAILHARD is normally off.

The switch NOLNR suppresses the use of the linear properties of integration in cases when the integral cannot be found in closed terms. It is normally off.

The switch NOINTSUBST disables the heuristic attempts to solve the integral by substitution. It is normally off.

7.9.2 Advanced Use

If a function appears in the integrand that is not one of the functions EXP, ERF, TAN, ATAN, LOG, DILOG then the algorithm will make an attempt to integrate the argument if it can, differentiate it and reach a known function. However the answer cannot be guaranteed in this case. If a function is known to be algebraically independent of this set it can be flagged transcendental by

        flag(’(trilog),’transcendental);

in which case this function will be added to the permitted field descriptors for a genuine decision procedure. If this is done the user is responsible for the mathematical correctness of his actions.

The standard version does not deal with algebraic extensions. Thus integration of expressions involving square roots and other like things can lead to trouble. A contributed package that supports integration of functions involving square roots is available, however (ALGINT, chapter 16.1). In addition there is a definite integration package, DEFINT( chapter 16.18).

7.9.3 References

A. C. Norman & P. M. A. Moore, “Implementing the New Risch Algorithm”, Proc. 4th International Symposium on Advanced Comp. Methods in Theor. Phys., CNRS, Marseilles, 1977.

S. J. Harrington, “A New Symbolic Integration System in Reduce”, Comp. Journ. 22 (1979) 2.

A. C. Norman & J. H. Davenport, “Symbolic Integration — The Dust Settles?”, Proc. EUROSAM 79, Lecture Notes in Computer Science 72, Springer-Verlag, Berlin Heidelberg New York (1979) 398-407.