On Sat, 21 Jan 2023 at 06:43, Jonathan Thornburg <[email protected]> wrote:
>
> On Fri, Jan 20, 2023 at 07:16:14PM +0200, Georgi Guninski wrote:
> > I have theoretical reasons to doubt the correctness
> > of integrals involving `floor`.
> >
> > The smallest testcases:
> >
> > sage: integrate(floor(x)^2,x)
> > // Giac share root-directory:/usr/share/giac/
> > // Giac share root-directory:/usr/share/giac/
> > Added 0 synonyms
> > x*floor(x)^2
> >
> > sage: integrate(2**floor(x),x)
> > 2^floor(x)*x
> >
> > Would someone check with another CAS or prove/disprove by hand?
>
> Maple reports the same result for your first testcase:
>
> tux% maple
>     |\^/|     Maple 2022 (X86 64 LINUX)
> ._|\|   |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2022
>  \  MAPLE  /  All rights reserved. Maple is a trademark of
>  <____ ____>  Waterloo Maple Inc.
>       |       Type ? for help.
> > int(floor(x)^2, x);
>                                           2
>                                   floor(x)  x
>
> But, I think Maple and Sage/Giac are both wrong: consider the *definite*
> integral (latex notation) $I = \int_0^{3/2} \lfloor x \rfloor^2 \, dx$:
>
> Then the Sage/Giac indefinite integral implies that
> $I = \left. x \lfloor x \rfloor^2 \right|^{3/2}_0
>    = (3/2) \lfloor (3/2) \rfloor^2 - 0 \lfloor 0 \rfloor^2
>    = 3/2$
>
> But it seems to me that the correct result should be
> $I = \int_0^{3/2} \lfloor x \rfloor^2 \, dx$
>    = \int_0^1 \lfloor x \rfloor^2 \, dx
>      + \int_1^{3/2} \lfloor x \rfloor^2 \, dx
>    = \int_0^1 0 \, dx + \int_1^{3/2} 1 \, dx
>    = 0 + 1/2
>    = 1/2$

The fundamental theorem of calculus requires that the integrand be
continuous over the interval of integration but in this case the
integrand is discontinuous at 1 so you cannot apply the theorem over
[0, 3/2]. The question is: what do you want to give as the indefinite
integral of a discontinuous function f given that its antiderivative
does not exist everywhere?

The expression F = floor(x)^2 * x is a valid antiderivative for f =
floor(x)^2 for all values of x such that f is continuous. At integer
values of x the function f is discontinuous and no (two-sided)
antiderivative exists.

It can still be possible to define a function F so that the integral
of f over [a, b] is equal to F(b) - F(a) but then is it worth doing
that rather than just returning a locally valid antiderivative that is
most likely a simpler expression. In this case a function F could be
something along the lines of (I haven't checked this carefully):

   sum(n^2, (n, 1, floor(x)-1)) + floor(x)^2*(x - floor(x))

In context you should consider whether this is actually a better
expression or not though. Also keep in mind that it won't be possible
to do this for all discontinuous functions (e.g. 1/x). Any CAS that
promises to return indefinite integrals or antiderivatives of
potentially discontinuous functions will at least in some cases need
to return expressions that are only locally valid antiderivatives
rather than always returning a function F that can be used to compute
definite integrals blindly without checking continuity of the
integrand.

Given that you can't compute a suitable F in general, is it better to
try some of the time or just to state clearly in the documentation
what the limitations are and return the simplest locally valid
antiderivative expression?

--
Oscar

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CAHVvXxRt4EZnV9TPUaqf4QvaDU9TGVO8TcaH-N9V%3DAMFx5GEOw%40mail.gmail.com.

Reply via email to