ทำไมวิธีการของนิวตันจึงไม่มาบรรจบกัน?


22

ฉันกำลังใช้แพ็คเกจตัวแก้ปัญหาแบบไม่เชิงเส้นของPETSc SNESเพื่อแก้ระบบสมการไม่เชิงเส้นที่ได้จากการแยกส่วนสมการเชิงอนุพันธ์บางส่วนออก ฉันจะทราบได้อย่างไรว่าเหตุใดตัวแก้ปัญหาจึงไม่มาบรรจบกันและฉันจะทำอย่างไรเพื่อแก้สมการของฉันให้สำเร็จ


8
เช่นเดียวกับวิธีการวนซ้ำใด ๆ มันเป็นสิ่งสำคัญยิ่งที่จะเกิดขึ้นกับเมล็ดพันธุ์ที่ดีในการเริ่มต้นวิธีการ Newton-Raphson จุดเริ่มต้นที่ไม่ดีมักส่งผลให้เกิดความสับสนวุ่นวาย
JM

6
ฉันคิดว่า "ผลลัพธ์มักเกิดความโกลาหล" ไม่ถูกต้อง อ้างถึง Blum, Cucker, Shub และ Smale, Newton มีแอ่งที่น่าสนใจคั่นด้วยขอบเขตซึ่งอาจส่งผลให้เกิดความสับสนซ้ำ ดังนั้นพฤติกรรมแบบนี้จึงไม่น่าเป็นไปได้มากเมื่อเทียบกับการบรรจบกัน หากอัลกอริทึมกำลังมองหาวิธีการแก้ปัญหาที่แท้จริงเท่านั้นมันจะล้มเหลวในการบรรจบกันบ่อยครั้ง แต่จะไม่วุ่นวาย
Matt Knepley

5
ฉันหมายถึง "ความโกลาหล" ในแง่ที่ไม่ใช่เทคนิค @Matt; ตัวอย่างเช่นการเบี่ยงเบนไปสู่อินฟินิตี้หรือพฤติกรรมที่เป็นวงจร บางทีคำว่า "หายนะ" อาจเป็นทางเลือกที่ดีกว่า
JM

คำตอบ:


42

วิธีการของนิวตันอาจไม่มาบรรจบกันด้วยเหตุผลหลายประการนี่คือบางส่วนที่พบบ่อยที่สุด

  • Jacobian ผิด (หรือถูกต้องตามลำดับ แต่ไม่ขนาน)
  • ระบบเชิงเส้นไม่ได้รับการแก้ไขหรือแก้ไขไม่ถูกต้องเพียงพอ
  • ระบบจาโคเบียนมีความแปลกประหลาดที่ตัวแก้เชิงเส้นไม่ได้จัดการ
  • มีข้อบกพร่องในรูทีนการประเมินฟังก์ชัน
  • ฟังก์ชันไม่ต่อเนื่องหรือไม่มีอนุพันธ์อันดับหนึ่งอย่างต่อเนื่อง (เช่นการเปลี่ยนเฟสหรือตัว จำกัด TVD)
  • สมการนี้อาจไม่มีวิธีแก้ปัญหา (เช่นวงจร จำกัด แทนสถานะคงที่) หรืออาจมี "เนินเขา" ระหว่างการคาดเดาเริ่มต้นและสถานะคงที่ (เช่นสารตั้งต้นจะต้องจุดติดไฟและเผาไหม้ก่อนที่จะถึงสภาวะคงตัว ส่วนที่เหลือของรัฐจะใหญ่ขึ้นในระหว่างการเผาไหม้)

นี่คือวิธีที่จะช่วยในการแก้ปัญหาการขาดคอนเวอร์เจนซ์ของนิวตัน

  • -snes_monitor -ksp_monitor_true_residual -snes_converged_reason -ksp_converged_reasonทำงานด้วยตัวเลือก หากการแก้ปัญหาเชิงเส้นไม่ได้มาบรรจบกันตรวจสอบว่ายาโคเบียนถูกต้องจากนั้นดูคำถามนี้ หากสิ่งที่เหลืออยู่ก่อนเงื่อนไขมาบรรจบกัน แต่สิ่งตกค้างที่แท้จริงไม่ได้เกิดขึ้น หากการแก้ปัญหาเชิงเส้นมาบรรจบกัน แต่การค้นหาสายล้มเหลว Jacobian อาจไม่ถูกต้อง
  • เรียกใช้ด้วย-pc_type lu or -pc_type svdเพื่อดูว่าปัญหาเป็นตัวแก้ปัญหาเชิงเส้นที่ไม่ดีหรือไม่
  • เรียกใช้ด้วย-mat_viewหรือ-mat_view_drawเพื่อดูว่ายาโคเบียนดูสมเหตุสมผลหรือไม่
  • วิ่งด้วย-snes_type test -snes_test_displayเพื่อดูว่าคนที่คุณกำลังใช้นั้นผิดหรือเปล่า เปรียบเทียบเอาต์พุตเมื่อคุณเพิ่ม-mat_fd_type dsเพื่อดูว่าผลลัพธ์มีความอ่อนไหวต่อตัวเลือกของพารามิเตอร์ที่แตกต่างกันหรือไม่
  • วิ่งด้วย-snes_mf_operator -pc_type luเพื่อดูว่าคนที่คุณกำลังใช้นั้นผิดหรือเปล่า -snes_mf_operator -pc_type ksp -ksp_ksp_rtol 1e-12หากปัญหาที่มีขนาดใหญ่เกินไปสำหรับโดยตรงแก้ลอง เปรียบเทียบเอาต์พุตเมื่อคุณเพิ่ม-mat_mffd_type dsเพื่อดูว่าผลลัพธ์นั้นอ่อนไหวต่อการเลือกพารามิเตอร์ที่แตกต่างกันหรือไม่
  • เรียกใช้ตัวประมวลผลเดียวเพื่อดูว่าปัญหานั้นเป็นแบบคู่ขนานเท่านั้นหรือไม่
  • เรียกใช้ด้วย-snes_ls_monitorเพื่อดูว่าการค้นหาสายล้มเหลวหรือไม่ (โดยปกติจะเป็นสัญญาณของจาโคเบียนที่ไม่ดี)
  • ทำงานด้วย-infoเพื่อรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการแก้ปัญหา

นี่คือวิธีที่จะช่วยกระบวนการของ Newton หากทุกอย่างข้างต้นเช็คเอาท์

  • ทำงานด้วยการจัดลำดับของกริด ( -snes_grid_sequenceคือทั้งหมดที่คุณต้องการหากทำงานกับกDM) เพื่อสร้างการคาดเดาเริ่มต้นที่ดีขึ้นบนตาข่ายที่ละเอียด
  • ทำงานด้วยความแม่นยำของรูปสี่เหลี่ยม ( ./configure --with-precision=__float128 --download-f2cblaslapackด้วย PETSc 3.2 ขึ้นไปต้องการคอมไพเลอร์ GNU เวอร์ชัน 4.6 หรือใหม่กว่า)
  • เปลี่ยนหน่วย (การไม่เป็นมิติ) การปรับสภาพขอบเขตหรือสูตรเพื่อให้จาโคเบียนมีสภาพดีขึ้น
  • ระงับคุณสมบัติในฟังก์ชั่นที่ไม่มีอนุพันธ์แรกอย่างต่อเนื่อง (มักเกิดขึ้นเมื่อมีifคำสั่งในการประเมินผลที่เหลือเช่นเปลี่ยนเฟสหรือ จำกัด TVD) ใช้ตัวแก้ไขความไม่เท่าเทียมกันแบบผันแปร ( SNESVINEWTONRSLS ) หากความไม่ต่อเนื่องนั้นมีความสำคัญขั้นพื้นฐาน
  • ลองใช้วิธีภูมิภาคที่เชื่อถือได้ ( -ts_type trอาจต้องปรับพารามิเตอร์)
  • เรียกใช้ด้วยพารามิเตอร์การดำเนินการต่อจากจุดที่คุณทราบวิธีแก้ไขปัญหาดูTSPSEUDOสำหรับการแก้ปัญหาสถานะคงที่ มีแพ็คเกจตัวแก้ homotopy เช่น PHCpack ที่สามารถแก้ปัญหาที่เป็นไปได้ทั้งหมด (และบอกคุณว่าพบทั้งหมด) แต่สิ่งเหล่านี้ไม่สามารถปรับขนาดได้และไม่สามารถแก้ปัญหาใด ๆ ได้ยกเว้นปัญหาเล็กน้อย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.