この関数のRegionPlotの結果の精度を上げるにはどうすればよいですか?
Aug 17 2020
私はこの機能を持っています
f := 1024 (1 - (9 x^2)/4)^2 Cosh[(π x)/
3]^2 Sinh[π x]^2 (8 (16 - 216 x^2 +
81 x^4 + (4 + 9 x^2)^2 Cosh[(2 π x)/3]) Sinh[π x]^2 -
1/256 ((4 + 9 x^2)^2 Sinh[x (2 π - y)] +
2 (64 - 144 x^2 + (4 + 9 x^2)^2 Cosh[(2 π x)/3]) Sinh[
x y] - 9 (4 - 3 x^2)^2 Sinh[x (2 π + y)])^2);
どの範囲の変数で、この関数が負であるかを確認したいと思います。RegionPlotの使用
RegionPlot[ f < 0, {y, 2, 2.25}, {x, 1.15, 1.17},
WorkingPrecision -> 30, PlotPoints -> 50]
私はこのプロットを取得します

次に、範囲を縮小すると、
RegionPlot[
f < 0, {y, Rationalize[2.1299849, 0], Rationalize[2.1299855, 0]}, {x,
Rationalize[1.15970110, 0], Rationalize[1.15970113, 0]},
WorkingPrecision -> 90, PlotPoints -> 150]
取得します

ここでは、青い部分が接触しているかどうかは不明です。青い部分が連続しているかどうかを確認するには、どうすれば詳細にできますか?
回答
3 MichaelE2 Aug 17 2020 at 20:00
最も単純なプロットソリューション
ContourPlot[f,
{y, Rationalize[2.1299849, 0], Rationalize[2.1299855, 0]},
{x, Rationalize[1.15970110, 0], Rationalize[1.15970113, 0]},
ContourShading ->
{RGBColor[0.368417, 0.506779, 0.709798, 0.4], None},
Contours -> {{0}},
PlotPoints -> 25, WorkingPrecision -> 32,
Method -> {"TransparentPolygonMesh" -> True}
]
しかし、プロットは必ずしも説得力があるとは限らず、何が起こっているのかについての大まかな考えだけを与えるように設計されています。
分析ソリューション
同様の質問に対するこの回答で示したように、ノードがあることを分析的に示すことができます。
jac = D[f, {{x, y}}];
cpsol = FindRoot[jac == {0, 0}, {{x, 1.15}, {y, 2.13}},
WorkingPrecision -> 50];
cpt = {x, y} /. cpsol
f /. cpsol (* shows cpt is on curve *)
f /. N[cpsol] (* show numerical noise at cpt is substantial *)
(* {1.1597011139328870007473930523093558428367204499142, 2.1299852028277681162523681416937176426970454505325} 0.*10^-36 0.0119859 *)
飼いならす RegionPlot
RegionPlot
Region
機能の導入以来進化してきました。RegionPlot
プロットを生成するためにこの機能を使用しWorkingPrecision
ているようで、数値ノイズから明らかなオプションを無視します。リージョン機能は、マシン精度でのみ使用可能なFEM機能に基づいていると思います。(同様に、オプションMaxRecursion
は機能していないようです。)
作業精度の制御を包囲する方法は次のとおりです。
ClearAll[fff];
fff[x0_Real, y0_Real] :=
Block[{x = SetPrecision[x0, Infinity],
y = SetPrecision[y0, Infinity]},
N[
1024 (1 - (9 x^2)/4)^2 Cosh[(π x)/
3]^2 Sinh[π x]^2 (8 (16 - 216 x^2 +
81 x^4 + (4 + 9 x^2)^2 Cosh[(2 π x)/
3]) Sinh[π x]^2 -
1/256 ((4 + 9 x^2)^2 Sinh[x (2 π - y)] +
2 (64 - 144 x^2 + (4 + 9 x^2)^2 Cosh[(2 π x)/3]) Sinh[
x y] - 9 (4 - 3 x^2)^2 Sinh[x (2 π + y)])^2),
$MachinePrecision]
];
RegionPlot[
fff[x, y] < 0,
{y, Rationalize[2.1299849, 0], Rationalize[2.1299855, 0]},
{x, Rationalize[1.15970110, 0], Rationalize[1.15970113, 0]},
PlotPoints -> 100]
しかし、1つのツバメは夏にはなりません。
2 Hausdorff Aug 17 2020 at 20:05
2つの領域が出会うかどうかに関心があるのでContourPlot
、を使用することもできます。これは、もう少し安定しているように見えます。
ContourPlot[f == 0, {y, 2.1299849, 2.1299855}, {x, 1.15970110, 1.15970113},
WorkingPrecision -> 40, MaxRecursion -> 6]
