การเพิ่มมาตรฐานเพื่อทำให้ SVD มีความเสถียรเท่าไร
ฉันใช้ SVD ของ Intel MKL ( dgesvdผ่าน SciPy) และสังเกตว่าผลลัพธ์จะแตกต่างกันอย่างมากเมื่อฉันเปลี่ยนความแม่นยำระหว่างfloat32และfloat64เมื่อเมทริกซ์ของฉันมีเงื่อนไขไม่ดี / ไม่เต็มอันดับ มีแนวทางเกี่ยวกับจำนวนขั้นต่ำของการทำให้เป็นมาตรฐานที่ฉันควรเพิ่มเพื่อให้ผลลัพธ์ที่ไม่ไวต่อการเปลี่ยนแปลงfloat32-> float64หรือไม่? โดยเฉพาะการทำ A = UDVTA=UDVTA=UDV^{T}ฉันเห็นว่า L∞L∞L_\infty บรรทัดฐานของ VTXVTXV^{T}Xย้ายประมาณ 1 เมื่อฉันเปลี่ยนความแม่นยำของระหว่างและfloat32float64L2L2L_2 บรรทัดฐานของ AAA คือ 10510510^5 และมีค่าลักษณะเฉพาะประมาณ 200 ศูนย์จากทั้งหมด 784 กำลังทำ SVD λ ฉัน+ AλI+A\lambda I + A กับ λ =10- 3λ=10−3\lambda=10^{-3} ทำให้ความแตกต่างหายไป