Perilaku fungsi Limit yang tidak konsisten saat mengevaluasi batas yang diarahkan pada suatu diskontinuitas
Perhatikan ungkapan berikut:
(* In *) expr1 = Hold[Limit[Sign[x], x -> y, Direction -> "FromAbove"] == Sign[y]]
Sekarang mari kita gantikan nilai tertentu ke y
:
(* In *) expr2 = expr1 /. y -> 0
Jika sekarang saya mengevaluasinya, saya mendapatkan hasil yang tidak konsisten:
(* In *) ReleaseHold[expr1]
(* Out *) True
(* In *) ReleaseHold[expr2]
(* Out *) False
Menurut saya, expr1
dinilai salah. Saya kira bahwa Limit
fungsinya entah bagaimana "melupakan" tentang kasus khusus yang mungkin y == 0
yang mengarah ke masalah ini. Bagaimana saya bisa menghindari ini? Saya berharap mendapatkan sesuatu seperti berikut Limit[Sign[x], x -> y, Direction -> "FromAbove"]
sebagai hasil yang benar:
(* Out *) Piecewise[{{Sign[y], y != 0}, {1, y == 0}}]
Jawaban
Anda ingin menggunakan GenerateConditionsopsi untuk Limit
, seperti:
limit = Limit[Sign[x], x -> y, GenerateConditions -> True]
(* ConditionalExpression[Sign[y], y != 0] *)
limit /. y -> 0
(* Undefined *)
Ini bekerja dengan banyak fungsi simbolik. Menurut pendapat saya, seharusnya default ke True
seluruh papan, tetapi default saat ini adalah Automatic
, yang melakukan hal berbeda dengan fungsi berbeda.