Küçük sıralı çapraz güncellemeyle sistemi çözme


9

Orijinal büyük, seyrek doğrusal sisteme sahip olduğumu varsayalım: Ax0=b0. Şuan bende yokA1 A, faktörü veya herhangi bir şekilde ayrışmasını önlemek için çok büyük olduğundan A, ama benim çözümüm olduğunu varsayalım x0 yinelemeli bir çözümle bulundu.

Şimdi, A'nın köşegenine küçük bir sıra güncellemesi uygulamak istiyorum (köşegen girişlerin birkaçını değiştirin): (A+D)x1=b0 nerede Ddiyagonal matrisi çoğunlukla köşegeninde 0 ve birkaç sıfır olmayan değerdedir. Eğer olsaydımA1Tersine bir güncelleme uygulamak için Woodbury formülünden yararlanabilecektim. Ancak, bu mevcut değil. Tüm sistemi tekrar tekrar çözmek için yapabileceğim kısa bir şey var mı? Belki bir önkoşul bulmamın bir yolu var mıM ki bu kolay \ tersine çevrilebilir, öyle ki MA1A0, eğer sahip olsaydım tek yapmam gereken x0 geçerli M1 ve yinelemeli bir yöntem birkaç / birkaç yinelemede birleşir mi?


İçin iyi bir ön koşullayıcı ile mi başlıyorsunuz? Ave nasıl güncelleneceğini bilmek ister misiniz? Güncelleme ne sırada? (Bir rütbe1000 boyut matrisine kıyasla güncelleştirme "küçük" 109ancak yineleme sayısı açısından küçük değildir.)
Jed Brown

A büyüklüğünde 106 için 107ve güncelleme <1000 (muhtemelen <100) öğedir. Gerçekten iyi çalışan A için çapraz tip bir önkoşul kullanıyorum, bu yüzden bu güncelleme önemsiz olacak, ama yeni sistemi sıfırdan çözmek yerine yapabileceğim daha iyi bir şey olup olmadığını merak ediyordum.
Costis

2
Bir sistemin çözümü size bu konuda çok şey anlatmaz. Aynı sistemi birden çok kez çözerseniz, bu vektörler (ve / veya ilişkili Krylov uzayları) üzerindeki ters harita, yakınsamayı hızlandırmak için kullanılabilecek bazı bilgiler verir. Her durumda kaç sistemi çözüyorsunuz?
Jed Brown

Şu anda sadece bir RHS (b vektör) A değiştirmeden önce matris A.
Costis

Yanıtlar:


4
  1. İki matrisin sütunlarına kaydet B ve C tüm vektörler bj önceki yinelemelerde ve sonuçlarda matrisi uyguladığınız cj=Abj.

  2. Her yeni sistem için (A+D)x=b (veya Ax=b, bu özel durum D=0), aşırı belirlenmiş doğrusal sistemi yaklaşık olarak çözer (C+DB)ybörneğin, satırların (muhtemelen tümü) bir alt kümesini seçerek ve yoğun bir en küçük kare yöntemini kullanarak. Yalnızca seçilen bölümünC+DBtoplanması gerekiyor; yani bu hızlı bir işlem!

  3. Koymak x0=By. Bu, çözme için yinelemeyi başlatmak için iyi bir başlangıç ​​yaklaşımıdır.(A+D)x=b. Başka sistemlerin işlenmesi gerektiğinde, matrisleri genişletmek için bu yeni yinelemede matris vektör ürünlerini kullanınB ve C elde edilen alt sistemde.

Eğer matrisler B ve C ana belleğe sığmayın, saklayın Bseçin ve önceden satırların alt kümesini seçin. Bu, çekirdeğin ilgili kısmını çekirdekte tutmanıza izin verirB ve C en küçük kareler sistemini oluşturmak için gerekli ve x0 tek geçişle hesaplanabilir B çok az çekirdek bellek kullanımı.

Sıralar, tam problemin yaklaşık olarak kaba bir takdirine karşılık gelecek şekilde seçilmelidir. Toplam beklenen matris vektörü çarpım sayısından beş kat daha fazla satır almak yeterli olmalıdır.

Düzenleme: Bu neden çalışıyor? Yapım gereği, matrislerB ve C ile ilgili C=AB. Altuzay sütunları tarafından yayılmışsaB kesin çözüm vektörünü içerir x (nadir fakat basit bir durum) x forma sahip x=By bazı y. Bunu denklem tanımlayıcıya koymakx denklemini verir (C+DB)y=b. Böylece bu durumda, yukarıdaki işlem başlangıç ​​noktası olarak verir.x0=By=xkesin çözüm budur.

Genel olarak, kimse bekleyemez x sütun uzayda yalan söylemek B, ancak oluşturulan başlangıç ​​noktası, bu sütun alanındaki en yakın nokta olacaktır. x, seçilen satırlar tarafından belirlenen bir metrik olarak. Dolayısıyla mantıklı bir yaklaşım olması muhtemeldir. Daha fazla sistem işlendikçe, sütun alanı büyür ve yaklaşıklığın çok daha fazla gelişmesi muhtemeldir, böylece kişi daha az ve daha az yinelemede birleşmeyi umabilir.

Edit2: Oluşturulan alt uzay hakkında: Bir kişi her sistemi bir Krylov yöntemiyle çözerse, ikinci sistem için başlangıç ​​noktasını almak için kullanılan vektörler ilk sağ tarafın Krylov alt uzayını kapsar. Böylece, bu Krylov alt alanı ikinci sisteminizin çözümüne yakın bir vektör içerdiğinde iyi bir yaklaşım elde edilir. Genel olarak, vektörler,(k+1)st sistemi ilk Krylov altuzayı içeren bir alana yayılır k sağ taraf.


Teşekkürler, Prof. Neumaier. Bunu deneyeceğim. Bunun nasıl çalıştığına dair bana kısa bir açıklama yapabilir misiniz?
Costis

Ayrıca, aynı sistemi birçok farklı RHS vektörü için çözmek istersem ne olur? yaniAx0=b0, Ax1=b1, Ax2=b2Önceki çözücülerden sonra gelenleri hızlandırmak için kullanabileceğim herhangi bir bilgi var mı?
Costis

@Costis: Aynı matrise sahip bir çözüm sadece özel durumdur D=0genel sorunun. İlk sorunuz için düzenlemeye bakın.
Arnold Neumaier

@Costis: 2. adıma biraz daha ayrıntı ekledim. - Uygulamayı yazarsanız, lütfen bir ön baskı gönderin.
Arnold Neumaier

Açıklama için teşekkürler! Neden aşırı belirlenmiş sistemi çözemiyorum?(C+DB)ybQR çarpanlara ayırma tabanlı bir yaklaşım kullanarak ve sadece bir alt küme yerine tüm satırları kullanarak? C ve B sütunlarının sayısı arttıkça, işlemin daha hızlı çalışmasını sağlamak için bazı satırlardan kurtulmak zorunda kalabilirim. Elbette, sistemin bir açıklamasını yazacağım ve size e-postayla göndereceğim. Aslında en genel durumdan daha iyi çalışabilecek uygulamaya özel bir plan bulmanın mümkün olduğunu düşünüyorum. Teşekkürler!
Costis
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.