Saya memiliki daftar dari matriks simetris yang saya perlu periksa untuk semi-definiteness positif (yaitu nilai eigennya non-negatif.)
Komentar di atas menyiratkan bahwa seseorang dapat melakukannya dengan menghitung nilai eigen masing-masing dan memeriksa apakah nilainya tidak negatif (mungkin harus mengurus kesalahan pembulatan.)
Menghitung nilai eigen cukup mahal dalam skenario saya, tetapi saya perhatikan bahwa perpustakaan yang saya gunakan memiliki tes yang cukup cepat untuk kepastian positif (yaitu, jika nilai eigen dari suatu matriks benar-benar positif.)
Karenanya idenya adalah, yang diberi matriks , satu tes jika adalah pasti positif. Jika tidak maka tidak positif semi-pasti, jika tidak maka seseorang dapat menghitung nilai eigen untuk memastikan itu memang positif semi-pasti. B + ϵ I B B
Pertanyaan saya sekarang adalah:
Apakah ada cara yang lebih langsung dan efisien untuk menguji apakah sebuah matriks positif semi-pasti, asalkan diberikan tes yang efisien untuk kepastian positif?
sumber
Jawaban:
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.0 1030 λ=−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 ) / 2A B (A+B)/2
sumber
Kerr, TH, " Menguji Matriks untuk Definiteness dan Contoh Aplikasi yang Memunculkan Kebutuhan ," AIAA Journal of Guidance , Control, and Dynamics, Vol. 10, No. 5, hlm. 503-506, September-Oktober, 1987.
Kerr, TH, “ Tentang Kesalahan Pernyataan Tes untuk Matriks Semidefinit Positif ,” AIAA Journal of Guidance, Control, and Dynamics , Vol. 13, No. 3, hlm. 571-572, Mei-Juni. 1990. (seperti yang terjadi pada perangkat lunak Navigasi & Target Pelacakan pada 1970-an & 1980-an menggunakan contoh tandingan)
Kerr, TH, " Kekeliruan dalam Pengujian Komputasi Matriks Positive Definiteness / Semidefiniteness ," Transaksi IEEE pada Aerospace dan Sistem Elektronik , Vol. 26, No. 2, hlm. 415-421, Maret 1990. [Daftar algoritma yang keliru yang ditemukan penulis secara rutin ada dalam navigasi kapal selam Angkatan Laut AS dan perangkat lunak sonobuoy pada akhir 1970-an dan awal 1980-an menggunakan contoh tandingan untuk menunjukkan masalah. ]
sumber