ฉันจะมีพล็อตที่ถูกต้องเพื่อให้แน่ใจว่าพล็อตนี้มีความต่อเนื่องหรือไม่?

Aug 17 2020

ฉันมีฟังก์ชัน 3 ตัวแปรนี้

f := 16 ((-1 + (9 x^2)/4) Cos[z] Cosh[(π x)/3] + 
      3 x Sin[z] Sinh[(π x)/3]) Sinh[π x] + 
   8 (-1 + (9 x^2)/4) Sinh[x y] + (-3 + (9 x^2)/4)^2 Sinh[
     x (2 π + y)] - (1 + (9 x^2)/
      4)^2 (2 Cosh[(2 π x)/3] Sinh[x y] + Sinh[2 π x - x y]);

ฉันใช้ ContourPlot3D เป็น

ContourPlot3D[f == 0, {x, 1.1, 1.21}, {y, 2, 2.2}, {z, 0.8, 1.2}]

และฉันได้รับผลลัพธ์ (ฉันได้แนบทิศทางที่แตกต่างกันของพล็อต)

ที่นี่ฉันเห็นส่วนที่ว่างเปล่าระหว่างนั้น ฉันแน่ใจว่าทั้งสองแผ่นสัมผัสกันหรือหลีกเลี่ยงกัน ดังนั้นส่วนที่ว่างเปล่านี้ (ถ้าว่างจริงๆ!) ไม่ควรเป็นจริง ฉันจะได้ผลลัพธ์ที่แม่นยำยิ่งขึ้น (พล็อต) เพื่อให้แน่ใจว่าต่อเนื่องกัน (พบกัน) หรือไม่?

คำตอบ

11 MichaelE2 Aug 17 2020 at 02:56

ใช่มีจุดสำคัญที่ทำให้แผ่นงานเข้าร่วม:

jac = D[f, {{x, y, z}}];

FindRoot[jac == {0, 0, 0}, {{x, 1.1}, {y, 2.1}, {z, 1}}];
cpt = {x, y, z} /. %
f /. %%
(*
  {1.1597, 2.12999, 0.963489}
  0.                           <-- on the surface  f == 0
*)

วางจุดวิกฤตไว้ตรงกลางของพล็อต (และใช้จำนวนคี่สำหรับPlotPointsค่าเริ่มต้น = 15)

cplot = ContourPlot3D[
  ff == 0,
  {x, cpt[[1]] - 0.1, cpt[[1]] + 0.1},
  {y, cpt[[2]] - 0.3, cpt[[2]] + 0.3},
  {z, cpt[[3]] - 0.6, cpt[[3]] + 0.6}, 
  AxesLabel -> Automatic]

อภิปรายผล. การพล็อตเส้นโครงร่างทำได้โดยการสุ่มตัวอย่างแบบไม่ต่อเนื่องและการประยุกต์ใช้ทฤษฎีบทค่ากลางเพื่อพิจารณาว่าเมื่อใดที่พื้นผิวของรูปร่างผ่านองค์ประกอบตาข่าย เป็นวิธีที่ค่อนข้างหยาบในการประมาณพื้นผิว จะทำงานได้ดีที่สุดเมื่อพื้นผิวแผ่นเดียวผ่านองค์ประกอบตาข่าย เมื่อแผ่นงานตัดกันหรือสัมผัสกันบางครั้งก็ยากที่จะสรุปสิ่งที่เกิดขึ้น วิธีการทั่วไป ได้แก่ การเพิ่มขึ้นPlotPoints(ค่าเริ่มต้น 15) หรือMaxRecursion(ค่าเริ่มต้น 2) วิธีการเหล่านี้นำไปสู่ตาข่ายที่ละเอียดขึ้นและรูเล็กลง บางครั้งพวกเขาแก้ไขปัญหาได้อย่างสมบูรณ์ ข้างต้นเราสามารถใช้ความรู้เฉพาะเกี่ยวกับพื้นผิวได้ หากมีจุดวิกฤตสองจุดดังกล่าวเราอาจไม่สามารถทำให้สิ่งที่กล่าวมาได้ผล