How to | より滑らかなプロットあるいはより粗いプロットを作成する方法
Wolfram言語では作成中のプロットの詳細のレベルを微調整することができる.プロットのラフスケッチが必要な場合は,Wolfram言語にもっと少ない点をプロットするように指示すればよい.プロットに入れる点の数が多ければ多いほど,結果はより詳細なものとなる.
Plot[Abs[Sin[x]], {x, 0, 2 π}]オプションMesh->Allを設定すると,Wolfram言語が使うデフォルトのサンプル点を見ることができる:
Plot[Abs[Sin[x]], {x, 0, 2 π}, Mesh -> All]PlotPointsでプロットするサンプル点の数を調整することができる.MaxRecursionは,いくつの再帰部分分割がなされるかを制御する:
Manipulate[With[{p = p, m = m}, Show[Plot[Abs[Sin[x]], {x, 0, 2 π}, Mesh -> All, PlotPoints -> p, MaxRecursion -> m, PlotRange -> {-0.5, 1}, ImageSize -> Medium], Graphics[Style[Text["PlotPoints: " <> ToString[p], {2, -0.25}], 14]], Graphics[Style[Text["MaxRecursion: " <> ToString[m], {2, -0.4}], 14]]]], {{p, 3, "PlotPoints"}, 3, 20, 1}, {{m, 0, "MaxRecursion"}, 0, 10, 1}]PlotPointsおよびMaxRecursionの値を高く設定すると,非常に細かい画像が返されるが,時間はかかる.AbsoluteTimingは評価するのに何秒かかるのかを表示する:
AbsoluteTiming[Plot3D[Abs[Sin[x + y]], {x, -2 π, 2 π}, {y, -2 π, 2 π}, PlotPoints -> 10, MaxRecursion -> 8]]PlotPointsおよびMaxRecursionの値を小さくすると,粗いプロットではあるが,結果がより速く返される:
AbsoluteTiming[Plot3D[Abs[Sin[x + y]], {x, -2 π, 2 π}, {y, -2 π, 2 π}, PlotPoints -> 4, MaxRecursion -> 4]]プロット点の数の設定が低すぎると,誤解を招く結果が返されることがある.以下はWolfram言語のデフォルトの設定を使って作成された正しいプロットである:
Plot[Sin[x], {x, -100, 100}]//TimingPlotPointsを低く設定しすぎると,誤解を招くような結果が返される:
Plot[Sin[x], {x, -100, 100}, PlotPoints -> 2]//Timing低いPlotPointsの値は,MaxRecursionの値を増やすことで補うことができるが,もっと時間がかかることが多く,結果が正しくないままであることもある:
Plot[Sin[x], {x, -100, 100}, PlotPoints -> 2, MaxRecursion -> 15]//Timing