การแก้ปัญหาที่เบาบางและระบบปรับอากาศที่ไม่ดี


9

ฉันตั้งใจที่จะแก้ปัญหา Ax = b โดยที่ A มีความซับซ้อนเบาบางไม่สมมาตรและมีเงื่อนไขไม่ดี (หมายเลขเงื่อนไข ~ 1E + 20) เมทริกซ์สี่เหลี่ยมหรือสี่เหลี่ยม ฉันสามารถแก้ไขระบบด้วย ZGELSS ใน LAPACK ได้อย่างถูกต้อง แต่เมื่อระดับความเป็นอิสระในระบบของฉันเพิ่มขึ้นมันใช้เวลานานในการแก้ไขระบบบนพีซีที่มี ZGELSS เนื่องจาก sparsity ไม่ถูกใช้ประโยชน์ เมื่อเร็ว ๆ นี้ฉันลอง SuperLU (ใช้ที่เก็บข้อมูล Harwell-Boeing) สำหรับระบบเดียวกัน แต่ผลลัพธ์ไม่ถูกต้องสำหรับหมายเลขเงื่อนไข> 1E + 12 (ฉันไม่แน่ใจว่านี่เป็นปัญหาเชิงตัวเลขกับการหมุน)

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


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

1
ฉันยังได้รับประสบการณ์ที่ดีกับการปรับสภาพล่วงหน้าให้ดีตามที่อธิบายไว้ที่นี่: en.wikipedia.org/wiki/ ......คุณสามารถทำการปรับสภาพล่วงหน้าด้วยเลขคณิตที่แน่นอนได้ เมทริกซ์ของฉันมีความหนาแน่นสูงดังนั้นจึงไม่สามารถชี้นำคุณไปยังวิธีการ / กิจวัตรที่เฉพาะเจาะจงมากขึ้นที่นี่
AlexE

11
เหตุใดจำนวนเงื่อนไขจึงใหญ่มาก บางทีสูตรสามารถปรับปรุงเพื่อให้ระบบปรับอากาศได้ดีขึ้น? โดยทั่วไปคุณไม่สามารถคาดหวังได้ว่าจะสามารถประเมินส่วนที่เหลือได้ถูกต้องมากกว่า(เครื่องแม่นยำ)(หมายเลขเงื่อนไข)ซึ่งทำให้ Krylov มีค่าน้อยเมื่อคุณหมดบิต ถ้าหมายเลขเงื่อนไขเป็นจริง1020คุณควรใช้ความแม่นยำแบบ Quad ( __float128ด้วย GCC ซึ่งสนับสนุนโดยแพ็คเกจบางอย่างรวมถึง PETSc)
Jed Brown

2
คุณได้รับการประเมินหมายเลขเงื่อนไขนี้จากที่ไหน ถ้าคุณขอให้ Matlab ประมาณจำนวนเงื่อนไขของเมทริกซ์ด้วยช่องว่างว่างมันอาจทำให้คุณไม่มีที่สิ้นสุดหรือบางครั้งก็อาจให้จำนวนมากกับคุณ หากระบบที่คุณกำลังดูมีพื้นที่ว่างและคุณรู้ว่ามันคืออะไรคุณสามารถฉายมันออกมาและสิ่งที่คุณทิ้งไว้อาจมีหมายเลขเงื่อนไขที่ดีกว่า จากนั้นคุณสามารถใช้ PETSc หรือ Trilinos หรืออะไรก็ได้
Daniel Shapero

3
Daniel - วิธี SVD ที่ถูกตัดทอนที่ใช้โดย ZGELSS จะกำหนดพื้นที่ว่าง (เวกเตอร์เอกพจน์ที่เกี่ยวข้องกับค่าเอกพจน์เล็ก ๆ ใน SVD เป็นพื้นฐานสำหรับ N (A)) และค้นหาวิธีแก้ปัญหากำลังสองน้อยที่สุดเพื่อ นาทีAx-มากกว่า(A)) พีอีRพี(ยังไม่มีข้อความ(A))
Brian Borchers

คำตอบ:


13

เมื่อคุณใช้ ZGELSS ในการหลีกเลี่ยงปัญหานี้คุณกำลังใช้การสลายตัวของค่าเอกพจน์ที่ถูกตัดทอนเพื่อทำให้ปัญหานี้มีเงื่อนไขที่ไม่ดีอย่างสม่ำเสมอ สิ่งสำคัญคือต้องเข้าใจว่ารูทีนไลบรารีนี้ไม่ได้พยายามหาวิธีแก้ปัญหากำลังสองน้อยที่สุดให้กับแต่มันพยายามปรับสมดุลในการหาโซลูชันที่ลดขนาดต่อต้านการย่อขนาด. Ax=xAx-

โปรดทราบว่าพารามิเตอร์ RCOND ที่ส่งผ่านไปยัง ZGELSS สามารถใช้เพื่อระบุค่าเอกพจน์ที่ควรรวมและแยกออกจากการคำนวณโซลูชัน ค่าเอกพจน์ใด ๆ ที่น้อยกว่า RCOND * S (1) (S (1) คือค่าเอกพจน์ที่ใหญ่ที่สุด) จะถูกละเว้น คุณยังไม่ได้บอกเราว่าคุณตั้งค่าพารามิเตอร์ RCOND ใน ZGELSS อย่างไรและเราไม่ได้ทำอะไรเกี่ยวกับระดับเสียงของค่าสัมประสิทธิ์ในเมทริกซ์ของคุณหรือทางด้านขวามือดังนั้นจึงยากที่จะบอกว่าคุณใช้หรือไม่ การทำให้เป็นปกติในปริมาณที่เหมาะสม A

คุณดูเหมือนจะมีความสุขกับการแก้ regularized ว่าคุณได้รับกับ ZGELSS ดังนั้นจึงปรากฏว่ากูผลโดยวิธีการตัดทอน SVD (ซึ่งพบว่าอย่างน้อยวิธีการแก้ปัญหาในหมู่โซลูชั่นสี่เหลี่ยมน้อยที่ลดเหนือพื้นที่ของการแก้ปัญหาที่ครอบคลุมโดยเวกเตอร์เอกพจน์ที่เกี่ยวข้องกับค่าเอกพจน์ที่มากกว่า RCOND * S (1) เป็นที่น่าพอใจสำหรับคุณ xAx-

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

คำแนะนำของฉันจะใช้วิธีการวนซ้ำ (เช่น CGLS หรือ LSQR) เพื่อลดปัญหากำลังสองน้อยที่สุดที่ทำให้เป็นมาตรฐานอย่างชัดเจน

นาทีAx-2+α2x2

โดยที่พารามิเตอร์การปรับสภาพถูกปรับเพื่อให้ปัญหากำลังสองน้อยที่สุดที่ได้รับการปรับสภาพให้ดีและเพื่อให้คุณมีความสุขกับผลลัพธ์ของการทำให้เป็นมาตรฐาน α


ฉันขอโทษที่ไม่ได้พูดถึงเรื่องนี้ตั้งแต่เริ่มแรก ปัญหาที่กำลังแก้ไขคือสมการของเฮล์มโฮลทซ์อะคูสติกโดยใช้ FEM ระบบมีการปรับสภาพที่ไม่ดีนักเนื่องจากพื้นฐานของคลื่นระนาบที่ใช้ในการแก้ปัญหาโดยประมาณ
user1234

สัมประสิทธิ์ในและมาจากไหน พวกเขาวัดข้อมูลหรือไม่ ค่า "ถูกต้อง" จากการออกแบบของวัตถุบางอย่าง (ในทางปฏิบัติไม่สามารถใช้กับความคลาดเคลื่อนที่ 15 หลัก ... )? A
Brian Borchers

1
เมทริกซ์ A และ b เกิดขึ้นโดยใช้สูตรอ่อนของ Helmholtz PDE ดูที่: asadl.org/jasa/resource/1/jasman/v119/i3/ …
1234

9

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

สถานการณ์แบบนี้มักเกิดขึ้นเพราะคุณเลือกพื้นฐานที่ไม่เหมาะสม ตัวอย่างเช่นคุณได้รับเมทริกซ์ที่ไม่ดีเช่นนี้หากคุณเลือกฟังก์ชันเป็นพื้นฐานของวิธี Galerkin (สิ่งนี้นำไปสู่เมทริกซ์ของฮิลแบร์ตซึ่งมีเงื่อนไขไม่ดีนัก) การแก้ปัญหาในกรณีดังกล่าวคือไม่ต้องถามว่านักแก้ปัญหาคนไหนที่สามารถแก้ระบบเชิงเส้นได้ แต่ถามว่ามีฐานที่ดีกว่านี้หรือไม่ ฉันขอแนะนำให้คุณทำเช่นเดียวกัน: คิดถึงการปฏิรูปปัญหาของคุณเพื่อที่คุณจะได้ไม่ต้องจบการฝึกอบรมประเภทนี้1,x,x2,x3,...


เมื่อแยกแยะปัญหาที่ไม่ถูกต้องสำหรับ PDE เช่นสมการความร้อนย้อนหลังแน่นอนเราจะจบลงด้วยสมการเมทริกซ์ที่มีเงื่อนไข นี่ไม่ใช่กรณีที่เราสามารถแก้ได้โดยการกำหนดสมการใหม่หรือเลือกตัวแก้เมทริกซ์ที่มีประสิทธิภาพหรือปรับปรุงความแม่นยำในจำนวนจุดลอยตัว ในกรณีนี้ [เช่นปัญหาการผกผันอะคูสติก] จำเป็นต้องใช้วิธีการทำให้เป็นมาตรฐาน
tqviet

7

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

คุณอาจต้องใช้ความแม่นยำสี่เท่า (34 หลักทศนิยม) แม้ว่า 20 หลักจะสูญหายในหลักสูตร (เนื่องจากหมายเลขเงื่อนไข) คุณจะยังคงได้ 14 หลักที่ถูกต้อง

หากเป็นที่สนใจใด ๆ ตอนนี้หร็อมแหร็มแก้ปัญหากระจัดกระจายมีให้ใน MATLAB ด้วย

(ฉันเป็นผู้เขียนกล่องเครื่องมือที่กล่าวถึง)

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