高精度で作業すると、LogPlot軸のラベルが破壊されます
Logplot Axes Labels Destroyed When Working High Precision
解決:
これは単に軸の誤ったラベル付けではありません。それ以上のことが起こっています:生成されたプロットは対数でさえありません。デフォルト(ログ変換されていない目盛り)を使用してみましょう:
まず、MachinePrecision(正しい結果):
Show [LogPlot [Abs [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> MachinePrecision]、Ticks-> Automatic]
次に、より高い精度で(誤った結果):
Show [LogPlot [Abs [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> 30]、Ticks-> Automatic]
どのように掘り下げる価値はないと思いますLogPlotは機能します。この時点では、これは明らかにバグのようです。
を使用して回避できます代わりにプロットLogPlot:
Plot [[email protected] [E ^ x --poly]、{x、-1、1}、WorkingPrecision-> 30]
ただし、軸のラベルを自分で変更する必要があります(CustomTicks / LevelSchemeは便利なパッケージです)。アダプティブプロットを失ってもかまわない場合は、自分自身と私たちに表示するポイントを生成できますListLogPlot:
ListLogPlot [Table [[email protected] [E ^ x --poly]、{x、-1、1、0.01`30}]]
(あなたはおそらく欲しいでしょう参加->ここでは正しいですが、ポイントがどこにあるかを確認すると、プロットを調整するのに役立つため、ここでは含めませんでした。)
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}]