Comportamiento inconsistente de la función Límite al evaluar un límite dirigido en una discontinuidad

Aug 19 2020

Considere la siguiente expresión:

(* In *) expr1 = Hold[Limit[Sign[x], x -> y, Direction -> "FromAbove"] == Sign[y]]

Ahora sustituyamos un valor específico a y:

(* In *) expr2 = expr1 /. y -> 0

Si ahora lo evalúo, obtengo resultados inconsistentes:

(* In *) ReleaseHold[expr1]
(* Out *) True
(* In *) ReleaseHold[expr2]
(* Out *) False

En mi opinión, expr1está mal evaluado. Supongo que la Limitfunción de alguna manera "olvida" que el caso especial es posible para y == 0lo que conduce a este problema. ¿Cómo podría evitar esto? Esperaría obtener algo como lo siguiente Limit[Sign[x], x -> y, Direction -> "FromAbove"]como resultado correcto:

(* Out *) Piecewise[{{Sign[y], y != 0}, {1, y == 0}}]

Respuestas

2 Pillsy Aug 19 2020 at 21:25

Desea utilizar la GenerateConditionsopción para Limit, así:

limit = Limit[Sign[x], x -> y, GenerateConditions -> True]
(* ConditionalExpression[Sign[y], y != 0] *)

limit /. y -> 0
(* Undefined *)

Esto funciona con muchas funciones simbólicas. En mi opinión, debería estar predeterminado en Truetodos los ámbitos, pero el valor predeterminado actual es Automatic, que hace cosas diferentes con funciones diferentes.