definite_integral of max function
The following code returns 1/2
, however it can be easily verified that
$$\int_0^1 \max(x,\ 1-x)\,{\rm d}x = \frac34.$$
What's wrong?
from sage.symbolic.integration.integral import definite_integral
var('x')
definite_integral(max(x,1-x),x,0,1)
use
max_symbolic
Thanks!
max_symbolic
does lead to the correct answer, but I worry that usingmax
silently produces an incorrect answer - should Sage give an error or a warning about the issue at least?This is a common pitfall. You could have tried to see what
max(x,1-x)
answers.This is weird - both
max(x,1-x)
andmin(x,1-x)
returnx
. At very least this breaks the identity $\max(x,1-x) + \min(x,1-x) = 1$.With symbolic arguments,
max
andmin
return the first argument. Hence:However,
It's good to understand the behavior of
max
, but still the issue is that it silently produces an incorrect result. If it encounters a problem (such as inability to compute the correct result), it should complain to the user one way or another. The worst thing it can do is to ignore it and return something arbitrary.max
andmin
are Python functions, and the Sage developers have chosen so far to not redefine them. The issue is documented in https://doc.sagemath.org/html/en/refe..., at least.@FrédéricC : Would you mind making a proper answer for the benefit of future
ask.sagemath.org
perusers ?