Nächste: , Vorige: , Nach oben: abs_integrate   [Inhalt][Index]

31.1 Introduction to abs_integrate

The package abs_integrate extends Maxima’s integration code to some integrands that involve the absolute value, max, min, signum, or unit step functions. For integrands of the form \(p(x) |q(x)|\), where \(p\) is a polynomial and \(q\) is a polynomial that factor is able to factor into a product of linear or constant terms, the abs_integrate package determines an antiderivative that is continuous on the entire real line. Additionally, for an integrand that involves one or more parameters, the function conditional_integrate tries to determine an antiderivative that is valid for all parameter values.

Examples:

To use the abs_integrate package, you’ll first need to load it:

(%i1) load("abs_integrate.mac")$
(%i2) integrate(abs(x),x);
                            x abs(x)
(%o2)                       --------
                               2

To convert (%o2) into an expression involving the absolute value function, apply signum_to_abs; thus

(%i3) signum_to_abs(%);
                            x abs(x)
(%o3)                       --------
                               2

When the integrand has the form \(p(x) |x - c1| |x - c2| ... |x - cn|\), where \(p(x)\) is a polynomial and \(c1, c2, ..., cn\) are constants, the abs_integrate package returns an antiderivative that is valid on the entire real line; thus without making assumptions on \(a\) and \(b\); for example

(%i4) factor(convert_to_signum(integrate(abs((x-a)*(x-b)),x,a,b)));
                            3       2
                     (b - a)  signum (b - a)
(%o4)                -----------------------
                                6

Additionally, abs_integrate is able to find antiderivatives of some integrands involving max, min, signum, and unit_step, examples:

(%i5) integrate(max(x,x^2),x);
           3      2                                        3    2
        2 x  - 3 x    1                   1               x    x
(%o5) ((----------- + --) signum(x - 1) + --) signum(x) + -- + --
            12        12                  12              6    4
(%i6) integrate(signum(x) - signum(1-x),x);
(%o6)                  abs(x) + abs(x - 1)

A plot indicates that indeed (%o5) and (%o6) are continuous at zero and at one.

For definite integrals with numerical integration limits (including both minus and plus infinity), the abs_integrate package converts the integrand to signum form and then it tries to subdivide the integration region so that the integrand simplifies to a non-signum expression on each subinterval; for example

(%i1) load("abs_integrate")$
(%i2) integrate(1 / (1 + abs(x-5)),x,-5,6);
(%o2)                   log(11) + log(2)

Finally, abs_integrate is able to determine antiderivatives of some functions of the form \(F(x, |x - a|)\); examples

(%i3) integrate(1/(1 + abs(x)),x);
      signum(x) (log(x + 1) + log(1 - x))
(%o3) -----------------------------------
                       2
                                          log(x + 1) - log(1 - x)
                                        + -----------------------
                                                     2
(%i4) integrate(cos(x + abs(x)),x);
         (signum(x) + 1) sin(2 x) - 2 x signum(x) + 2 x
(%o4)    ----------------------------------------------
                               4

Barton Willis (Professor of Mathematics, University of Nebraska at Kearney) wrote the abs_integrate package and its English language user documentation. This documentation also describes the partition package for integration. Richard Fateman wrote partition. Additional documentation for partition is located at
http://www.cs.berkeley.edu/~fateman/papers/partition.pdf


Nächste: , Vorige: , Nach oben: abs_integrate   [Inhalt][Index]

JavaScript license information