Sage provides a symbolic maximum and minimum due to the fact that the Python builtin max and min are not able to deal with variables as users might expect. These functions wait to evaluate if there are variables.
Here you can see some differences:
sage: max(x,x^2)
x
sage: max_symbolic(x,x^2)
max(x, x^2)
sage: f(x) = max_symbolic(x,x^2); f(1/2)
1/2
This works as expected for more than two entries:
sage: max(3,5,x)
5
sage: min(3,5,x)
3
sage: max_symbolic(3,5,x)
max(x, 5)
sage: min_symbolic(3,5,x)
min(x, 3)
Bases: sage.functions.min_max.MinMax_base
Symbolic function.
The Python builtin function doesn’t work as expected when symbolic
expressions are given as arguments. This function delays evaluation
until all symbolic arguments are substituted with values.
EXAMPLES:
sage: max_symbolic(3, x)
max(3, x)
sage: max_symbolic(3, x).subs(x=5)
5
sage: max_symbolic(3, 5, x)
max(x, 5)
sage: max_symbolic([3,5,x])
max(x, 5)
TESTS:
sage: loads(dumps(max_symbolic(x,5)))
max(x, 5)
sage: latex(max_symbolic(x,5))
\max\left(x, 5\right)
sage: max_symbolic(x, 5)._sympy_()
Max(5, x)
Bases: sage.symbolic.function.BuiltinFunction
TESTS:
sage: from sage.functions.trig import Function_cot
sage: c = Function_cot() # indirect doctest
sage: c(pi/2)
0
EXAMPLES:
sage: max_symbolic(3,5,x) # indirect doctest
max(x, 5)
sage: min_symbolic(3,5,x)
min(x, 3)
Bases: sage.functions.min_max.MinMax_base
Symbolic function.
The Python builtin function doesn’t work as expected when symbolic
expressions are given as arguments. This function delays evaluation
until all symbolic arguments are substituted with values.
EXAMPLES:
sage: min_symbolic(3, x)
min(3, x)
sage: min_symbolic(3, x).subs(x=5)
3
sage: min_symbolic(3, 5, x)
min(x, 3)
sage: min_symbolic([3,5,x])
min(x, 3)
TESTS:
sage: loads(dumps(min_symbolic(x,5)))
min(x, 5)
sage: latex(min_symbolic(x,5))
\min\left(x, 5\right)
sage: min_symbolic(x, 5)._sympy_()
Min(5, x)