有没有办法强制 ContourPlot 重新检查其递归算法每个阶段的所有点?
感谢对情节的出色分析
Yaroslav Bulatov 的算法,我现在明白了 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 -> {细化-> {控制值-> .01 \[Degree]}}
没有帮助(但使 Plot3D
更平滑一些)。
上面的函数只是一个简单的例子。在现实生活中,我正在处理非常复杂的隐式函数,无法通过分析解决。
有没有办法让 ContourPlot 深入到断裂和不连续附近的区域?
Thanks to this excellent analysis of the Plot
algorithm by Yaroslav Bulatov, I now understand the reason why Plot3D
and ContourPlot
fail to draw smoothly functions with breaks and discontinuities.
For example, in the following case ContourPlot fails to draw contour x^2 + y^2 = 1 at all:
ContourPlot[Abs[x^2 + y^2 - 1], {x, -1, 1}, {y, -1, 1}, Contours -> {0}]
It is because the algorithm does not go deeply into the region near x^2 + y^2 = 1. It "drops" this region on an initial stage and does not try to investigate it further. Increasing MaxRecursion
does nothing in this sense. And even undocumented option Method -> {Refinement -> {ControlValue -> .01 \[Degree]}}
does not help (but makes Plot3D
a little bit smoother).
The above function is just a simple example. In real life I'm working with very complicated implicit functions that cannot be solved analytically.
Is there a way to get ContourPlot
to go deeply into such regions near breaks and discontinuities?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这些是标准图。
以及 10^-20 处的轮廓
它们对我来说非常清楚。
您期望更准确的信息吗?
编辑
如果您想使用轮廓->{0}选项,您可以使用:
These are the standard Plots .
And the Contour at 10^-20
They are pretty clear for me.
Do you expect something more accurate?
Edit
If you want to use the Contours->{0} Option, you may use: