คำถามของคุณมีปัญหามากมาย
อย่าใช้การกำจัดแบบเกาส์ (การแยกตัวประกอบแบบ LU) เพื่อคำนวณอันดับตัวเลขของเมทริกซ์ การแยกตัวประกอบ LU ไม่น่าเชื่อถือสำหรับจุดประสงค์นี้ในการคำนวณเลขทศนิยม ให้ใช้การย่อยสลาย QR ที่มีอันดับ (เช่นxGEQPX
หรือxGEPQY
ใน LAPACK โดยที่ x คือ C, D, S หรือ Z แม้ว่ากิจวัตรเหล่านั้นจะยากต่อการติดตามดูที่คำตอบของ JedBrown สำหรับคำถามที่เกี่ยวข้อง ) หรือใช้ SVD (การสลายตัวของค่าเอกฐานเช่นxGESDD
หรือxGESVD
โดยที่ x คือ C, D, S หรือ Z อีกครั้ง) SVD เป็นอัลกอริทึมที่แม่นยำและเชื่อถือได้มากขึ้นสำหรับการกำหนดตำแหน่งตัวเลข แต่ต้องใช้การดำเนินการจุดลอยตัวมากขึ้น
อย่างไรก็ตามสำหรับการแก้ระบบเชิงเส้นนั้นการแยกตัวประกอบ LU (ด้วยการหมุนบางส่วนซึ่งเป็นการนำมาตรฐานไปใช้ใน LAPACK) มีความน่าเชื่อถืออย่างมากในทางปฏิบัติ มีบางกรณีทางพยาธิวิทยาที่ LU แยกตัวประกอบด้วยการหมุนบางส่วนไม่เสถียร (ดูการบรรยายที่ 22 ในพีชคณิตเชิงเส้นเชิงตัวเลขโดย Trefethen และ Bau สำหรับรายละเอียด) การแยกตัวประกอบ QR เป็นอัลกอริธึมเชิงตัวเลขที่มีเสถียรภาพมากขึ้นสำหรับการแก้ระบบเชิงเส้นซึ่งอาจเป็นสาเหตุที่ทำให้คุณได้ผลลัพธ์ที่แม่นยำเช่นนั้น อย่างไรก็ตามมันต้องใช้การดำเนินการจุดลอยตัวมากกว่าตัวประกอบ LU โดยปัจจัย 2 สำหรับเมทริกซ์จตุรัส (ฉันเชื่อว่า JackPoulson อาจแก้ไขตัวฉันได้) สำหรับระบบสี่เหลี่ยมผืนผ้านั้นการแยกตัวประกอบ QR เป็นทางเลือกที่ดีกว่าเพราะมันจะให้ผลเฉลยน้อยที่สุดกับระบบเชิงเส้นที่บั่นทอน SVD ยังสามารถใช้ในการแก้ปัญหาระบบเชิงเส้น แต่จะมีราคาแพงกว่าตัวประกอบแบบ QR
janneb ถูกต้องที่ numpy.linalg.svd เป็น wrapper รอบ ๆxGESDD
ใน LAPACK การย่อยสลายค่าเอกพจน์ดำเนินการในสองขั้นตอน อันดับแรกเมทริกซ์ที่จะย่อยสลายจะลดลงเป็นรูปแบบสองเหลี่ยม อัลกอริทึมที่ใช้ในการลดรูปแบบสองเหลี่ยมใน LAPACK อาจเป็นอัลกอริทึม Lawson-Hanson-Chan และใช้การแยกตัวประกอบ QR ในจุดเดียว การบรรยายครั้งที่ 31 ในพีชคณิตเชิงเส้นเชิงตัวเลขโดย Trefethen และ Bau ให้ภาพรวมของกระบวนการนี้ จากนั้นxGESDD
ใช้อัลกอริทึมหารและพิชิตในการคำนวณค่าเอกพจน์และเวกเตอร์เอกพจน์ซ้ายและขวาจากเมทริกซ์ bidiagonal ในการรับพื้นหลังในขั้นตอนนี้คุณจะต้องปรึกษาการคำนวณเมทริกซ์โดย Golub และ Van Loan หรือพีชคณิตเชิงเส้นเชิงตัวเลขประยุกต์โดย Jim Demmel
สุดท้ายคุณไม่ควรสร้างความสับสนให้ค่าเอกพจน์กับค่าลักษณะเฉพาะ ปริมาณสองชุดนี้ไม่เหมือนกัน SVD คำนวณค่าเอกพจน์ของเมทริกซ์ คลีฟโมเลอร์ของตัวเลข Computing กับ MATLABให้ภาพรวมที่ดีของความแตกต่างระหว่างค่าเอกพจน์และค่าลักษณะเฉพาะ โดยทั่วไปไม่มีความสัมพันธ์ที่ชัดเจนระหว่างค่าเอกพจน์ของเมทริกซ์ที่กำหนดและค่าลักษณะเฉพาะยกเว้นในกรณีของเมทริกซ์ปกติที่ค่าเอกพจน์เป็นค่าสัมบูรณ์ของค่าลักษณะเฉพาะ
dgesdd
สำหรับค่าSVD ที่แท้จริง ดังนั้นคำถามที่แท้จริงของคุณน่าจะเป็น "Lapack dgesdd ทำงานอย่างไร" และนั่นเป็นหัวข้อที่ค่อนข้างสวยสำหรับ stackoverflow