Есть ли способ заставить ContourPlot повторно проверять все точки на каждом этапе алгоритма рекурсии?

Благодаря за этот отличный анализ алгоритма 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 углубиться в такие области вблизи разрывов и разрывов?

6
задан Community 23 May 2017 в 12:13
поделиться