Sayısal kararlılığın sezgisel kontrolü


12

Sayısal olarak değerlendirmek istediğim bazı değişkenlerinin gerçek değerli bir işlevine sahip olduğumu varsayın . Genel olarak formülü ürünleri, rasyonelleri, transcendental fonksiyonları, vb. İçerebilir ve sayısal kararlılığını analitik olarak araştırmak uzun sürecektir. Ya da en azından pratikte bunu yapmak zaman alıcı olacaktır. Garantili kararlılıkla daha kısa bir eşdeğerim olmadığını varsayalım. Sayısal stabilitesini analiz etmek için bir metodik prosedür var mıx i f ff(x1,,xN)xiff. Bir bilgisayar cebir sistemi kullanılarak elde edilen keyfi kesin sonuçlarla karşılaştırmayı düşünüyorum. Fonksiyonun stdlib fonksiyonları ve tek veya çift kesinlik kullanılarak uygulanacağını varsayalım. Sonlu hassasiyette yaklaşımın kalitesini ölçmek için hangi miktarları karşılaştırmalıyım? Değişkenlerin kritik değerlerini nasıl belirlerim? Diğer kişilerin sonuçları kolayca yeniden üretebilmesi için derleyiciyi ve derleyici optimizasyonlarını nasıl seçebilirim? ... problem ayarının muhtemelen iyi yanıtlar vermek için genel olduğunu biliyorum. Ama yine de bunun bilgisayar biliminde yaygın bir sorun olduğunu düşünüyorum ve böyle bir analizi gerçekleştirmek için standartlar öneren referanslar olup olmadığını merak ediyorum.

Yanıtlar:


7

Aradığınız, "Otomatik hata analizi" olarak adlandırılan şeydir ve Higham'ın "Sayısal Algoritmaların Doğruluğu ve Kararlılığı" kitabının 26. Bölümü, SIAM Yayıncıları'nın konusudur.

Açıkladığı tekniklerden biri doğrudan arama optimizasyonunu kullanmaktır: sorununuzu bir optimizasyon problemi olarak formüle etmeye çalışın ve algoritma / formülünüzün doğruluğuyla ilgili bir miktarı en üst düzeye çıkaran veya en aza indiren katsayıları veya parametre değerlerini bulmak için optimizasyon algoritmasını kullanın. Gauss Eliminasyonundaki büyüme faktörü örneğini (matris bu büyüme faktörünü en üst düzeye çıkaran şey) veya kübik köklerini (önceki sorularınızdan birinde cevapladığım gibi) kullanır.

Bu kitabın bir kopyasını almanızı, giriş bölümlerini ve bu bölüm 26'yı ve içindeki referansları okumanızı tavsiye ederim.


3

ulp tarafından tüm girişler biraz rastgele bozularak işlevinizi birkaç kez değerlendirin (3 genellikle yeterlidir) . Üç sonucun standart sapması, size sayısal duyarlılığın kaba (ancak genellikle yeterli) bir ölçüsünü verecektir. Bunu doğrusallaştırmadan beklenen duyarlılıkla karşılaştırabilir ve bir kararlılık tahmini elde etmek için bölümü oluşturabilirsiniz.±1

Sayısal kararlılığın, belirli bir değerini değerlendirirken gerçek hatanın girişleri ulp ile değiştirirken hassasiyet analizinden beklenen hata ile ne kadar kötü olduğunu sorduğunu unutmayın ; ulps cinsinden ifade edilen ikinci hata problem koşulunu tanımlar. Kararlı bir algoritma için durum çok kötü olabilir (örnek: yakınında ) ve çok iyi koşullandırılmış bir işlev için kararlılık zayıf olabilir (örnek: yakınındaki ).± 1 1 / x x = 0 1 / ( 1 - x ) - 1 / ( 1 + x ) x = 0x±11/xx=01/(1x)1/(1+x)x=0


0

GertVdE'nin tanımladığı şey sayısal hatadır. Aradığınız şey bu olabilir, ancak sorunun başlığında belirtildiği gibi sayısal kararlılıkla aynı değildir . Sayısal kararlılık temel olarak girdi değişkenlerinizin yakın değerlerinin çıktının yakın değerlerini verip vermediğini sorar. Başka bir deyişle,orta derecede sabit tutar . Bunun için türevini analiz edebilir veya işleviniz kendi etki alanı üzerinde özelliklerinde çılgınca değişmezse, bunu bir grup çifti için deneyin .C f x , ϵ

|f(x+ε)f(x)|C|ε|
Cfx,ϵ

Ve fonksiyonlar kendi alanı üzerinde çılgınca değişiyorsa veya uygun bir türev yoksa ne yapılabilir? Başka teknikler var mı yoksa Monte Carlo yaklaşımıyla mı sonuçlanırız?
André

1
-1: Sayısal kararlılık değil durum kavramını açıklıyorsunuz.
Arnold Neumaier
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.