เมื่อใดที่ Newton-Krylov ไม่ได้เป็นนักแก้ปัญหาที่เหมาะสม?


16

เมื่อเร็ว ๆ นี้ฉันได้ทำการเปรียบเทียบตัวแก้ปัญหาที่ไม่ใช่เชิงเส้นที่แตกต่างจาก scipyและรู้สึกประทับใจเป็นพิเศษกับตัวอย่างของNewton-Krylov ใน Scipy Cookbookซึ่งพวกเขาแก้สมการเชิงอนุพันธ์อันดับสองกับคำที่ไม่เป็นเชิงเส้นในโค้ดประมาณ 20 บรรทัด

ฉันแก้ไขโค้ดตัวอย่างเพื่อแก้สมการปัวซองที่ไม่ใช่เชิงเส้น ( เรียกอีกอย่างว่าสมการปัวซอง - โบลซ์มันน์ดูหน้า 17 ในบันทึกเหล่านี้) สำหรับเซมิคอนดักเตอร์ heterostructures ซึ่งมีรูปแบบ

d2φdx2-k(x)(พี(x,φ)-n(x,φ)+ยังไม่มีข้อความ+(x))=0

(นี่คือฟังก์ชั่นที่เหลือที่ถูกส่งผ่านไปยังตัวแก้ไข)

นี่คือปัญหาไฟฟ้าสถิตที่และที่มีฟังก์ชั่นแบบไม่เชิงเส้นสำหรับแบบฟอร์มE_f)} รายละเอียดที่นี่ไม่สำคัญ แต่ประเด็นก็คือฟังก์ชั่นที่ไม่ใช่เชิงเส้นแตกต่างกันอย่างมากกับดังนั้นฟังก์ชั่นที่เหลือสามารถแตกต่างกันไปในช่วงใหญ่ (ด้วยการเปลี่ยนแปลงเล็กน้อย ใน\n(x,φ)พี(x,φ)nผม(x)อี-(Eผม(x,φ)-E)φ10-6-1016)φ

ฉันแก้สมการเชิงตัวเลขด้วย Newton-Krylov ของ scipy แต่มันจะไม่มีวันลู่เข้าหากัน (อันที่จริงมันมักจะรายงานข้อผิดพลาดกับการคำนวณ Jacobian) ฉันเปลี่ยนจากSolver ของNewton-Krylovมาเป็นfsolve (ซึ่งมีพื้นฐานจาก MINPACK hybrd) และมันใช้งานได้เป็นครั้งแรก!

มีเหตุผลทั่วไปไหมที่ทำไม Newton-Krylov ไม่เหมาะกับปัญหาบางอย่าง? สมการอินพุตต้องถูกปรับเงื่อนไขอย่างใดไหม?

อาจต้องการข้อมูลเพิ่มเติมเพื่อแสดงความคิดเห็น แต่ทำไมคุณคิดว่า fsolve ใช้งานได้ในกรณีนี้


ฉันมีปัญหาเดียวกันกับ Newton-Krylov ที่ล้มเหลวกับ Jacobian และพบว่าการเปลี่ยนวิธีจาก "lgmres" เป็นเพียง "gmres" ( sol = newton_krylov(func, guess, method='gmres')) ช่วยแก้ปัญหาได้ ไม่แน่ใจว่าทำไม แต่ทุกคนที่มีปัญหานี้อาจพิจารณาทำเช่นเดียวกัน
Arthur Dent

คำตอบ:


18

มีสองประเด็นที่คุณน่าจะประสบอยู่

ป่วยปรับอากาศ

อันดับแรกปัญหาคือสภาพที่ไม่ดี แต่ถ้าคุณให้เพียงส่วนที่เหลือเท่านั้นนิวตัน - ครีลลอฟก็โยนตัวเลขครึ่งที่สำคัญของคุณออกไป

J[x]YF(x+εY)-F(x)ε

1016

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

เป็นไปได้ว่าfsolveทั้งสองไม่ได้ใช้ข้อมูลของจาโคเบียนหรือใช้วิธีการของ dogleg หรือการเปลี่ยนแปลงเพื่อให้เกิดความก้าวหน้าด้วยวิธีการ "ไล่ลงทางลาด" แม้จะมีความเป็นเอกเทศจากจาโคเบียน (เช่น เลขคณิตความแม่นยำ จำกัด ) สิ่งนี้ไม่สามารถปรับขนาดได้และfsolveมีแนวโน้มที่จะช้าลงเมื่อคุณเพิ่มขนาดของปัญหา

โลกาภิวัตน์

หากปัญหาเชิงเส้นได้รับการแก้ไขอย่างถูกต้องเราสามารถแยกแยะปัญหาที่เกี่ยวข้องกับปัญหาเชิงเส้น (Krylov) และมุ่งเน้นไปที่ปัญหาเหล่านั้นเนื่องจากความไม่เชิงเส้น Local minima และ nonsmooth มีการลู่เข้าที่ช้าหรือทำให้เกิดความเมื่อยล้า Poisson-Boltzmann เป็นรูปแบบที่ราบรื่นดังนั้นหากคุณเริ่มต้นด้วยการเดาเริ่มต้นที่ดีพอนิวตันจะมาบรรจบกันแบบจตุรัส กลยุทธ์โลกาภิวัตน์ส่วนใหญ่เกี่ยวข้องกับความต่อเนื่องเพื่อสร้างการคาดเดาเบื้องต้นคุณภาพสูงสำหรับการทำซ้ำขั้นสุดท้าย ตัวอย่างรวมถึงความต่อเนื่องของกริด (เช่น Full Multigrid) ความต่อเนื่องของพารามิเตอร์และความต่อเนื่อง pseudotransient หลังเป็นทั่วไปที่ใช้บังคับกับปัญหามั่นคงของรัฐและข้อเสนอทฤษฎีบรรจบบางทั่วโลกเห็นเบนจามินเคลลี่และคีย์ส (2003) การค้นหาจะเปิดบทความนี้ซึ่งอาจเป็นประโยชน์กับคุณ:Shestakov, Milovich และ Noy (2002) แก้ปัญหาของการไม่เชิงเส้นสม Poisson-Boltzmann ใช้หลอกชั่วคราวต่อเนื่องและวิธีการองค์ประกอบ ความต่อเนื่องของปลอมมีความสัมพันธ์อย่างใกล้ชิดกับอัลกอริธึม Levenberg-Marquardt

อ่านเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.