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?
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.