Seyrek bir lineer sistem çözücü seçerken hangi yönergeleri izlemeliyim?


49

Seyrek doğrusal sistemler uygulamalarda artan sıklık ile ortaya çıkıyor. Birinin bu sistemleri çözmek için seçebileceği çok fazla rutini var. En üst düzeyde, doğrudan (örneğin, seyrek Gauss ortadan kaldırılması veya Cholesky ayrışımı, özel sipariş algoritmaları ve çok yönlü yöntemler) ve yinelemeli (örneğin GMRES, (iki) eşlenik gradyan) yöntemleri arasında bir havza vardır.

Bir doğrudan mı yoksa yinelemeli bir yöntem mi kullanılacağı nasıl belirlenir? Bu seçimi yaptıktan sonra, kişi belirli bir algoritmayı nasıl seçer? Simetrinin sömürülmesini zaten biliyorum (örneğin, seyrek bir simetrik pozitif kesin sistem için eşlenik gradyan kullanın), ancak bir yöntem seçerken dikkate alınması gereken başka düşünceler var mı?

Yanıtlar:


33

Yinelemeli çözücüleri seçerken önemli olan operatörün spektrumudur, bu makaleyi görün . Ancak, çok fazla olumsuz sonuç var, bu yazının tüm problemler için yinelemeli çözücünün kazanmadığı ve bu yazışmalarda herhangi bir spektrum için GMRES için herhangi bir yakınsama eğrisi elde edebildiklerini ispatladıklarını görün. Bu nedenle, birkaç izole edilmiş durum dışında yinelemeli çözücülerin davranışını tahmin etmek imkansız görünüyor, Bu nedenle, en iyi seçenek, aynı zamanda doğrudan çözücüleri olan PETSc gibi bir sistem kullanarak hepsini denemektir .


2
"Yapabileceğin her şeyi at" benim alışkın olduğum bir tavsiyeydi. :) Bağlandığınız üçüncü makale daha önce görmediğim bir şey; Bunun için teşekkürler!
JM

2
Matt'in harika bir cevabı var, ancak geldiği topluluk bağlamında almanız gerekiyor (büyük ölçekli bilimsel bilgi işlem). Küçük problemler için (örneğin, yüz binden fazla bilinmeyen), sorunun kesinlikle eliptik olmadığı durumlarda doğrudan çözücüler yinelemeli yöntemlerden çok daha iyi performans gösterir. Literatürde, sizi biraz utandırıcı bir başlangıç ​​stratejisine yönlendirecek iyi bir genel makale görmedim.
Aron Ahmadia

5
Aron'un tahmini iyi ancak ağır bir şekilde doluma bağlı çünkü seyrek doğrudan yöntemler genellikle sabrı tüketmeden önce belleği tüketiyor.
Matt Knepley

18

Doğrudan ve yinelemeli yöntemler arasındaki seçim, hedeflere ve eldeki probleme bağlıdır.

Direct yöntemleri için şunu not edebiliriz:

  • Katsayısı matris seyrek sistemler egzoz bellek gereksinimleri için hesaplama ve Mayıs boyunca lineer sistem değişiklikleri ve dolgu dolayı iş çabayı artırmak
  • Yararlı sonuçlar vermek için tamamlamanız gerekir
  • Birden fazla sağ taraf varsa, faktoringleştirme sonraki adımlarda tekrar kullanılabilir
  • Sadece doğrusal sistemleri çözmek için kullanılabilir.
  • Nadiren başarısız olur.

Yinelemeli yöntemler için şunu not edebiliriz:

  • Amaç, yalnızca az sayıda yinelemeden sonra kısmi bir sonuç vermektir.
  • Çözüm çabası, aynı problem için doğrudan yöntemlerden daha az olmalıdır.
  • Depolama açısından ekonomik (dolum yok)
  • Genellikle programlanması kolaydır.
  • Bilinen bir yaklaşık çözüm kullanılabilir.
  • Bazen hızlılar ve bazen değiller (bazen birbirlerinden bile farklılar).
  • Karmaşık problemler için, yinelemeli yöntemler doğrudan yöntemlere kıyasla oldukça az dayanıklıdır.

Doğrudan veya yinelemeli yöntemleri ne zaman kullanacağınız için yönergeler?

  • Katsayılı matris seyrek olduğunda ve doğrudan yöntemler seyrekliği verimli bir şekilde kullanamadığında yinelemeli yöntemler (dolgu oluşturmadan kaçının).
  • Birden fazla sağ taraf için doğrudan yöntemler.
  • Kesinlik daha az endişe duyuyorsa yinelemeli yöntemler daha verimli olabilir
  • Doğrusal olmayan denklem sistemleri için yinelemeli yöntemler.

8
O(n)O(n)O(n2)O(1)

8

Verdiğim cevaplarla tamamen aynı fikirdeyim. Tüm yinelemeli yöntemlerin bir tür ilk tahmin gerektirdiğini eklemek istedim. Bu ilk tahmininin kalitesi genellikle seçtiğiniz yöntemin yakınsama oranını etkileyebilir. Jacobi, Gauss Seidel ve Başarılı Aşırı Gevşeme gibi yöntemler, her adımda mümkün olduğu kadar fazla hatayı "düzeltmek" için çalışıyor (ayrıntılar için bu makaleye bakın).) İlk birkaç adım, yüksek frekans hatasını oldukça hızlı bir şekilde azaltır, ancak düşük frekans hatası, düzeltilmesi için çok daha fazla dikkat gerektirir. Bu, bu yöntemler için yakınsaklığı yavaşlatan şeydir. Bu gibi durumlarda, düşük frekans hatasını çözerek (örneğin aynı problemi daha kalın bir ağda çözerek), sonra daha yüksek frekans hatasını (örneğin daha hassas bir ağda) çözerek yakınsamayı hızlandırabiliriz. Eğer bu kavramı bölünerek ve ele geçirerek tekrar tekrar uygularsak, Çoklu-ızgara yöntemi denilen şeyi elde ederiz. Doğrusal sistem simetrik olmasa bile, çözücünün yakınlaşmasını hızlandırabilen herhangi bir nonsülerüler seyrek matris sistemi (örneğin cebirsel çoklu ızgara yöntemi) için alternatif çoklu ızgara yönteminin uygulamaları vardır. Bununla birlikte, paralel sistemler üzerindeki ölçeklenebilirlikleri, pek çok araştırmanın konusudur..


5
Bu cevap, multigrid'in etkinliğinin iyi bir ilk tahmin bulmaktan çıktığı izlenimini veriyor gibi görünüyor. Gerçekte, ilk tahmin doğrusal problemler için küçük bir endişedir ve gerçekten sadece Tam Multigrid için bir endişedir. Multigrid, spektral ayrılma nedeniyle çalışır. Multigrid yapmanın zor problemler için iyi performans göstermesinin önemli bir zorluk olduğunu unutmayın. Multigrid paralel olarak oldukça iyi çalışıyor, birkaç Gordon Bell ödülünün ana bileşeni ve günümüzün en büyük makinelerinde yüksek verimlilikle çalışan birkaç açık kaynaklı paket oldu. GPU uygulamaları için CUSP kütüphanesine bakın.
Jed Brown

Çoğu zaman rastgele bir ilk tahmin yeterlidir. Lanczos algoritması kullanarak özdeğerlerin çıkarılmasında rasgele bir başlangıç ​​/ yeniden başlatma vektörü yardımcı olur. Lanczos Algoritması'nda zaman zaman yeniden başlatmalar oluyor.
AnilJ

3

Sorunuzda eksik olan önemli bir bilgi var: matris nereden kaynaklanıyor? Çözmeye çalıştığınız sorunun yapısı, bir çözüm yöntemi önerme potansiyeline sahiptir.

Matrisiniz pürüzsüz katsayılara sahip kısmi bir diferansiyel denklemden kaynaklanıyorsa, geometrik bir multigrid yöntemi, özellikle üç boyutta yenmek zor olacaktır. Eğer probleminiz daha az düzenliyse, cebirsel multigrid iyi bir yöntemdir. Her ikisi de genellikle Krylov-space yöntemleriyle birleştirilir. Diğer verimli çözücüler hızlı çok kutuplu yöntemlerden veya hızlı Fourier dönüşümünden elde edilebilir.

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.