Ters matrisin hesaplanması için en hızlı algoritma ve pozitif belirli simetrik matrisler için belirleyicisi nedir?


10

Pozitif belirli bir simetrik matris verildiğinde, ters matrisi ve determinantını hesaplamak için en hızlı algoritma nedir? İlgilendiğim problemler için matris boyutu 30 veya daha az.

  1. Yüksek doğruluk ve hız gerçekten gereklidir. (milyonlarca matris gerçekleştirilir)
  2. Her hesaplamada, ters matrisin sadece bir elemanı gereklidir. Teşekkürler!

Milyonlarca bu matrisi tersine çevirmek zorunda mısınız? Aksi takdirde, hız bir sorun olmamalıdır.
Wolfgang Bangerth

Açıklık için başlığınızı ve sorunuzu düzenledim. Herhangi bir hata yaptıysam, lütfen bana bildirin.
Geoff Oxberry

@Wolfgang Bangerth Evet, hız dikkate alınmalıdır.
siparişler

1
Ters matrisin hangi elemanına ihtiyaç olduğunu biliyor musunuz? Yoksa rastgele bir giriş olabilir mi?
01'de 43

2
@Orders Yorumunuz ve düzenlemeniz çelişkili gözüküyor: tersin bir elemanına mı yoksa hepsine mi ihtiyacınız var ?
Federico Poloni

Yanıtlar:


12

İlgilendiğim problemler için matris boyutu 30 veya daha az.

WolfgangBangerth'in belirttiği gibi, bu matrislerin çok sayıda (milyon, milyar) olmadığı sürece, matris inversiyonunun performansı genellikle sorun değildir.

Pozitif belirli bir simetrik matris verildiğinde, ters matrisi ve determinantını hesaplamak için en hızlı algoritma nedir?

Hız bir sorunsa, aşağıdaki soruları cevaplamanız gerekir:

  • Gerçekten tüm tersine ihtiyacınız var mı? (Birçok uygulamanın açık bir ters oluşturması gerekmez.)
  • Belirleyiciye gerçekten ihtiyacınız var mı? (Determinantlar nadirdir, ancak bilişimsel bilimde kesinlikle duyulmamıştır.)
  • Yüksek hassasiyete ihtiyacınız var mı? (Düşük doğruluk algoritmaları daha hızlı olma eğilimindedir.)
  • Olasılıksal bir yaklaşım yeterli midir? (Olasılıksal algoritmalar daha hızlı olma eğilimindedir.)

Küçük, pozitif belirli bir matrisi ters çevirme ve determinantını hesaplama probleminize standart cevap Cholesky ayrışması olacaktır. EğerA=LLT, sonra det(A)=i=1nlii2ve .det(A1)=i=1nlii2

Varsayarak olduğu ile , Choleskey ayrışma yaklaşık olarak hesaplanabilir , bir LU ayrıştırma yarısı maliyeti ile ilgili olan, flop. Ancak, böyle bir algoritma "hızlı" olarak değerlendirilmez. Bir randomize LU ayrıştırmaAnnn3/3(1) gerçekten çok sayıda matrisi hesaba katmanız gerekip gerekmediği, (2) çarpanlara ayırma gerçekten uygulamanızdaki sınırlayıcı adım ve (3) rastgele bir algoritma kullanımında ortaya çıkan herhangi bir hata kabul edilebilir. Matrisleriniz muhtemelen seyrek algoritmaların değerli olmayacak kadar küçüktür, bu nedenle daha hızlı algoritmalar için sadece diğer fırsatlar ek matris yapısı (ör., Bantlı) veya istismar problem yapısını (örn. Belki algoritmanızı akıllıca yeniden yapılandırabilirsiniz. bir matrisi ters veya determinantını hesaplamak için daha uzun süre gerekir). Etkili belirleyici algoritmalar kabaca sabit bir faktör içinde doğrusal bir sistemi çözmenin maliyetidir, bu nedenle doğrusal sistemler için kullanılan aynı argümanlar belirleyicilerin hesaplanması için de geçerlidir.


Sadece kısa bir not: eğer , tek bir eleman hesaplamak için biri sadece hesaplamalıdır inci sütun . Cholesky faktorizasyonu hesaplandıktan sonra, bu, tüm sıfırların bir rhs vektörüne göre ve satırında sadece bir tane ile ileri ve geri değiştirme ile yapılır . Hesaplama olarak kesilebilir yana kısa sürede bilgisayarlı edilmiştir, en iyi durum içindir için en kötü durum bir tam geri hesaplamak zorundadır ve ileri sübstitüsyonlar. B=A1bijjBjbijbnn=lnn2b11
Stefano M

@StefanoM Daha da iyisi, her zaman en iyi durumda olmanız için matrisinize hesaplamanın başlangıcından önce izin verebilirsiniz.
Federico Poloni
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.