Search code examples
maximaintegralcalculus

How to integrate characteristic functions


The following integral does is not evaluated by Maxima:

integrate(charfun(x<1/2), x, 0, 1);

Is there a different trick to make it work, or is it simply un-implemented?


Solution

  • The share package abs_integrate can integrate some expressions containing signum, abs, and unit_step. In this case you can write charfun(x < 1/2) in terms of signum(1/2 - x) and then abs_integrate can handle it.

    You'll need to load abs_integrate. Note that abs_integrate modifies the behavior of integrate; there isn't a separate abs_integrate function to call.

    (%i2) load (abs_integrate) $
    (%i3) integrate (signum (1/2 - x), x, 0, 1);
    (%o3)                           0
    (%i4) integrate (signum (1/2 - x), x, -1, 1);
    (%o4)                           1
    (%i5) foo (e) := (1 + signum(e))/2;
                                   1 + signum(e)
    (%o5)                foo(e) := -------------
                                         2
    (%i6) integrate (foo (1/2 - x), x, 0, 1);
                                    1
    (%o6)                           -
                                    2
    (%i7) integrate (foo (1/2 - x), x, -1, 1);
                                    3
    (%o7)                           -
                                    2
    

    Note that foo corresponds to charfun here.