Apa definisi kerja Anda dari "semidefinite positif" atau "positif pasti"? Dalam aritmatika floating point, Anda harus menentukan semacam toleransi untuk ini.
Anda bisa mendefinisikan ini dalam hal nilai eigen yang dihitung dari matriks. Namun, pertama-tama Anda harus memperhatikan bahwa nilai eigen yang dihitung dari skala matriks linear dengan matriks, sehingga misalnya, matriks I dapatkan dengan mengalikan dengan faktor satu juta, nilai eigennya dikalikan satu juta. Apakah nilai eigen negatif? Jika semua nilai eigen lainnya dari matriks Anda positif dan pada urutan , maka secara efektif 0 dan tidak boleh diperlakukan sebagai nilai eigen negatif. Karena itu, penting untuk mempertimbangkan penskalaan. λ = - 1.0 10 30 λ = - 1.0Aλ=−1.01030λ=−1.0
Pendekatan yang masuk akal adalah dengan menghitung nilai eigen dari matriks Anda, dan menyatakan bahwa matriks adalah semidefinit positif numerik jika semua nilai eigen lebih besar dari, di mana adalah nilai eigen terbesar. λ maks−ϵ|λmax|λmax
Sayangnya, menghitung semua nilai eigen dari suatu matriks agak memakan waktu. Pendekatan lain yang umum digunakan adalah bahwa matriks simetris dianggap pasti positif jika matriks memiliki faktorisasi Cholesky dalam aritmatika floating point. Menghitung faktorisasi Cholesky adalah urutan besarnya lebih cepat daripada menghitung nilai eigen. Anda dapat memperluas ini ke semidefiniteness positif dengan menambahkan beberapa kecil identitas ke matriks. Sekali lagi, ada masalah penskalaan. Salah satu pendekatan cepat adalah melakukan penskalaan simetris dari matriks sehingga elemen diagonal adalah 1.0 dan menambahkan ke diagonal sebelum menghitung faktorisasi Cholesky. ϵ
Anda harus berhati-hati dengan ini, karena ada beberapa masalah dengan pendekatan tersebut. Sebagai contoh, ada keadaan di mana dan pasti pasti dalam arti bahwa mereka memiliki titik mengambang faktorisasi Cholesky, tetapi tidak memiliki faktorisasi Cholesky. Dengan demikian himpunan "floating point Cholesky berpola positif pasti matriks" tidak cembung! B ( A + B ) / 2AB(A+B)/2