วิธีการในการแก้ปัญหาระบบการแพร่กระจายที่ไม่ใช่เชิงเส้นเกินกว่านิวตัน - Raphson?


9

ฉันกำลังทำงานในโครงการที่ฉันมีสองโดเมนที่ต่างกันซึ่งต่างกันไปตามเงื่อนไขแหล่งที่มาของโดเมนนั้น ๆ (หนึ่งโดเมนจะเพิ่มมวล เพื่อความกระชับฉันจะสร้างแบบจำลองพวกเขาในสถานะมั่นคง สมการเป็นสมการการขนส่งการกระจายการพาแบบกระจายของคุณกับคำที่มามีลักษณะดังนี้:

1เสื้อ=0=F1+Q1(1,2)2เสื้อ=0=F2+Q2(1,2)

ที่ไหน Fผม เป็นฟลักซ์การแพร่กระจายและ advective สำหรับสายพันธุ์ ผมและ Qผม เป็นคำที่มาสำหรับสปีชีส์ ผม.

ฉันสามารถเขียนวิธีแก้ปัญหาของฉันโดยใช้วิธี Newton-Raphson และเชื่อมโยงสองโดเมนเข้าด้วยกันโดยใช้ block mass matrix เช่น:

Fโอยูพีล.อีd=[A100A2][1,ผม2,ผม]xผม-[1(1,ผม,2,ผม)2(1,ผม,2,ผม)]

ระยะเวลา Fโอยูพีล.อีd จะใช้ในการกำหนดเมทริกซ์ Jacobian และอัปเดตทั้งสอง 1 และ 2:

J(xผม)[xผม+1-xผม]=-Fโอยูพีล.อีd

หรือ

xผม+1=xผม-(J(xผม))-1Fโอยูพีล.อีd

เพื่อเร่งสิ่งต่าง ๆ ฉันไม่ได้คำนวณจาโคเบียนทุกการวนซ้ำ - ตอนนี้ฉันกำลังเล่นกับการวนซ้ำห้าครั้งซึ่งดูเหมือนว่าจะทำงานได้ดีพอและทำให้ทางออกคงที่

ปัญหาคือ: ฉันจะย้ายไปยังระบบที่มีขนาดใหญ่กว่าซึ่งทั้งสองโดเมนอยู่ใน 2D / 2.5D และการคำนวณ Jacobian matrix จะทำให้ทรัพยากรคอมพิวเตอร์ที่มีอยู่หมดลงอย่างรวดเร็ว ฉันกำลังสร้างแบบจำลองนี้เพื่อใช้ในการตั้งค่าการเพิ่มประสิทธิภาพในภายหลังดังนั้นฉันจึงไม่สามารถอยู่หลังพวงมาลัยได้ในการวนซ้ำทุกครั้งเพื่อปรับปัจจัยการทำให้หมาด ๆ ฯลฯ

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

Are there any other slick algorithms that I may have missed that can solve a system of nonlinear equations without resorting to re-calculating the Jacobian as offen?


2
คุณได้พิจารณาตัวแก้ซ้ำ ๆ เช่น AMG - วิธีพีชคณิตมัลติigridหรือไม่ คุณอาจจำเป็นต้องหาผู้เชี่ยวชาญที่มีพื้นฐานทางฟิสิกส์มาก่อน
NameRakes

1
คุณสามารถเข้าถึงกลุ่มการคำนวณที่คุณสามารถแจกจ่ายการก่อตัวของยาโคบและวิธีแก้ปัญหาโดยใช้แพ็คเกจพีชคณิตเชิงเส้นแบบขนานได้หรือไม่?
Bill Barth

ไม่ฉันไม่ได้พิจารณา AMG ฉันคิดว่านี่เป็นเพียงระบบสมมาตรและไม่สามารถใช้ในปัญหาที่เกิดจากการหมุนเวียน ฉันจะดูอีกครั้งในวรรณกรรมสำหรับ AMG
cbcoutinho

การคำนวณแบบขนานนั้นทำได้ยากเพราะโครงการนี้กำลังพัฒนาเป็นแอปพลิเคชันแบบสแตนด์อโลนสำหรับเพื่อนร่วมงานที่ไม่สามารถเข้าถึงทรัพยากรประเภทนั้นได้ ฉันคิดว่าการพัฒนา mpi เป็นโครงการเพื่อประโยชน์ของฉันเอง แต่นั่นจะเพิ่มอุปสรรคในการเข้ามาหาคนอื่น ๆ ซึ่งเป็นจุดแรกในตอนแรก ..
cbcoutinho

3
ทำไมการคำนวณของ Jacobian จึงเป็นปัญหา? หากคุณกำลังใช้ความแตกต่าง / ปริมาณ / องค์ประกอบ จำกัด ควรมีส่วนที่หร็อมแหร็มที่มักจะเหมือนกันและส่วนที่เป็นเส้นทแยงมุมที่มีการเปลี่ยนแปลง แต่เป็นเรื่องเล็กน้อยที่จะคำนวณ
David Ketcheson

คำตอบ:


4

ฉันสมมติว่าข้อ จำกัด ในแบบ 2D และ 3D คือการเก็บยาโคบเบียน

ทางเลือกหนึ่งคือการรักษาอนุพันธ์ของเวลาและใช้ "การหลอก" เวลาที่ชัดเจนเพื่อย้ำให้อยู่ในสถานะมั่นคง โดยปกติแล้วหมายเลข CFL ที่คุณต้องการสำหรับระบบกระจายและปฏิกิริยาอาจมีขนาดเล็ก คุณสามารถลองหลาย ๆ แบบไม่เชิงเส้น (เรียกอีกอย่างว่า Multigrid Storage เต็มการประมาณ) และเวลาท้องถิ่นเพื่อเร่งความเร็วการบรรจบกัน

ตัวเลือกอื่นคือการใช้รูปแบบโดยนัยอย่างที่คุณทำอยู่ตอนนี้ แต่ไม่ได้จัดเก็บ Jacobian ทั่วโลก คุณสามารถใช้รูปแบบที่ไม่มีเมทริกซ์โดยนัย

DF(ยูn)δยูn=-F(ยูn)
(ในกรณีที่ DF คือ Jacobian) สามารถแก้ไขได้ด้วยตัวแก้พื้นที่ย่อย Krylov เช่น GMRES และ BiCGStab โดยใช้ข้อเท็จจริงที่ว่า
DF(ยูn)δยูF(ยูn+εδยูδยู)-F(ยูn)ε.
นี่เป็นเพราะ GMRES และ BiCGStab ไม่ต้องการเมทริกซ์ LHS Aพวกเขาเพียงแค่ต้องสามารถคำนวณผลิตภัณฑ์ของตนได้ Ax ให้เวกเตอร์ x.

ตอนนี้มีค่าที่เหมาะสมของ ε (ปกติเกี่ยวกับ 10-7สำหรับการลอยตัวที่มีความแม่นยำสองเท่า) คุณสามารถเรียกใช้งานวนรอบนิวตันโดยไม่ต้องคำนวณหรือจัดเก็บ Jacobian ฉันรู้ถึงความจริงที่ว่าเทคนิคนี้ใช้เพื่อแก้ปัญหากรณีที่ไม่เกี่ยวกับการเคลื่อนที่ของไหลในการคำนวณ อย่างไรก็ตามโปรดทราบว่าจำนวนของการประเมินผลของฟังก์ชั่นF จะมากกว่าในเทคนิคการจัดเก็บเมทริกซ์แทนที่จะต้องใช้ผลิตภัณฑ์เมทริกซ์เวกเตอร์

อีกสิ่งหนึ่งที่ควรทราบก็คือหากระบบของคุณเป็นสิ่งที่จำเป็นต้องมีเงื่อนไขเบื้องต้นที่มีประสิทธิภาพ (เช่น Jacobi หรือ block-Jacobi จะไม่พอเพียง) คุณอาจต้องการลองใช้วิธีการที่กล่าวถึงข้างต้นเป็นวิธีที่ราบรื่นยิ่งขึ้น หากคุณต้องการลองผู้ชี้แนะจุดหรือบล็อคจาโคบีคุณสามารถคำนวณและเก็บเฉพาะองค์ประกอบในแนวทแยงหรือบล็อกแนวทแยงของจาโคเบียนซึ่งไม่มากนัก ฉันยังพูดถึงว่า Gauss-Seidel หรือ SSON preconditioner อาจเป็นไปได้ที่จะดำเนินการโดยไม่ต้องจัดเก็บ Jacobian อย่างชัดเจน บทความนี้อธิบายการใช้ GMRES ที่ปราศจากเมทริกซ์ซึ่งมีเงื่อนไขล่วงหน้าด้วยเมทริกซ์ Gauss-Seidel ที่ปราศจากเมทริกซ์ในบริบทของพลศาสตร์ของไหลเชิงคำนวณ


1

จากประสบการณ์ของฉันกับสมการเนเวียร์ - สโตคส์เราสามารถทำได้ดีมาก

หากคุณต้องการรูปแบบตัวเลขที่รวดเร็วสำหรับการแก้ปัญหาวิวัฒนาการเวลาลองดูที่แผนการของ IMEX (โดยนัย - ชัดแจ้ง) ดูตัวอย่างบทความนี้โดย Ascher, Ruuth, Spiteri วิธี Runge-Kutta โดยนัย - ชัดแจ้งสำหรับสมการเชิงอนุพันธ์ย่อยที่ขึ้นกับเวลา

คุณอาจลองใช้รูปแบบการรวมเวลาที่มีความชัดเจนสูงพร้อมการควบคุมขนาดขั้นตอน (เช่นของ Matlab ODE45) อย่างไรก็ตามคุณอาจประสบปัญหาเนื่องจากความแข็งของระบบของคุณซึ่งมาจากส่วนที่กระจาย โชคดีที่ส่วนที่กระจัดกระจายเป็นแบบเส้นตรงเพื่อให้สามารถรักษาได้โดยปริยาย (ซึ่งเป็นแนวคิดของแผนการ IMEX)


0

ตอนแรกฉันคิดว่าจะเพิ่มเพียงคำพูด แต่พื้นที่ไม่เพียงพอดังนั้นฉันจึงเพิ่มคำอธิบายสั้น ๆ เกี่ยวกับประสบการณ์ของฉันในหัวข้อนี้

ขั้นแรกให้ดูที่สัญลักษณ์ของคุณ Fโอยูพีล.อีd ฉันไม่เห็นรูปแบบคู่ฉันคิดว่า 1 และ 2 จะต้องขึ้นอยู่กับ 1,ผม และ 2,ผม. ยิ่งกว่านั้นถ้าA1 และ A2 เป็นตัวแทนของเมทริกซ์ของการประมาณของ F1 และ F2 แล้วพวกเขาก็ไม่ควรพึ่งเท่านั้น ผมแต่ก็เหมือนกันกับคุณค่าของเพื่อนบ้าน แต่นี่อาจเป็นเพียงความเข้าใจที่ไม่ถูกต้องของสัญลักษณ์ของคุณ

ในฐานะที่เป็นความคิดเห็นทั่วไปฉันต้องการเพิ่มว่าการใช้ Jacobian เชิงวิเคราะห์น่าจะเป็นวิธีเดียวที่จะได้รับการบรรจบกันของกำลังสองของตัวแก้แบบวนซ้ำไม่เชิงเส้น (เช่นตัวแก้นิวตัน - ราฟสันในกรณีของคุณ) คุณสังเกตเห็นมันในกรณีของคุณหรือไม่? มันค่อนข้างสำคัญเพราะมิฉะนั้นอาจมีความเข้าใจผิดในการประมาณของคุณ (การทำให้เป็นเส้นตรง)

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

แต่คุณคิดถูกว่าข้อเสียเปรียบ (หรือคุณสมบัติ) ของการวิเคราะห์จาโคเบียนสำหรับระบบของ PDE นั้นคือมันก่อให้เกิดระบบพีชคณิตแบบคู่ดังนั้นหากคุณแยกระบบดังกล่าวในทางใดทางหนึ่งเช่นการแยกการประมาณโดยประมาณของแต่ละ PDE ซ้ำ ๆ วิธีการแล้วคุณหลวมการบรรจบกันของสมการกำลังสองของการแก้ปัญหาทั่วโลก แต่อย่างน้อยถ้าคุณแก้ปัญหา PDE ที่แยกจากกัน (แยกแต่ละส่วน) คุณสามารถเร่งความเร็วการแก้ปัญหาสำหรับปัญหานี้อีกครั้งโดยใช้วิธี Newton-Raphson


Howdy @Peter คุณมีสิทธิ์เกี่ยวกับการแต่งงานฉันได้แก้ไขสมการหลักที่จะแสดงและ 1 และ 2 ฟังก์ชั่นทั้งสองของ 1 และ 2. เมทริกซ์A1 และ A2ในกรณีนี้คือเมทริกซ์ความแข็งทั้งสองระบบซึ่งพัฒนาโดยใช้วิธีไฟไนต์เอลิเมนต์ สิ่งเหล่านี้เป็นฟังก์ชั่นของพิกัดของโหนดเท่านั้นและไม่ใช่ของตัวแปรสถานะF1 และ F2เป็นเวกเตอร์ดังนั้นมันจึงเป็นฟังก์ชันของเวกเตอร์ของตัวแปรสถานะไม่ใช่แค่ตัวแปรเดียว ฉันคำนวณ Jacobian ด้วยตัวเลขโดยใช้ความแตกต่างอัน จำกัด ฉันยังไม่ได้สำรวจยาโคเบียนนักวิเคราะห์
cbcoutinho
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.