ユーザが指定しなかった場合、プロットは垂直範囲をどのように決定しますか?


7

は、例えば検討:この場合

p0 = Plot[Tan[x Pi/2], {x, -1, 1}] 

を、指定された垂直方向の範囲が $であろう - プロットすることは明らかに不可能であるが、Mathematicaは静かに垂直を選択(\inftyの、\inftyの)$ 、 $[ - 6.60184、6.50751]$ のプロット範囲(AbsoluteOptions[p0, PlotRange]によって報告)。

実際、プロットされる関数が指定された区間(終点を含む)全体にわたって有限であっても、Mathematicaは、指定された区間内の関数の実際の範囲よりも小さい垂直範囲を選択することがあります。 【 - 6.60183、6.50749] $、前の例で使用したものとほぼ同じたとえば、Mathematicaで使用される場合は、1つのプロット

epsilon = 1*^-6; 
Plot[Tan[x Pi/2],{x, -1 + epsilon, 1 - epsilon}] 

垂直プロット範囲が$ です。

Plotは、ユーザが(有界の)プロットを指定していない場合、どのようにして2Dプロットの垂直範囲を決定しますか?

(言うまでもなく、専有情報なので、Mathematicaのアルゴリズムの詳細な説明は必要ありません。私が得ることを望んでいるのは、一般的な考え方です。)

プロット

Plot[Tan[x Pi/200], {x, -100, 100}] 

ための垂直範囲はとまったく同じであるので、私が言うことができる


ことの一つは、水平方向の範囲は、垂直範囲の計算に入っていないようだということです上記の最初の例。

私がインストールしたSEアップローダーは何らかの理由で動作していません。

  0

:あなたはこれを回避したい場合は、いつでも(他の作図機能の多くと同様<code>Plot</code>の作品)のすべてのポイントを含めるオプションを使用することができますあなたがそれを渡すので、それは範囲を知っているので、範囲にわたってプロットされる関数の最大/最小を推定するためにいくつかの前処理を行います。プロットを最もよく見せる値を得るためには、もっと多くのヒューリスティックスが必要です。それは芸術と科学の両方です。 Mathematicaはこれを例えばMatlabよりも優れている。私はWRIのために働かないし、実際の実装でこれがどのように行われているのかわからないので、これは教育的な推測です。 23 8月. 132013-08-23 13:27:05

  0

@Nasser 'Plot'は引数関数が' 'black-box 'であるか' 'Plot''で明示的に可視であるかにかかわらず結果が常に同じであるため、シンボリック処理を使用しません。比較: 'f [x_?NumberQ] = Tan [x Pi/200];プロット[f [x]、{x、-100,100}] 'と' Plot [Tan [x Pi/200]、{x、-100,100}] 'となる。 23 8月. 132013-08-23 14:42:37

  0

@ rm-rf:thanks;それが起こると、*私は使用しているアップローダです。それは何とか詰め込まれている。私はそれを再インストールする必要がありますが、これは初めてのことではありません。これは最初の場所に詰まった理由を理解するまでサイクルを繰り返すのを躊躇します... 23 8月. 132013-08-23 22:38:16

5

これはちょうどPlot - ListPlotではなく、それは非常に簡単です。あなたが間-1と+1の数字の束を持っている場合たとえば、それはあなたが期待するかもしれない範囲を表示します。

x = RandomVariate[UniformDistribution[{-1, 1}], 1000]; 
ListPlot[x] 

enter image description here

変更値の2 +/- 2ともそれに

x = RandomVariate[UniformDistribution[{-1, 1}], 1000]; 
x[[100]] = 2; x[[200]] = -2; 
ListPlot[x] 

enter image description here

をしかし、200 +/-をするための値を変更すると、それはに正しいことであるかについて、いくつかの選択肢を作る:ご想像のとおり行為プロット:それだけの値を切り捨て(そして上の写真のようにプロット)しないこと

x = RandomVariate[UniformDistribution[{-1, 1}], 1000]; 
x[[100]] = 200; x[[200]] = -200; 
ListPlot[x] 

enter image description here

は注意してください、むしろ、それは明らかであるかもしれないよりプロットに多くがあることを示すためにしよう約+/- 2.5の範囲を選択することによって達成される。なぜ彼らがこれらの正確な選択をするのかをWolframだけが知っています。、それは機能を知っている

x = RandomVariate[UniformDistribution[{-1, 1}], 1000]; 
x[[100]] = 200; x[[200]] = -200; 
ListPlot[x, PlotRange -> All] 

enter image description here