Kara kutu işlevinin süreksizliklerini bulmanın en iyi yolu nedir?


20

Bu soru için daha önce sorduğum Mathematics Stack Exchange'den daha iyi bir yer olabileceği öne sürüldü .

Birinin belirli bir aralıkta herhangi bir yerde (ucuz olarak) değerlendirilebilen ve gürültüsüz (kayan nokta tanecikliği hariç ) kara kutu fonksiyonuna sahip olduğunu varsayalım . Bu işlevin süreksizliklerini bulmanın en iyi yolu ne olurdu? Kaç tane süreksizliğin olabileceğini ve hiçbirinin olmayabileceğini bilmiyorum.[a,b]

Bazı basit yöntemleri düşünebilirim (düzgün örnekleme, numuneler arasında büyük farkların olduğu yerlerde hassaslaştırma, ...), ama belki daha iyi bir yol var mı?

İşlev "makul" dir, çünkü en fazla sonlu çok fazla süreksizliğe sahip olduğunu varsayabiliriz, daha yüksek türevler için de aynıdır, küçük patolojik süreksizliklerin kaçırılıp gözden kaçırılmadığını umursamıyorum ... (uygulama 1d işlevlerinin otomatik olarak çizilmesidir) .

-

Cevap veren herkese teşekkürler, özellikle Pedro; Pachón, Platte ve Trefethen'de açıklanan yöntem bana en iyi yaklaşım gibi görünüyor, bu yüzden şimdi uygulamaya koyuyorum


Önerilen yöntemlerden herhangi birinin
1x1x
JM 5

@JM: Uygulamayı bitirdiğimde bu işlevin bir grafiğini ekleyeceğim.
n00b

@ n00b: Bu konsepti faydalı bulabilirsiniz. : mathoverflow.net/q/165038/14414
Rajesh Dachiraju

Yanıtlar:


18

Matlab kullanıyorsanız, Chebfun projesiyle ilgilenebilirsiniz . Chebfun bir işlevi alır, örnekler ve onu polinom interpolant olarak temsil etmeye çalışır. İşlevinizin süreksizlikleri varsa, Chebfun bunları splitting onkomutla algılayabilmelidir . Burada bazı örnekler bulabilirsiniz .

Altta yatan algoritmalarla ilgileniyorsanız, iyi bir referans Pachón, Platte ve Trefethen'in " Piecewise Smooth Chebfuns " kağıdıdır .


Teşekkürler Pedro, Chebfun'u çok iyi biliyorum, ama çok büyük (ve Matlab lisansı ile büyük bir örtük maliyetle geliyor). Bu yüzden kendime uygulayacağım bu problem için gerçekten küçük ve sıkı bir algoritma arıyorum.
n00b

@ n00b: İyi nokta. Kağıda algoritmaları tanımlayan bir referans ekledim, örneğin kenar tespiti için.
Pedro

Ah, mükemmel! Bu makaleyi görmemiştim ve beklentilerimin aksine, Chebfun süreksizlik bulucusunun aslında Chebfuns kullanmadığı anlaşılıyor - bu yüzden oldukça kullanışlı görünüyor. Dikkatlice okuyacağım ve ilgili kodu inceleyeceğim ....
n00b

11

Chebfun algoritmasının daha pratik görünmesi gerektiğinden şüpheleniyorum, ancak süreksizliklerin, yani ayrık dalgacık dönüşümünün tespit edilmesinin bir yolundan bahsetmek gerekiyor. Bu Mathematica dokümantasyon sayfasına bakarak nasıl çalıştığı hakkında bir fikir edinebilirsiniz , bkz. Bölüm> Uygulamalar> Süreksizlikleri ve Kenarları Algılama.

f


8

Ağırlıklı Temelde Salınımlı Olmayan (WENO) yöntemler, sonlu hacim ve fark yöntemlerindeki süreksizlikleri tespit etmek için "pürüzsüzlük göstergeleri" kullanır. Pedro'nun verdiği Chebfun tanımından, genel fikir aynı gibi görünüyor: bir dizi enterpolasyon polinomu inşa edin ve bunları bir miktar pürüzsüzlük hesaplamak için kullanın.

Bkz. GS Jiang ve CW Shu, Ağırlıklı ENO şemalarının verimli uygulanması, J.Comput.Phys., Cilt. 126, sayfa 202--228,1996.


5

@Pedro ile birlikte, kenar algılama algoritmalarına da bakardım. Süreksizlik, türev üzerinde bir sonsuzluktur, bu nedenle giderek daha ince bir ağa ve ilgilenen hedefleme bölgelerine bakmayı düşünün.

Sürekli bir fonksiyonun türevine sonlu fark yaklaşımı, ağ rafine edildiğinde azalmalıdır. Kafesler arasındaki türev için sonlu fark sonucunun karşılaştırılması, daha sonra gradyandaki süreksizliklere işaret eden sapmaları ortaya çıkarabilir.

Düzenleme: Tamam, bu yüzden bir süreksizlik sonsuz bir türevi olsa da, sonsuz bir türev her zaman bir süreklilik değildir (bir örnek işaret için teşekkürler @ n00b). gibi bir örnek içinf(x)=sign(x)|x|x=0hx0


1
Sorunun bir inceliği, türevde bir süreksizliğin sonsuz olduğu görülse de, bunun tersi doğru değildir - (x) * sqrt (| x |) fonksiyon işareti x = 0'da mükemmel bir şekilde süreklidir, ama türev orada sonsuz
n00b

Ayrıca, "herhangi bir sürekli işlevin yeterince küçük ölçekte pürüzsüz olması gerektiği" yorumuna katılmıyorum. Pürüzsüzlük sürekli türevlerle ilgilidir; orijinal işlevin sürekliliği gerekli bir koşuldur, ancak yeterli değildir.
Geoff Oxberry

1
@ GeoffOxberry: bu ifade kaldırıldı. FD'de makul bir sonuç, ancak analitik olarak değil.
Phil H
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.