2012-06-12 14 views
0

當運行命令:古怪的數學情節的行爲

Plot[1/x, {x, 0, 10}] 

我變得非常怪異的輸出:在運行時
enter image description here
不僅如此,但

Plot[1/x, {x, 0, 1000}, Mesh -> All] 


哪些應當標註分它產生的字裏行間,使我這個:
enter image description here
請注意,其1000在這裏 - 而不是10
在閱讀Mathematica關於Plot的解釋之後 - 它說如果函數變化很快,它會生成更多點。功能1/x正在改變非常緩慢 - 我雖然這個Mathematica是不是一代足夠的積分 - 但使用Mesh -> All我表明它是不正確的。

有沒有人遇到過這種奇怪的行爲?任何人都可以向我解釋是什麼導致這種情況,以及如何解決這個問題?



P.S:這不是它會帶來壞輸出的唯一功能 - 它實際上是相當普遍的。
P.P.S:我試着玩MaxRecursionWorkingPresicion - 並沒有幫助。

編輯:我剛剛注意到X軸不爲0 - 如果你看第一張圖,你會看到0.4作爲最後一個號碼,0.6它上面。 X軸實際上是0.2!所以也許問題是:爲什麼X軸在0.2而不是0

回答

3

我沒有看到你的第一個情節任何怪事,我看到一個雙曲線的曲線圖。 Mathematica甚至已經非常友好地忽略了您的評估1/0的嘗試。

在你的第二個情節,我認爲你期待的Mathematica繪製1000點沿着它繪出了線?你給了它多少個像素來在x方向上繪製這1000個點?我認爲你所看到的是大多數基於計算機的繪圖所共有的一種人工製品:要求橫跨(也許)250個像素的1000個點,並且必須提供一些東西。或者我不明白你爲什麼關心輸出。

最後,你問:爲什麼是0.2 X軸,而不是0

答案是,數學已經決定,圖形會好看呀。如果要強制x軸在0處穿過y軸,請使用Plot命令中的AxesOrigin選項。

+0

起初我還以爲是在X平面0 - 所以圖表通過它是非常奇怪的。 –

3

好,MMA只是想成爲的那種。如果輸入,您將得到正確的繪圖範圍,但由於它是無窮大(對於y軸),因此該函數的其餘部分基本上爲零。所以你會看到一個「空」的情節,這更加不直觀......

1

您可以在DiscretePlot找到值:

DiscretePlot[1/x, {x, 0.5, 10, 0.2}, 
    PlotRange -> All, 
    AxesOrigin -> {0, 0} 
] 

Mathematica graphics

或者添加選項Joined -> True並獲得:

Mathematica graphics