n v λ 0 A v = λ 0 v r 0 ‖ r n ‖ / ‖ r 0 ‖ < t o l x n - x ‖ x n - x n - 1 ‖. İlk kalıntı büyük olduğunu varsayalım , o zaman ancak hatası hala büyüktür. Bu durumda daha iyi bir hata göstergesi nedir? Mıiyi bir aday mı?
n v λ 0 A v = λ 0 v r 0 ‖ r n ‖ / ‖ r 0 ‖ < t o l x n - x ‖ x n - x n - 1 ‖. İlk kalıntı büyük olduğunu varsayalım , o zaman ancak hatası hala büyüktür. Bu durumda daha iyi bir hata göstergesi nedir? Mıiyi bir aday mı?
Yanıtlar:
Lütfen bir durdurma ölçütü tanımlamak için birbirini takip eden yinelemeler arasındaki farkı asla kullanmayın. Bu yakınsama için durgunluğu yanlış teşhis eder. Çoğu simetrik olmayan matris yinelemesi monoton değildir ve yeniden başlatma olmadan kesin aritmetik olarak GMRES bile aniden yakınsamadan önce rastgele sayıda yineleme (matrisin boyutuna kadar) için durağanlaşabilir. Bkz. Nachtigal, Reddy ve Trefethen (1993) .
Genellikle çözümümüzün doğruluğuyla, kalanın boyutundan daha fazla ilgileniriz. Spesifik olarak, yaklaşık bir çözüm ile kesin çözüm x arasındaki farkın karşılandığını garanti etmek isteriz | x n - x | < C bir kullanıcı tarafından belirtilen için c . Bir x n bularak bu elde edebilirsiniz ortaya çıkıyor ki | A x n - b | < C ε burada ε küçük tekil değer A nedeniyle,
burada değerinin A - 1'in en büyük tekil değeri (ikinci satır) olduğunu ve x'in A x = b'yi (üçüncü satır) tam olarak çözdüğünü kullandık .
En küçük tekil değerin doğru bir tahmini genellikle problemden doğrudan elde edilemez, ancak konjugat gradyan veya GMRES yinelemesinin bir yan ürünü olarak tahmin edilebilir. Büyük özdeğerler ve tekil değerlerin tahminler genellikle sadece birkaç tekrardan sonra oldukça iyi olmasına rağmen, en küçük özdeğer / tekil değer doğru bir tahmin, söz konusu Not yakınsama ulaşıldığında genellikle sadece elde edilir. Yakınsama öncesinde, tahmin genellikle gerçek değerden önemli ölçüde daha büyük olacaktır. Bu, doğru toleransı c ϵ tanımlayabilmeniz için denklemleri gerçekten çözmeniz gerektiğini gösterir . Kullanıcı tarafından sağlanan doğruluğu alan otomatik yakınsama toleransı cçözüm için ve en küçük tekil değeri Krylov yönteminin mevcut durumu ile tahmin eder, çünkü ϵ tahmini gerçek değerden çok daha büyüktür.
-ksp_monitor_singular_value
herhangi bir PETSc programı kullanılarak izlenebilir . Koddan tekil değerleri hesaplamak için KSPComputeExtremeSingularValues () öğesine bakın .-ksp_gmres_restart 1000
. PETSc'de).Bu soruna bakmanın bir başka yolu, araçları ayrık ters problemlerden, yani veya min | | A x - b | | 2 burada bir çok kötü durumdaki (yani, ilk ve son tekil değeri arasındaki oran σ 1 / σ n büyüktür).
Burada, durdurma ölçütünü seçmek için birkaç yöntemimiz var ve yinelemeli bir yöntem için, L-eğrisi ölçütünü öneriyorum çünkü sadece zaten mevcut olan miktarları içeriyor (YASAL UYARI: Danışmanım bu yönteme öncülük etti, bu yüzden kesinlikle o). Bunu yinelemeli bir yöntemle başarıyla kullandım.
Fikir, artık normu izlemek ve çözelti normu η k = | | x k | | 2 , burada x k , k 'yinelemesidir. Yinelediğinizde, bu, bir log (rho, eta) grafiğinde bir L şeklini çizmeye başlar ve bu L'nin köşesindeki nokta en uygun seçimdir.
Bu, köşeyi geçtiğinizde (örn. gradyanına bakarak) göz kulak olduğunuz bir ölçüt uygulamanıza ve ardından köşede bulunan yinelemeyi seçmenize olanak tanır .
Bunu yaptığım şekilde son 20 yinelemeyi saklamak gerekiyordu ve eğer gradyan
Köşeyi bulmak için daha ayrıntılı yöntemler de vardır ve bunlar daha iyi çalışır, ancak önemli sayıda yinelemenin depolanmasını gerektirir. Onunla biraz oynayın. Matlabdaysanız, bazılarını uygulayan Regularization Tools (Düzenleme Araçları) araç kutusunu kullanabilirsiniz (özellikle "köşe" işlevi geçerlidir).
Bu yaklaşımın özellikle büyük ölçekli problemler için uygun olduğunu unutmayın, çünkü fazladan hesaplama zamanı çok küçüktür.