พฤติกรรมที่ไม่สอดคล้องกันของฟังก์ชัน Limit เมื่อประเมินขีด จำกัด ที่กำหนดไว้ที่ความไม่ต่อเนื่อง
Aug 19 2020
พิจารณานิพจน์ต่อไปนี้:
(* In *) expr1 = Hold[Limit[Sign[x], x -> y, Direction -> "FromAbove"] == Sign[y]]
ตอนนี้เรามาแทนค่าเฉพาะเป็นy
:
(* In *) expr2 = expr1 /. y -> 0
หากตอนนี้ฉันประเมินแล้วฉันได้ผลลัพธ์ที่ไม่สอดคล้องกัน:
(* In *) ReleaseHold[expr1]
(* Out *) True
(* In *) ReleaseHold[expr2]
(* Out *) False
ในความคิดของฉันexpr1
มีการประเมินผิด ฉันคิดว่าLimit
ฟังก์ชัน "ลืม" อย่างใดเกี่ยวกับกรณีพิเศษที่เป็นไปได้y == 0
ซึ่งนำไปสู่ปัญหานี้ ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร ฉันคาดหวังว่าจะได้รับสิ่งต่อไปนี้สำหรับLimit[Sign[x], x -> y, Direction -> "FromAbove"]
ผลลัพธ์ที่ถูกต้อง:
(* Out *) Piecewise[{{Sign[y], y != 0}, {1, y == 0}}]
คำตอบ
2 Pillsy Aug 19 2020 at 21:25
คุณต้องการใช้GenerateConditionsตัวเลือกสำหรับLimit
ดังนี้:
limit = Limit[Sign[x], x -> y, GenerateConditions -> True]
(* ConditionalExpression[Sign[y], y != 0] *)
limit /. y -> 0
(* Undefined *)
สิ่งนี้ใช้ได้กับฟังก์ชันสัญลักษณ์หลายอย่าง ในความคิดของฉันควรเป็นค่าเริ่มต้นTrue
ทั่วทั้งกระดาน แต่ค่าเริ่มต้นปัจจุบันคือAutomatic
ซึ่งทำสิ่งต่าง ๆ ด้วยฟังก์ชันที่แตกต่างกัน