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

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

2
วิธีที่มีประสิทธิภาพมากที่สุดในการคำนวณค่า eigenvector ของเมทริกซ์หนาแน่นที่สอดคล้องกับค่าลักษณะเฉพาะที่มีขนาดใหญ่ที่สุดคืออะไร
ฉันมีเมทริกซ์จตุรัสสมมาตรจริงหนาแน่น ขนาดประมาณ 1,000x1000 ฉันต้องคำนวณส่วนประกอบหลักตัวแรกและสงสัยว่าอัลกอริธึมที่ดีที่สุดในการทำสิ่งนี้อาจเป็นอย่างไร ดูเหมือนว่า MATLAB จะใช้อัลกอริทึมArnoldi / Lanczos (สำหรับeigs) แต่จากการอ่านเกี่ยวกับพวกเขาฉันไม่แน่ใจว่าพวกเขามีข้อได้เปรียบมากกว่าการทำซ้ำพลังแบบเรียบง่ายหรือไม่เนื่องจากเมทริกซ์ของฉันไม่กระจัดกระจายและฉันสนใจเฉพาะไอเกนแรกเท่านั้น คำแนะนำใด ๆ ที่เป็นอัลกอริธึมที่เร็วที่สุดในกรณีนี้?

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

1
มีวิธีฮิวริสติกเพื่อปรับวิธีการผ่อนคลายแบบต่อเนื่อง (SOR) อย่างต่อเนื่องหรือไม่?
ตามที่ผมเข้าใจมันต่อเนื่องมากกว่าการผ่อนคลายการทำงานโดยการเลือกพารามิเตอร์0≤ω≤20≤ω≤20\leq\omega\leq2และการใช้การรวมกันของเส้นตรง (กึ่ง) ย้ำ Gauss-Seidel และความคุ้มค่าที่ timestep ก่อนหน้านี้ ... นั่นคือ uk+1=(ω)ugsk+1+(1−ω)ukยูk+1=(ω)ยูก.sk+1+(1-ω)ยูk{u}^{k+1} = (\omega){u_{gs}}^{k+1} + (1-\omega)u^{k} ฉันรัฐกึ่งเพราะugsk+1ยูก.sk+1{u_{gs}}^{k+1}มีข้อมูลล่าสุดปรับปรุงตามกฎนี้อย่าง timestep ใด ๆ (โปรดทราบว่าที่ω=1ω=1\omega=1นี่คือ gauss-seidel) ไม่ว่าในกรณีใดฉันได้อ่านว่าตัวเลือกที่เหมาะสมที่สุดสำหรับωω\omega (เช่นการวนซ้ำมาบรรจบกันเร็วกว่าวิธีอื่น) 2 สำหรับปัญหาปัวซองเนื่องจากความละเอียดเชิงพื้นที่เข้าใกล้ศูนย์ มีแนวโน้มที่คล้ายกันสำหรับปัญหาอื่น ๆ ที่มีความสมมาตรและโดดเด่นในแนวทแยงมุมหรือไม่? นั่นคือมีวิธีเลือกโอเมก้าอย่างเหมาะสมที่สุดโดยไม่ต้องฝังลงในแผนการปรับให้เหมาะสมแบบปรับได้หรือไม่? มีการวิเคราะห์พฤติกรรมแบบอื่นสำหรับปัญหาประเภทอื่น ๆ หรือไม่ ปัญหาอะไรบ้างที่จะทำให้เกิดการผ่อนคลาย ( ω&lt;1ω&lt;1\omega<1 ) ดีที่สุด?

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

2
เมทริกซ์เคอร์เนล RBF มีแนวโน้มว่าจะไม่ดีหรือไม่?
ฉันใช้ฟังก์ชั่นเคอร์เนล RBF เพื่อใช้อัลกอริทึมการเรียนรู้ของเคอร์เนล (KLPP) หนึ่งตัวเคอร์เนลผลลัพธ์ แสดงว่ามีสภาพที่ไม่ดีอย่างยิ่งจำนวนเงื่อนไขของ L2-norm มาKKK K( i , j ) = exp(- (xผม-xJ)2σ2ม.)K(i,j)=exp⁡(−(xi−xj)2σm2)K(i,j)= \exp\left({\frac{-(x_{i}-x_{j})^2}{ \sigma_{m}^2}}\right)1017-10641017−106410^{17}-10^{64} มีวิธีใดบ้างที่จะทำให้ห้องปรับอากาศมีสภาพดี? ฉันเดาว่าต้องมีการปรับพารามิเตอร์แต่ฉันไม่ทราบว่าจะต้องทำอย่างไรσσ \sigma ขอบคุณ!

3
เหตุผลที่ LAPACK ใช้คืออะไร
ประจำ QR ของ LAPACK เก็บ Q เป็นเจ้าของบ้านสะท้อนแสง มันชั่งเวกเตอร์การสะท้อนกลับvvv กับ 1/v11/v11/v_1ดังนั้นองค์ประกอบแรกของผลลัพธ์จึงกลายเป็น 111ดังนั้นจึงไม่จำเป็นต้องจัดเก็บ และมันเก็บแยกต่างหากττ\tauเวกเตอร์ซึ่งมีปัจจัยขนาดที่ต้องการ เมทริกซ์ตัวสะท้อนแสงจึงเป็นดังนี้:H=I−τvvT,H=I−τvvT,H=I-\tau v v^T, ที่ไหน vvvไม่ได้ทำให้ปกติ ในขณะที่ในตำราเรียนเมทริกซ์สะท้อนแสงคือ H=I−2vvT,H=I−2vvT,H = I-2vv^T, ที่ไหน vvv ถูกทำให้เป็นมาตรฐาน ทำไมขนาด LAPACK vvv กับ 1/v11/v11/v_1แทนที่จะทำให้เป็นมาตรฐาน พื้นที่เก็บข้อมูลที่จำเป็นเหมือนกัน (แทนที่จะเป็น ττ\tau, v1v1v_1 จะต้องมีการจัดเก็บ) และหลังจากนั้นจึงนำไปใช้ HHH สามารถทำได้เร็วขึ้นเนื่องจากไม่จำเป็นต้องคูณด้วย ττ\tau การคูณด้วย 222 ในเวอร์ชันตำราเรียนสามารถปรับให้เหมาะสมถ้าแทนของการปรับสภาพง่าย vvv ถูกปรับอัตราส่วนโดย 2–√/∥v∥2/‖v‖\sqrt 2/\|v\|) (เหตุผลของคำถามของฉันคือฉันกำลังเขียนชุดคำสั่ง QR และ SVD และฉันต้องการทราบเหตุผลของการตัดสินใจนี้ไม่ว่าฉันจะต้องทำตามหรือไม่)

4
ระบบเชิงเส้นที่เร็วที่สุดแก้ปัญหาสำหรับเมทริกซ์จตุรัสขนาดเล็ก (10x10)
ฉันสนใจมากในการปรับนรกให้เหมาะสมกับการแก้ไขระบบเชิงเส้นสำหรับเมทริกซ์ขนาดเล็ก (10x10) บางครั้งเรียกว่าเมทริกซ์จิ๋ว มีวิธีแก้ปัญหาพร้อมสำหรับเรื่องนี้หรือไม่? เมทริกซ์สามารถอนุมานได้ว่าไม่มีความหมาย ตัวแก้ปัญหานี้จะต้องดำเนินการเกิน 1,000 000 ครั้งในหน่วยไมโครวินาทีบน Intel CPU ฉันกำลังพูดถึงระดับการเพิ่มประสิทธิภาพที่ใช้ในเกมคอมพิวเตอร์ ไม่ว่าฉันจะเขียนโค้ดในแอสเซมบลีและสถาปัตยกรรมเฉพาะหรือศึกษาความแม่นยำหรือความน่าเชื่อถือในการลดการแลกเปลี่ยนและใช้แฮ็กจุดลอยตัว (ฉันใช้แฟล็ก -ffast-math คอมไพล์ไม่มีปัญหา) การแก้ปัญหาอาจล้มเหลวได้ประมาณ 20% ของเวลา! partialPivLu ของ Eigen นั้นเร็วที่สุดในเบนช์มาร์กปัจจุบันของฉันมีประสิทธิภาพเหนือกว่า LAPACK เมื่อปรับให้เหมาะสมกับ -O3 และคอมไพเลอร์ที่ดี แต่ตอนนี้ฉันอยู่ที่จุดของการแก้ปัญหาเชิงเส้นกำหนดเอง คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ฉันจะทำให้โซลูชันของฉันเป็นโอเพ่นซอร์สและฉันจะทำมุมมองเชิงลึกที่สำคัญในสิ่งพิมพ์ ฯลฯ ที่เกี่ยวข้อง: ความเร็วในการแก้ระบบเชิงเส้นด้วยเมทริกซ์บล็อกแนวทแยง วิธีที่เร็วที่สุดในการแปลงเมทริกซ์นับล้านคืออะไร? https://stackoverflow.com/q/50909385/1489510

1
อัลกอริทึมสมดุลเมทริกซ์
ฉันได้รับการเขียนกล่องเครื่องมือระบบการควบคุมจากรอยขีดข่วนและหมดจดใน Python3 (เสียบด้านหน้า: harold) จากการวิจัยที่ผ่านมาของฉันฉันมักจะบ่นเกี่ยวกับนักแก้ปัญหา Riccati care.mด้วยเหตุผลที่เป็นเทคนิค / ไม่เกี่ยวข้อง ดังนั้นฉันได้เขียนชุดคำสั่งของตัวเอง balance.mสิ่งหนึ่งที่ผมไม่สามารถหาวิธีรอบคือการได้รับขั้นตอนวิธีการสมดุลและมีประสิทธิภาพสูงอย่างน้อยดีเท่า ก่อนที่คุณจะพูดถึงมันxGEBALในครอบครัวเป็นที่เปิดเผยใน SciPy และคุณโดยทั่วไปสามารถโทรจาก SciPy ดังต่อไปนี้สมมติว่าคุณมีชนิดลอย 2D อาร์เรย์A: import scipy as sp gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 ) ตอนนี้ถ้าฉันใช้เมทริกซ์ทดสอบต่อไปนี้ array([[ 6. , 0. , …

1
ซ้ำ "แก้" สำหรับ
ฉันไม่สามารถจินตนาการได้ว่าฉันเป็นคนแรกที่คิดเกี่ยวกับปัญหาต่อไปนี้ดังนั้นฉันจะพอใจกับการอ้างอิง สมมติว่าคุณมีผลบวกแน่นอนแบบสมมาตร Σ∈Rn×nΣ∈Rn×n\Sigma \in \mathbb{R}^{n \times n}. nnn มีขนาดใหญ่มากดังนั้นการถือครอง ΣΣ\Sigmaในความทรงจำเป็นไปไม่ได้ อย่างไรก็ตามคุณสามารถประเมินได้ΣxΣx\Sigma xสำหรับใด ๆ x∈Rnx∈Rnx \in \mathbb{R}^{n}. ให้ไว้บ้างx∈Rnx∈Rnx \in \mathbb{R}^{n}คุณต้องการที่จะหา xtΣ−1xxtΣ−1xx^t\Sigma^{-1}x. ทางออกแรกที่นึกถึงคือการหา Σ−1xΣ−1x\Sigma^{-1}xใช้ (พูด) การไล่ระดับสีผันคำกริยา อย่างไรก็ตามดูเหมือนว่าจะค่อนข้างสิ้นเปลือง - คุณต้องหาสเกลาร์และในกระบวนการที่คุณพบเวกเตอร์ขนาดมหึมาRnRn\mathbb{R}^{n}. มันดูเหมือนจะสมเหตุสมผลมากกว่าที่จะหาวิธีคำนวณสเกลาร์โดยตรง (เช่นโดยไม่ผ่านΣ−1xΣ−1x\Sigma^{-1}x) ฉันกำลังมองหาวิธีการประเภทนี้

1
อัลกอริทึมในการคำนวณเลขชี้กำลังของเมทริกซ์ Hessenberg
ฉันสนใจในการคำนวณโซลูชันของระบบ lage ของ ODE โดยใช้วิธี krylov เช่นเดียวกับใน [1] วิธีการดังกล่าวเกี่ยวข้องกับฟังก์ชั่นที่เกี่ยวข้องกับการชี้แจง (ที่เรียกว่าφφ\varphi-ฟังก์ชั่น). มันประกอบด้วยการคำนวณการกระทำของฟังก์ชั่นเมทริกซ์โดยการสร้างพื้นที่ย่อย Krylov โดยใช้การวนซ้ำของ Arnoldi และฉายฟังก์ชันในพื้นที่ย่อยนี้ สิ่งนี้ช่วยลดปัญหาในการคำนวณเลขชี้กำลังของเมทริกซ์ Hessenberg ที่เล็กกว่ามาก ฉันรู้ว่ามีหลายอัลกอริทึมในการคำนวณเลขชี้กำลัง (ดู [2] [3] และการอ้างอิงในนั้น) ฉันสงสัยว่ามีอัลกอริทึมพิเศษในการคำนวณเลขยกกำลังที่สามารถใช้ประโยชน์จากข้อเท็จจริงที่ว่าเมทริกซ์คือเฮสเซนเบิร์กหรือไม่? [1] Sidje, RB (1998) Expokit: ชุดซอฟต์แวร์สำหรับประมวลผลเลขชี้กำลังเมทริกซ์ ธุรกรรม ACM เกี่ยวกับซอฟต์แวร์ทางคณิตศาสตร์ (TOMS), 24 (1), 130-156 [2] Moler, C. , &amp; Van Loan, C. (1978) เก้าวิธีที่น่าสงสัยในการคำนวณเลขชี้กำลังของเมทริกซ์ รีวิว SIAM, 20 …

2
เป็นตัวแทนของตัวเลข Eisenstein โดยไม่ต้องลอย
ผมมีโครงการที่ฉันจำเป็นต้องใช้เขตการกำลังสอง โดยเฉพาะตัวเลขของแบบฟอร์มกับ{Q}a+b−3−−−√a+b−3a + b \sqrt{-3}a,b∈Qa,b∈Qa,b \in \mathbb{Q} ตัวอย่างเช่นที่นี่มีจำนวนเฉพาะในจำนวนเต็ม Eisenstein : ฉันไม่ต้องการใช้ปัญญาชน ฉันต้องการเขียนชนิดข้อมูลของตัวเองเพื่อรวมเข้าnumpyด้วยกัน PARI จะมีประโยชน์ - แต่มันเข้ากันไม่ได้กับ Python ส่วนเพิ่มเติมสำหรับวัตถุเหล่านี้ค่อนข้างชัดเจน(a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} การคูณนั้นละเอียดอ่อนกว่าเล็กน้อย แต่เราก็สามารถเขียนโค้ดได้ยากเช่นกัน (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 …

2
โครงสร้างข้อมูลแบบใหม่ใดที่ใช้ใน FEM ที่ปรับตัวได้
ไลบรารี FEM ที่ปรับตัวได้จำนวนมากใช้โครงสร้างข้อมูลตาข่ายที่ทันสมัยกว่าเพื่อจัดการกับการเพิ่ม / ลบโหนด, ขอบ, สามเหลี่ยม, เตตราฮาดราเป็นต้นตัวอย่างเช่นไลบรารีp4estใช้โครงสร้างข้อมูลแปดตัวสำหรับการปรับแต่งการปรับตาข่าย คุณมักจะไม่พบว่ามีแปดที่ใช้สำหรับการคำนวณบนตาข่ายแบบคงที่ การเปลี่ยนแปลงด้านพีชคณิตเชิงเส้นสำหรับ FEM แบบปรับตัวได้คืออะไร? วิธีที่ทื่อที่สุดที่ฉันสามารถนึกได้ก็คือการสร้างเมทริกซ์ระบบใหม่ทั้งหมดอย่างสมบูรณ์เมื่อใดก็ตามที่ตาข่ายถูกขัดหรือหยาบ หากการดัดแปลงตาข่ายเป็นการดำเนินการที่ไม่บ่อยนักเพียงพอค่าใช้จ่ายในการทำเช่นนั้นจะถูกตัดจำหน่ายในที่สุดเมื่อคำนวณส่วนที่เหลือ เราสามารถใช้ประโยชน์จากซอฟต์แวร์พีชคณิตเชิงเส้นแบบกระจาย (PETSc, Trilinos และอื่น ๆ ) ได้อย่างง่ายดายด้วยวิธีการนี้ วิธีการทู่นี้ใช้กันมากที่สุดหรือมีห้องสมุดที่จัดการเพื่อนำมาใช้ใหม่หรือปรับเปลี่ยนเมทริกซ์เก่าในระหว่างการปรับแต่ง? ท้ายที่สุดแล้วส่วนใหญ่ของตาข่ายและเมทริกซ์ที่เกี่ยวข้องจะไม่เปลี่ยนแปลงระหว่างการปรับตัวของตาข่าย

1
จะประมาณจำนวนเงื่อนไขของเมทริกซ์ขนาดใหญ่ได้อย่างไร
ฉันจะประมาณจำนวนเงื่อนไขของเมทริกซ์ขนาดใหญ่ได้อย่างไร GGGถ้า GGG เป็นการรวมกันของการแปลงฟูริเยร์ FFF (ไม่เหมือนกันหรือเหมือนกัน) ความแตกต่างแน่นอน RRRและเมทริกซ์ทแยงมุม SSS? เมทริกซ์มีขนาดใหญ่มากและไม่ได้เก็บไว้ในหน่วยความจำและมีให้ใช้งานในฐานะฟังก์ชันเท่านั้น โดยเฉพาะฉันมีเมทริกซ์ต่อไปนี้: Gμ=SHFHFS+μRHRGμ=SHFHFS+μRHRG_\mu=S^HF^HFS+\mu R^HR ฉันต้องการตรวจสอบความสัมพันธ์ระหว่าง μμ\mu และหมายเลขเงื่อนไข k(Gμ)k(Gμ)k(G_\mu). ฉันคิดว่าคนเราต้องการวิธีการวนซ้ำบางอย่าง? อย่างดีที่สุดจะมีโค้ด MATLAB บ้าง

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

2
ทำนายค่ารันไทม์ของพีชคณิตเชิงเส้นหนาแน่น
ฉันต้องการทำนาย runtimes สำหรับการดำเนินการพีชคณิตเชิงเส้นหนาแน่นบนสถาปัตยกรรมเฉพาะโดยใช้ไลบรารีเฉพาะ ฉันต้องการเรียนรู้รูปแบบที่ใกล้เคียงกับฟังก์ชั่น Fo หน้า: :Fop::F_{op} \;::\; ขนาดอินพุต→→ \rightarrow รันไทม์ สำหรับการดำเนินการเช่นเมทริกซ์ทวีคูณการเพิ่มองค์ประกอบที่ชาญฉลาดการแก้ปัญหารูปสามเหลี่ยม ฯลฯ ฉันสงสัยว่า runtimes เหล่านี้ส่วนใหญ่สามารถคาดการณ์ได้เนื่องจากความสม่ำเสมอของการทำงานเมื่อคุณมีขนาดเกินกว่าปัญหาที่พอดีกับแคช คำถาม: สมมติฐานนี้เป็นจริงหรือไม่? ฟังก์ชั่นรันไทม์มีแนวโน้มที่จะเกือบจะกำหนด? ฉันสามารถสันนิษฐานได้ว่าฟังก์ชั่นนี้จะเป็นพหุนามในขนาดของอินพุตหรือไม่ (เช่นฉันคาดหวังเมทริกซ์หนาแน่นคูณให้มีลักษณะเหมือนα n × k × mαn×k×m\alpha n\times k\times m สำหรับ An k×Bk เมตรAnk×BkmA_{nk}\times B_{km} และ αα\alpha ค่าสัมประสิทธิ์สเกลาร์บางค่า) มีงานก่อนหน้านี้ที่นี่ไหม? แผนปัจจุบันของฉันคือทำสี่เหลี่ยมกำลังถดถอยอย่างน้อย L1L1L_1regularizer ข้อเสนอแนะอื่น ๆ ? แก้ไข: เพื่อความชัดเจนฉันกำลังมองหา runtimes ไม่ใช่ FLOPs หรือตัวชี้วัดประสิทธิภาพทั่วไปอื่น ๆ …

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