高精度で作業すると、LogPlot軸のラベルが破壊されます



Logplot Axes Labels Destroyed When Working High Precision



解決:

これは単に軸の誤ったラベル付けではありません。それ以上のことが起こっています:生成されたプロットは対数でさえありません。デフォルト(ログ変換されていない目盛り)を使用してみましょう:

まず、MachinePrecision(正しい結果):



Show [LogPlot [Abs [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> MachinePrecision]、Ticks-> Automatic]

Mathematicaグラフィックス

次に、より高い精度で(誤った結果):



Show [LogPlot [Abs [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> 30]、Ticks-> Automatic]

Mathematicaグラフィックス

どのように掘り下げる価値はないと思いますLogPlotは機能します。この時点では、これは明らかにバグのようです。


を使用して回避できます代わりにプロットLogPlot:



Plot [[email protected] [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> 30]

Mathematicaグラフィックス

ただし、軸のラベルを自分で変更する必要があります(CustomTicks / LevelSchemeは便利なパッケージです)。アダプティブプロットを失ってもかまわない場合は、自分自身と私たちに表示するポイントを生成できますListLogPlot:

ListLogPlot [Table [[email protected] [E ^ x --poly]、{x、-1、1、0.01`30}]]

Mathematicaグラフィックス

(あなたはおそらく欲しいでしょう参加->ここでは正しいですが、ポイントがどこにあるかを確認すると、プロットを調整するのに役立つため、ここでは含めませんでした。)


Szabolcsは警告しましたが 「現時点では明らかにバグのように思われるため、LogPlotがどのように機能するかを掘り下げる価値はないと思います」 やってみようと思った。見つけた:

System`LogPlot呼び出しGraphics`LogPlotDump`scaledPlotは、呼び出すSystem`PlotSystem`ProtoPlotDump`iPlotを呼び出します読み取り不可能な視覚化 `コア`プロット。

を直接利用することで、この最も内側の関数に問題が存在することを示すことができます。「MappingFunctions」とはLogPlotは最終的に(他のいくつかの設定の中で)次のようになります。

poly = Normal [Series [E ^ x、{x、0、10}]]; Table [Visualization`Core`Plot [Abs [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> wp、Method-> {'MappingFunctions'-> {{#1、Log [#2] }&、{#1、#2}&}}]、{wp、{MachinePrecision、30}}]

ここに画像の説明を入力してください

したがって、このバグは私たちの手の届かないところにあるようです。 :-(


きちんとした小さな回避策、

poly [x_] = Normal [Series [E ^ x、{x、0、10}]]; LogPlot [(Abs [E ^#-poly [#]]&@ N [Rationalize [x、0]、20])、{x、-1、1}]

ここに画像の説明を入力してください