Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 有没有办法强制ContourPlot重新检查每个阶段上的所有点';s递归算法?_Wolfram Mathematica - Fatal编程技术网

Wolfram mathematica 有没有办法强制ContourPlot重新检查每个阶段上的所有点';s递归算法?

Wolfram mathematica 有没有办法强制ContourPlot重新检查每个阶段上的所有点';s递归算法?,wolfram-mathematica,Wolfram Mathematica,由于雅罗斯拉夫·布拉托夫(Yaroslav Bulatov)对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附近的区域。它在最初阶段就“放弃”了这一地区,并

由于雅罗斯拉夫·布拉托夫(Yaroslav Bulatov)对
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->{definition->{ControlValue->.01\[Degree]}
也没有帮助(但会使
Plot3D
更加平滑)

上面的函数只是一个简单的例子。在现实生活中,我处理的是非常复杂的隐式函数,无法解析求解

有没有办法让
ContourPlot
深入到断裂和间断附近的这些区域

这些是标准图

以及10^-20处的等高线

我很清楚

你希望得到更准确的结果吗

编辑

如果要使用轮廓->{0}选项,可以使用:


第一个
Plot3D
的底部有锯齿(我指的是平面
z=0
)。这确实是不顺利的。感谢您指出了使用
等高线->{.001}
的方法。这很有用,但是
Mesh->All
不适合我的目的。我需要一条没有网格的平滑线。最好将你的所有建议与
“ControlValue”
结合起来:
ContourPlot[Abs[x^2+y^2-1],{x,-1,1},{y,-1,1},MaxRecursion->6,PlotPoints->100,Method->{“细化”->{“CellDecomposition”->“Quad”,“ControlValue”->.01},Contours->.0001},轮廓着色->假]
。唯一不好的是,它需要对目标函数进行大量的评估。在我的例子中,这是非常缓慢的…嗯,我从斯坦·瓦格的书中得到了自适应绘图的细节,但它没有说太多关于自适应3D绘图的内容。您的特定示例看起来很特别,因为函数从不跨越0值,它只是“接触”它,我猜这就是ContourPlot找不到与其密切相关的原因:“.”