Благодаря этому превосходному анализу алгоритма Plot
Ярослава Булатова я теперь понимаю причину, по которой Plot3D
и ContourPlot
не могут плавно рисовать функции с разрывами и разрывами.
Например, в следующем случае ContourPlot вообще не может нарисовать контур x ^ 2 + y ^ 2 = 1:
ContourPlot[Abs[x^2 + y^2 - 1], {x, -1, 1}, {y, -1, 1}, Contours -> {0}]
Это потому, что алгоритм не углубляется вобласть около x ^ 2 + y ^ 2 = 1. Он «отбрасывает» эту область на начальном этапе и не пытается исследовать ее дальше.Увеличение MaxRecursion
ничего не делает в этом смысле.И даже недокументированный параметр Method -> {Refinement -> {ControlValue -> .01 \[Degree]}}
не помогает (но делает Plot3D
немного более плавным).
Вышеприведенная функция является простым примером.В реальной жизни я работаю с очень сложными неявными функциями, которые не могут быть решены аналитически.
Есть ли способ заставить ContourPlot
глубоко проникнуть в такие области вблизи разрывов и разрывов?