मैं इस फ़ंक्शन के लिए RegionPlot के परिणाम की सटीकता कैसे बढ़ा सकता हूं?
मेरा यह कार्य है
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[ 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]
मुझे मिला
यहां, यह स्पष्ट नहीं है कि नीले हिस्से स्पर्श करते हैं या नहीं। मैं यह देखने के लिए अधिक विस्तार से कैसे जा सकता हूं कि क्या नीला भाग निरंतर है या नहीं?
जवाब
सरलतम प्लॉटिंग समाधान
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 *)
taming 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]
लेकिन एक निगल गर्मियों में नहीं बनाता है।
चूंकि आप रुचि रखते हैं कि क्या दोनों क्षेत्र मिलते हैं, आप भी उपयोग कर सकते हैं ContourPlot
, जो थोड़ा और स्थिर प्रतीत होता है:
ContourPlot[f == 0, {y, 2.1299849, 2.1299855}, {x, 1.15970110, 1.15970113},
WorkingPrecision -> 40, MaxRecursion -> 6]