Grazie a this eccellente analisi dell'algoritmo Plot
di Yaroslav Bulatov, ora capisco il motivo per cui Plot3D
e ContourPlot
non riescono a disegnare agevolmente funzioni con interruzioni e discontinuità.C'è un modo per forzare ContourPlot di ricontrollare tutti i punti su ogni fase del suo algoritmo di ricorsione?
Ad esempio, nel seguente caso ContourPlot non trae contorno x^2 + y^2 = 1 completo:
ContourPlot[Abs[x^2 + y^2 - 1], {x, -1, 1}, {y, -1, 1}, Contours -> {0}]
È perché l'algoritmo non va in profondità nella regione vicino x^2 + y^2 = 1. "Cade" questa regione in una fase iniziale e non tenta di indagare ulteriormente. L'aumento di MaxRecursion
non fa nulla in questo senso. E anche l'opzione non documentata Method -> {Refinement -> {ControlValue -> .01 \[Degree]}}
non aiuta (ma rende Plot3D
un po 'più agevole).
Questa funzione è solo un semplice esempio. Nella vita reale sto lavorando con funzioni implicite molto complicate che non possono essere risolte analiticamente.
C'è un modo per ottenere ContourPlot
per andare in profondità in tali regioni vicino a interruzioni e discontinuità?
Beh, ho avuto specifiche trama adattivi dal libro di Stan Wagon, ma non dice molto sul plottaggio 3D adattivo. Il tuo particolare esempio sembra speciale perché la funzione non incrocia mai il valore 0, semplicemente lo "tocca", suppongo che sia la ragione per cui ContourPlot non riesce a trovarlo. –
Fortemente correlato: "[Problema con ContourPlot] (http: //mathematica.stackexchange. com/q/23363/280)." –