Düzensiz örneklenmiş bir işlevi sayısal olarak nasıl ayırt edebilirim?


21

Standart sonlu fark formülleri , eşit aralıklı noktalarda fonksiyon değerlerine sahip olduğunuz beklentisi altında bir türevi sayısal olarak hesaplamak için kullanılabilir , böylece bir sabittir. Ya eşit olmayan şekilde aralıklı noktalarım varsa, h şimdi bir çift bitişik noktadan diğerine değişir. Açıkçası hala bir birinci türeve hesaplayabilir f ' ( x ) 1s x k + 1 - x kf(xk)hxk+1xkh, ancak daha büyük mertebelerde ve ızgara büyüklüğündeki değişime uyum sağlayabilecek doğruluk derecelerinde sayısal farklılaşma formülleri var mı?f'(x)1hk[f(xk+1)-f(xk)]


7
Her zaman puanlarınızdan geçen (parçalı) bir polinom interpolant inşa edebilir ve sonra bunu ayırt edebilirsiniz.
JM

Veya, sonlu fark formülleri sadeleştirmesi olmadan yeniden yapılandırabilirsiniz . Çoğu zaman bunun entegrasyon için yapılması gerekir, ancak JM'nin önerisinin daha istikrarlı olması muhtemeldir. h=xk+1-xk
rcollyer

Bu ne tür bir işlev?
mbq

Bu soruyu istendiğinde, örneğin logaritmik aralıklı değerleri örneklenen bir fonksiyonudur komik sonuçlar verir ve bunun üzerinde bir kontrol istediği, ancak günlük-dönüştürülmüş veriler ikinci türevinin hesaplanması. Artı, mümkün olduğunca genel bir soru soracağımı düşündüm. xk=x0δk
David Z

1
Endişelendiğim kadarıyla, sadece birinci ve ikinci türevler için işe yarayan bir şey, soruya mükemmel bir cevap olacaktır. Birisi varsa genel bir cevaba izin vermek için yaptığım soruyu yazdım, ancak uygulamada elbette ki en faydalı olan ilk ve ikinci türevler.
David Z,

Yanıtlar:


21

JM'nin yorumu doğru: enterpolasyon yapan bir polinom bulabilir ve ayırt edebilirsiniz. Bu tür formülleri elde etmenin başka yolları da var; tipik olarak hepsi katsayılar için bir van der Monde sisteminin çözümüne yol açar . Bu yaklaşım sonlu fark şablonu çok sayıda nokta içerdiğinde problemlidir, çünkü Vandermonde matrisleri şartsız hale gelir. Fornberg tarafından sayısal olarak daha istikrarlı bir yaklaşım geliştirildi ve daha açık ve genel olarak ikinci bir makalesinde açıklandı .

İşte herhangi bir puan türevi için herhangi bir sıra türevi için sonlu bir fark yaklaşımının katsayılarını hesaplamak için Fornberg'in metodunu uygulayan basit bir MATLAB betiği . İyi bir açıklama için, sonlu fark yöntemleri hakkındaki LeVeque'in metninin 1. Bölümüne bakınız.

FD formülleriyle ilgili biraz daha: 1D kılavuzunuz olduğunu varsayalım. Bir dizi FD formülü belirlemek için tüm ızgara noktaları kümesini kullanırsanız, ortaya çıkan yöntem, tüm ızgara boyunca enterpolasyon yapan bir polinom bulmaya ve bunu ayırt etmeye eşdeğerdir. Bu yaklaşım, spektral kollokasyon olarak adlandırılır. Alternatif olarak, her bir ızgara noktası için sadece birkaç komşu nokta kullanarak bir FD formülü belirleyebilirsiniz. Geleneksel sonlu fark yöntemlerinde yapılan şey budur.

Aşağıdaki yorumlarda belirtildiği gibi, çok yüksek dereceli sonlu farkların kullanılması, eğer noktalar dikkatlice seçilmezse salınımlara (Runge fenomeni) neden olabilir.


3
Öte yandan, enterpolasyonlu polinomları kullandığınızda, verileriniz yeterli derecede yapılandırılmışsa, her zaman Runge'nin fenomenleri gibi olaylarla ilgili olanları hatırlaması gerekir. Parçalanmış polinomların buna daha az duyarlı olabileceğini söyleyebilirim ...
JM

1
Acaba Koev'in çalışması ve Fornberg'in tekniğiyle ilgili olabilir mi?
David Ketcheson

1
İlginçtir ki, Fornberg'in formülleri ile interpolasyon polinomunu oluşturmak için klasik Neville yöntemine dayanan Lyness ve Moler tarafından geliştirilen daha önceki formüller arasında benzerlik var gibi görünmektedir . Aslında, farklı gösterimde aynı formüller olabilir, ancak tam olarak kontrol etmedim.
JM,

2
Çok noktalı polinom interpolasyonu, iyi şartlandırılmış özel nokta dağılımları gerektirir. Genel olarak, tek biçimli olmayan nokta dağılımları için enterpolasyon yapılması ve daha sonra enterpolasyon polinomunu farklılaştırması tavsiye edilmez, çünkü yüksek derecede salınımlı olabilir (JM tarafından belirtildiği gibi "Runge fenomeni" düşünün). İhtiyaçlarınıza bağlı olarak, birçok pratik amaç için yaklaşmakta olan türevlerin yaklaşım problemine iyi cevaplar verebilecek olan sadece kübik spline kullanmak daha iyi bir fikir olabilir.
Allan P. Engsig-Karup,

1
Güzel cevap Sadece bilgi için, bu makale Fornberg'in alternatif bir yaklaşımını sunmaktadır. Aynı prensibi izler, ancak farklı bir algoritma verir.
davidhigh


2

Yukarıdaki cevaplar, kullanmanız için bir kod vermeniz açısından harika, ancak teori açısından iyi değil. Eğer enterpolasyon yapan polinomlara daha derinden dalmak istiyorsanız, bu teorik işleme bir kaç somut örnekle bakınız:

Singh, Ashok K. ve BS Bhadauria. "Lagrange enterpolasyon formülünü kullanarak eşit olmayan alt aralıklar için sonlu fark formülleri." Uluslararası Matematik ve Analiz Dergisi 3.17 (2009): 815-827. ( PDF'ye bağla )

Yazarlar , 3, 4 ve 5 noktalı enterpolasyon yapan polinomları ve ayrıca birinci, ikinci ve üçüncü türevlerini hesaplamak için Lagrangian Interpolation ( Wikipedia makalesine bakınız ) kullanır. Herhangi bir sonlu fark şeması kullanırken göz önünde bulundurulması gereken önemli olan kesme hatası ifadeleri de vardır. Ayrıca N noktaları kullanarak enterpolasyon yapan polinomları hesaplamak için genel bir formüle sahiptirler .

Lagrangian enterpolasyon polinomları kullanışlıdır, çünkü bunlar ve bunların türevleri enterpolasyon yaptığınız alanda çok doğru olabilir ve düz bir ızgara aralığı varsayılmazlar. Lagrangian enterpolasyon yapan polinomların doğası gereği, hiçbir zaman ızgara noktalarından daha fazla türev siparişi alamazsınız.

Bence bu sorunun cevabını iyi cevaplıyor çünkü alıntı yaptığım kağıdın, doğası gereği düzensiz ızgaralar için olan ve sadece şablonunuza eklediğiniz ızgara noktalarının sayısıyla sınırlanan, keyfi olarak yüksek dereceli sonlu fark programları için formülleri var. Bu makalede ayrıca, Lagrangian enterpolasyonlu polinom planını düşündüğünüz diğer planlara göre değerlendirmenize yardımcı olacak olan kesme hatası için genel bir formül vardır. Yazarın makalesinde Fornberg'in yöntemiyle aynı sonuçları vermelidir. Onların katkısı gerçekten sadece birkaç örnekten bahsediyor ve yararlı bulabileceğiniz hatanın bir tahminini veriyor.

Ben gösterdi kağıdı hem bulundu ve kendi araştırma için yararlı olduğu Fornberg çalışmalarını.


1
açıklamak zorunda olduğum için üzgünüm, fakat alıntı yapılan referansın garip görünüyor - korkunç formüller kullanıyorlar ve sadece birkaç özel durumu çözüyorlar. Buna karşın, Fornberg genel problemi basit bir algoritma vererek çözdü ve bu zaten 80'lerde. Buraya
davidhigh

genel sorunu çözen başka bir makale burada
davidhigh 27:15

2
ve bu makaleye saygısızlık etmek için son bir yorum. "Mükemmel bir teorik muamele" de, 9 referansa sahip olamazsınız; burada 7 tanesi kendi çalışmanızı, diğeri ise genel bir sayısal analiz kitabına atıfta bulunur. En azından konuyu kendiniz icat etmediyseniz, bu yazarların sahip olmadığı.
davidhigh,

Kesinlikle haklısın. Geliştirilebilir olsa da, formüllerin korkunç olduğunu söyleyemem. Özel durumlar, testler / karşılaştırmalar olarak oldukça iyidir ve Fornberg'inkiyle aynı olması gereken genel bir formül verir.
jvriesem

1
@jvriesem Lütfen, alıntı yapılan makalenin Eqn. (15b)
Tarek


-4

En basit yöntem sonlu fark yaklaşımlarını kullanmaktır.

İki noktadan basit bir tahmin, yakındaki bir sekant hattının (x, f (x)) ve (x + h, f (x + h)) noktaları arasındaki eğiminin hesaplanmasıdır. [1] Küçük bir h sayısının seçilmesi, h, x'teki küçük bir değişikliği temsil eder ve pozitif veya negatif olabilir. Bu çizginin eğimi

f(x+h)-f(x)h

Bu ifade Newton'un fark oranıdır.

Bu sekant hattının eğimi, teğet hattın eğiminden yaklaşık olarak h ile orantılı bir miktarda farklılık gösterir. H sıfıra yaklaştığında, sekant çizgisinin eğimi teğet çizginin eğimine yaklaşır. Bu nedenle, f'nin x'teki gerçek türevi, sekant çizgileri teğet bir çizgiye yaklaşırken ve yaklaşırken farkın değerinin değerinin sınırıdır.


1
Sanırım reddedildi, çünkü David Zaslavsky, fark katsayısı formülünden özellikle bahsetti ve soru daha iyi bir yaklaşım olup olmadığını soruyor.
Dan

7
Ayrıca , orijinal olarak yanıtın bir parçası olan spam bağlantısı dışında, doğrudan Wikipedia'dan kopyalayıp yapıştırın .
David Z
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.