คำถามติดแท็ก linear-algebra

คำถามเกี่ยวกับอัลกอริทึม / การคำนวณเชิงพีชคณิตเชิงเส้นรวมถึงการแก้ปัญหาของระบบเชิงเส้นปัญหากำลังสองน้อยที่สุด eigenproblems และเรื่องอื่น ๆ

10
คำแนะนำสำหรับไลบรารีเมทริกซ์ C ++ ที่ใช้งานได้เร็วหรือไม่
ไม่มีใครมีคำแนะนำเกี่ยวกับห้องสมุดเมทริกซ์ C ++ ที่ใช้งานได้เร็วหรือไม่? สิ่งที่ฉันหมายถึงโดยใช้งานได้ดังต่อไปนี้: วัตถุ Matrix มีส่วนต่อประสานที่ใช้งานง่าย (เช่น: ฉันสามารถใช้แถวและคอลัมน์ขณะทำดัชนี) ฉันสามารถทำอะไรกับคลาสเมทริกซ์ที่ฉันสามารถทำได้กับ LAPACK และ BLAS ง่ายต่อการเรียนรู้และใช้ API ค่อนข้างลำบากในการติดตั้งใน Linux (ตอนนี้ฉันใช้ Ubuntu 11.04) สำหรับฉันแล้วการใช้งานมีความสำคัญมากกว่าความเร็วหรือการใช้หน่วยความจำในขณะนี้เพื่อหลีกเลี่ยงการปรับให้เหมาะสมก่อนวัย ในการเขียนรหัสฉันสามารถใช้อาร์เรย์ 1 มิติ (หรือเวกเตอร์ STL) และดัชนีหรือตัวชี้ที่เหมาะสมเพื่อจำลองเมทริกซ์ แต่ฉันไม่ต้องการหลีกเลี่ยงข้อบกพร่อง ฉันยังต้องการที่จะมุ่งเน้นความพยายามของจิตกับปัญหาที่เกิดขึ้นจริงฉันพยายามที่จะแก้ปัญหาและโปรแกรมลงในโดเมนปัญหาแทนที่จะใช้ส่วนหนึ่งของความสนใจ จำกัด ของฉันที่จะจำเคล็ดลับการเขียนโปรแกรมเล็ก ๆ ทั้งหมดที่ฉันใช้ และจำคำสั่ง LAPACK และอื่น ๆ ยิ่งรหัสน้อยที่ฉันต้องเขียนและยิ่งมีมาตรฐานมากเท่าไหร่ก็ยิ่งดีเท่านั้น ความหนาแน่นเมื่อเทียบกับหร็อมแหร็มยังไม่สำคัญ; เมทริกซ์บางตัวที่ฉันติดต่อด้วยจะเบาบาง แต่ไม่ใช่ทั้งหมด อย่างไรก็ตามถ้าแพ็คเกจใดจัดการกับเมทริกซ์ที่หนาแน่นหรือกระจัดกระจายได้ดีก็น่าจะกล่าวถึง การสร้างเทมเพลตก็ไม่สำคัญสำหรับฉันเช่นกันเนื่องจากฉันจะทำงานกับประเภทตัวเลขมาตรฐานและไม่จำเป็นต้องเก็บสิ่งอื่นใดนอกจากเป็นสองเท่าทุ่นหรือ ints เป็นเรื่องดี แต่ไม่จำเป็นสำหรับสิ่งที่ฉันต้องการจะทำ

17
มีตัวแก้ปัญหาการเขียนโปรแกรมแบบไม่เชิงเส้นคุณภาพสูงสำหรับ Python หรือไม่?
ฉันมีปัญหาการเพิ่มประสิทธิภาพทั่วโลกที่ไม่ท้าทายเพื่อแก้ปัญหา ปัจจุบันผมใช้กล่องเครื่องมือเพิ่มประสิทธิภาพของ MATLAB (โดยเฉพาะfmincon()กับอัลกอริทึม = 'sqp') ซึ่งมีประสิทธิภาพมาก อย่างไรก็ตามรหัสของฉันส่วนใหญ่อยู่ใน Python และฉันก็ชอบที่จะเพิ่มประสิทธิภาพใน Python ด้วยเช่นกัน มีตัวแก้ NLP ที่มีการผูก Python ที่สามารถแข่งขันได้fmincon()หรือไม่ มันจะต้อง สามารถรับมือกับความไม่เสมอภาคและความไม่เท่าเทียมกันได้ ไม่ต้องการให้ผู้ใช้จัดหายาโคบ ไม่เป็นไรหากไม่รับประกันว่าจะมีประสิทธิภาพระดับโลก ( fmincon()ไม่) fmincon()ฉันกำลังมองหาบางสิ่งบางอย่างที่ทนทานลู่ไปยังท้องถิ่นที่เหมาะสมแม้สำหรับความท้าทายปัญหาและแม้ว่ามันจะช้ากว่าเล็กน้อย ฉันได้พยายามแก้หลายที่ให้บริการผ่าน OpenOpt และพบว่าพวกเขาจะด้อยกว่าของ fmincon/sqpMATLAB เพียงเพื่อเน้นฉันมีสูตรเวิ้งว้างและแก้ปัญหาที่ดี เป้าหมายของฉันคือการเปลี่ยนภาษาเพื่อให้เวิร์กโฟลว์มีความคล่องตัวมากขึ้น เจฟฟ์ชี้ให้เห็นว่าคุณลักษณะบางอย่างของปัญหาอาจเกี่ยวข้องกัน พวกเขาคือ: 10-400 ตัวแปรการตัดสินใจ 4-100 ข้อ จำกัด ความเท่าเทียมกันของพหุนาม (ดีกรีพหุนามมีช่วงตั้งแต่ 1 ถึงประมาณ 8) จำนวนข้อ จำกัด ของความไม่เท่าเทียมกันที่มีเหตุผลเท่ากับจำนวนตัวแปรการตัดสินใจประมาณสองเท่า ฟังก์ชั่นวัตถุประสงค์เป็นหนึ่งในตัวแปรการตัดสินใจ ชาวจาโคเบียนแห่งข้อ จำกัด ความเท่าเทียมมีความหนาแน่นสูงเช่นเดียวกับชาวจาโคเบียนแห่งข้อ จำกัด …

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

4
ตัวดำเนินการแบ็กสแลช MATLAB จะแก้ปัญหา
ฉันกำลังเปรียบเทียบรหัสของฉันบางส่วนกับรหัส "หุ้น" MATLAB ฉันประหลาดใจที่ผลลัพธ์ ฉันรันโค้ดตัวอย่าง (Sparse Matrix) n = 5000; a = diag(rand(n,1)); b = rand(n,1); disp('For a\b'); tic;a\b;toc; disp('For LU'); tic;LULU;toc; disp('For Conj Grad'); tic;conjgrad(a,b,1e-8);toc; disp('Inv(A)*B'); tic;inv(a)*b;toc; ผล : For a\b Elapsed time is 0.052838 seconds. For LU Elapsed time is 7.441331 seconds. For Conj Grad Elapsed time is …

3
วิธีเลือกวิธีการแก้สมการเชิงเส้น
สำหรับความรู้ของฉันมี 4 วิธีในการแก้ระบบสมการเชิงเส้น (แก้ไขฉันหากมีมากขึ้น): หากเมทริกซ์ระบบเป็นเมทริกซ์จตุรัสแบบเต็มคุณสามารถใช้กฎของแครมเมอร์ คำนวณค่าผกผันหรือ pseudoinverse ของเมทริกซ์ระบบ ใช้วิธีการสลายตัวของเมทริกซ์ (การกำจัดเกาส์เซียนหรือจอร์แดนถือเป็นการสลายตัว LU) ใช้วิธีการวนซ้ำเช่นวิธีการไล่ระดับสีแบบคอนจูเกต ในความเป็นจริงคุณแทบไม่ต้องการแก้ไขสมการโดยใช้กฎของ Cramer หรือคำนวณค่า inverse หรือ pseudoinverse โดยเฉพาะอย่างยิ่งสำหรับเมทริกซ์มิติสูงดังนั้นคำถามแรกคือเมื่อต้องใช้วิธีการสลายตัวและวิธีวนซ้ำตามลำดับ ฉันเดาว่ามันขึ้นอยู่กับขนาดและคุณสมบัติของเมทริกซ์ของระบบ คำถามที่สองคือความรู้ของคุณวิธีการสลายตัวแบบใดหรือวิธีการวนซ้ำแบบใดที่เหมาะสมที่สุดสำหรับเมทริกซ์ของระบบในแง่ของความเสถียรเชิงตัวเลขและประสิทธิภาพ ยกตัวอย่างเช่นวิธีการไล่ระดับสีคอนจูเกตใช้เพื่อแก้สมการที่เมทริกซ์เป็นสมมาตรและบวกแน่นอนแม้ว่ามันจะสามารถนำไปใช้กับสมการเชิงเส้นใด ๆ โดยการแปลงเป็นข นอกจากนี้สำหรับเมทริกซ์แน่นอนที่เป็นบวกคุณสามารถใช้วิธีการสลายตัวของ Cholesky เพื่อค้นหาวิธีแก้ปัญหา แต่ฉันไม่รู้ว่าจะเลือกวิธี CG เมื่อใดและจะเลือกการสลายตัวของ Cholesky ได้อย่างไร ความรู้สึกของฉันคือเราควรใช้วิธี CG สำหรับเมทริกซ์ขนาดใหญ่A T A x = A T bA x = bAx=ข\mathbf{A}x=bATA x= ATขATAx=ATข\mathbf{A}^{\rm T}\mathbf{A}x=\mathbf{A}^{\rm T}b สำหรับเมทริกซ์รูปสี่เหลี่ยมผืนผ้าเราสามารถใช้ …

5
ความแตกต่างด้านประสิทธิภาพระหว่าง ATLAS และ MKL หรือไม่
ATLAS คือการแทนที่ BLAS / LAPACK ฟรีที่ปรับแต่งตัวเองไปยังเครื่องเมื่อรวบรวม MKL เป็นห้องสมุดเชิงพาณิชย์ที่จัดส่งโดย Intel ไลบรารีทั้งสองนี้เปรียบได้หรือไม่เมื่อเทียบกับประสิทธิภาพหรือ MKL มีความสามารถเหนือกว่าสำหรับงานบางอย่างหรือไม่? ถ้าเป็นเช่นนั้น

16
ตัวอย่างที่ดีของ“ สองง่ายง่ายสามยาก” ในวิทยาศาสตร์การคำนวณ
ฉันเพิ่งพบสูตรของปรากฏการณ์เมตา : " สองเป็นเรื่องง่ายสามเป็นเรื่องยาก " (เขียนโดย Federico Poloni ด้วยวิธีนี้) ซึ่งสามารถอธิบายได้ดังนี้: เมื่อปัญหาบางอย่างถูกกำหนดขึ้นสำหรับสองหน่วยงานมันค่อนข้างง่ายที่จะแก้ปัญหา อย่างไรก็ตามอัลกอริทึมสำหรับการเพิ่มขึ้นของเอนทิตีที่สามในความยากลำบากอย่างมากอาจเป็นไปได้ว่าการแก้ปัญหาที่ไม่เป็นไปได้หรือไม่สามารถทำได้ (ฉันยินดีรับข้อเสนอแนะเพื่อทำให้ข้อความที่สวยงามกระชับและถูกต้องมากขึ้น) มีตัวอย่างที่ดีอะไรบ้างในสาขาวิทยาศาสตร์การคำนวณต่าง ๆ (เริ่มจากพีชคณิตเชิงเส้นตรงและจบลงด้วยฟิสิกส์การคำนวณแบบครอบคลุม) คุณรู้หรือไม่?

2
ดีเทอร์มิแนนต์ตัวเล็กบอกนัยว่าการปรับเมทริกซ์ไม่ดีหรือไม่?
det(A)≈0det(A)≈0\det(A) \approx 0 การสนทนาเป็นจริงหรือไม่ เมทริกซ์ที่ไม่มีเงื่อนไขมีปัจจัยเกือบเป็นศูนย์หรือไม่? นี่คือสิ่งที่ฉันลองใน Octave: a = rand(4,4); det(a) %0.008 cond(a)%125 a(:,4) = 1*a(:,1) + 2*a(:,2) = 0.000000001*ones(4,1); det(a)%1.8E-11 cond(a)%3.46E10

7
วิธีที่เร็วที่สุดในการคำนวณค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ทั่วไปคืออะไร
แก้ไข:ฉันกำลังทดสอบว่าค่าลักษณะเฉพาะใดมีขนาดหนึ่งหรือมากกว่า ฉันต้องการหาค่าลักษณะเฉพาะสัมบูรณ์ที่ใหญ่ที่สุดของเมทริกซ์เบาบางขนาดใหญ่ที่ไม่สมมาตร ฉันใช้eigen()ฟังก์ชันของ R ซึ่งใช้ QR algo จาก EISPACK หรือ LAPACK เพื่อค้นหาค่าลักษณะเฉพาะทั้งหมดจากนั้นฉันใช้abs()เพื่อรับค่าสัมบูรณ์ อย่างไรก็ตามฉันต้องทำให้เร็วขึ้น ฉันได้ลองใช้อินเตอร์เฟส ARPACK ในigraphแพ็คเกจ R แล้ว อย่างไรก็ตามมันให้ข้อผิดพลาดสำหรับเมทริกซ์ตัวหนึ่งของฉัน การดำเนินการขั้นสุดท้ายจะต้องสามารถเข้าถึงได้จากอาร์ อาจมีค่าลักษณะเฉพาะหลายค่าที่มีขนาดเท่ากัน คุณมีข้อเสนอแนะใด? แก้ไข: ความแม่นยำจะต้องเป็น1e-11เท่านั้น เป็น "ปกติ" เมทริกซ์ได้รับเพื่อให้ห่างไกล 386 ฉันสามารถทำ QR factorisation กับมันได้ อย่างไรก็ตามมันเป็นไปได้ที่จะมีขนาดใหญ่กว่ามาก ฉันกำลังเริ่มอ่านเกี่ยวกับอัลกอริทึมของ Arnoldi ฉันเข้าใจว่ามันเกี่ยวข้องกับ Lanczsos386 × 386386×386386\times 386 EDIT2:ถ้าฉันมีเมทริกซ์หลายตัวที่ฉัน "ทดสอบ" และฉันรู้ว่ามันมีซับเมทริกซ์ขนาดใหญ่ที่ไม่เปลี่ยนแปลง เป็นไปได้ไหมที่จะเพิกเฉย / ทิ้ง?

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

5
อนุญาตให้เมทริกซ์เข้าแทนที่ในจำนวนที่กำหนด
ฉันต้องการแก้ไขเมทริกซ์การเปลี่ยนตารางหนาแน่นในสถานที่โดยการเปลี่ยนลำดับของแถวและคอลัมน์หลายแห่งโดยใช้ไลบรารี่ของ python ศาสตร์นี้สอดคล้องกับการคูณเมทริกซ์ล่วงหน้าโดยเมทริกซ์การเปลี่ยนแปลง P และการโพสต์การคูณด้วย P ^ -1 = P ^ T แต่นี่ไม่ใช่วิธีการแก้ปัญหาที่สมเหตุสมผล ตอนนี้ฉันกำลังสลับแถวและคอลัมน์ด้วยตนเอง แต่ฉันคาดว่าจะมี numpy ที่มีฟังก์ชั่นที่ดี f (M, v) โดยที่ M มี n แถวและคอลัมน์และ v มีรายการ n ดังนั้นการปรับปรุง f (M, v) M ตามการเปลี่ยนแปลงดัชนี v. บางทีฉันแค่ค้นหาอินเทอร์เน็ตไม่ได้ บางสิ่งเช่นนี้อาจเกิดขึ้นได้กับ "การจัดทำดัชนีขั้นสูง" ของนัมมี่ แต่ความเข้าใจของฉันคือว่าโซลูชันดังกล่าวจะไม่เข้าแทนที่ นอกจากนี้สำหรับสถานการณ์ที่เรียบง่ายบางอย่างมันอาจจะเพียงพอที่จะแยกการติดตามการเปลี่ยนแปลงดัชนี แต่สิ่งนี้ไม่สะดวกในกรณีของฉัน เพิ่ม: บางครั้งเมื่อผู้คนพูดถึงการเรียงสับเปลี่ยนพวกเขาหมายถึงการสุ่มตัวอย่างแบบสุ่มเรียงสับเปลี่ยนเท่านั้นตัวอย่างเช่นเป็นส่วนหนึ่งของกระบวนการเพื่อรับค่า p ในสถิติ หรือพวกมันหมายถึงการนับหรือแจกแจงพีชคณิตที่เป็นไปได้ ฉันไม่ได้พูดถึงสิ่งเหล่านี้ เพิ่มเติม: เมทริกซ์มีขนาดเล็กพอที่จะใส่ลงในเดสก์ท็อปแรม …

3
อะไรคือความสัมพันธ์ของ BLAS, LAPACK และห้องสมุดพีชคณิตเชิงเส้นอื่น ๆ ?
ฉันได้ดูไลบรารีพีชคณิตเชิงเส้น C ++ สำหรับโครงการที่ฉันกำลังทำอยู่ สิ่งที่ฉันยังไม่เข้าใจคือการเชื่อมต่อของ BLAS และ LAPACK กับห้องสมุดพีชคณิตเชิงเส้นอื่น ๆ เมื่ออ่านบทความนี้ในห้องสมุดพีชคณิตเชิงเส้นฉันพบว่ามันน่าสนใจที่: ห้องสมุดบางแห่งมีความเป็นอิสระจาก BLAS และ LAPACK บางคนต้องการ BLAS และ LAPACK บางตัวมีอินเตอร์เฟสเสริมสำหรับ BLAS และ LAPACK และอย่างที่ฉันเข้าใจคุณสามารถใช้ BLAS และ LAPACK เพื่อแก้ปัญหาพีชคณิตเชิงเส้นโดยตรง ฉันสามารถจินตนาการได้ว่าบางไลบรารีเป็นเพียงอินเตอร์เฟส C ++ ไปยังไลบรารี BLAS และ LAPACK ที่เขียนใน C และ Fortran และอื่น ๆ ได้ใช้งานรูทีนทดแทนของตัวเอง แต่ อะไรคือความหมายของอินเทอร์เฟซเสริมของ BLAS และ LAPACK? คุณทำอะไรหายโดยการไม่เข้าร่วมและห้องสมุดกำลังทำอะไรแทน ห้องสมุดใดมีมากกว่าอินเตอร์เฟสหรือไม่? ตัวอย่างเช่น …

10
อัลกอริทึมที่แข็งแกร่งสำหรับ
อัลกอริธึมง่ายๆสำหรับการคำนวณ SVD ของเมทริกซ์คืออะไร?2×22×22 \times 2 เป็นการดีที่ฉันต้องการอัลกอริทึมที่มีประสิทธิภาพเป็นตัวเลข แต่ฉันต้องการเห็นการใช้งานที่เรียบง่ายและไม่ง่าย ยอมรับรหัส C การอ้างอิงใด ๆ กับเอกสารหรือรหัส?

2
ทำไมตัวแก้ปัญหาเชิงเส้นย้ำของฉันถึงไม่มาบรรจบกัน?
สิ่งที่ผิดพลาดเมื่อใช้วิธี Krylov แบบ preconditoned จากKSP ( แพคเกจแก้ปัญหาเชิงเส้นของPETSc ) เพื่อแก้ปัญหาระบบเชิงเส้นแบบกระจัดกระจายเช่นที่ได้จากการทำ discretizing และ linearizing สมการเชิงอนุพันธ์บางส่วน? ฉันสามารถใช้ขั้นตอนใดในการพิจารณาว่าเกิดปัญหาอะไรขึ้นกับฉัน ฉันสามารถเปลี่ยนแปลงอะไรได้บ้างเพื่อแก้ปัญหาระบบเชิงเส้นอย่างประสบความสำเร็จและมีประสิทธิภาพ

3
หลักการที่อยู่เบื้องหลังการบรรจบกันของวิธีการสเปซย่อย Krylov สำหรับการแก้ระบบเชิงเส้นของสมการคืออะไร?
ที่ฉันเข้าใจมันมีสองประเภทหลักของวิธีการวนซ้ำสำหรับการแก้ระบบเชิงเส้นของสมการ: วิธีการหยุดนิ่ง (Jacobi, Gauss-Seidel, SOR, Multigrid) วิธีการของ Krylov Subspace (Conjugate Gradient, GMRES และอื่น ๆ ) ฉันเข้าใจว่าวิธีการที่อยู่กับที่ส่วนใหญ่ทำงานโดยการทำซ้ำไปเรื่อย ๆ (ปรับให้เรียบ) โหมดฟูริเยร์ของข้อผิดพลาด ตามที่ฉันเข้าใจแล้ววิธีการไล่ระดับสีแบบคอนจูเกต (วิธีการสเปซ Krylov) ทำงานโดย "ก้าว" ผ่านชุดทิศทางการค้นหาที่ดีที่สุดจากพลังของเมทริกซ์ที่นำไปใช้กับส่วนที่เหลือหลักการนี้เป็นเรื่องธรรมดาสำหรับวิธีการทั้งหมดของ Krylov หรือไม่? ถ้าไม่เราจะอธิบายหลักการที่อยู่เบื้องหลังการรวมตัวกันของวิธีการย่อย Krylov โดยทั่วไปได้อย่างไรnnn

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