Bir üçgen üzerinde kompakt olarak desteklenen fonksiyonun sayısal entegrasyonu


10

başlıktan da anlaşılacağı gibi, bir üçgen üzerinde kompakt olarak desteklenen bir fonksiyonun (Wendland'ın kuintik polinomu) integralini hesaplamaya çalışıyorum. İşlevin merkezinin 3 boyutlu bir alanda olduğuna dikkat edin. Bu işlevi gelişigüzel ancak küçük bir üçgenle birleştiriyorum ( ). Şu anda 1985 yılında Dunavant tarafından açıklanan entegrasyonu kullanıyorum (p = 19).area<(radius/4)22

Bununla birlikte, bu kareleme kurallarının kompakt olarak desteklenen sorunlara uygun olmadığı anlaşılmaktadır. Bu, (yani yarıçap 1 dairesinin içinde 1 olan bir işlev) üçgenler kullanılarak ayrıştırılmış bir düzleme entegre , (normalleştirilmiş) sonuçlarımın 1.001 ve 0.897.f(r)=[r1]

Benim sorum şu, bu tür bir problem için özel bir kareleme kuralı var mı? Düşük dereceli kompozit entegrasyon kuralı daha iyi çalışır mı?

Ne yazık ki bu rutin benim kodumda gerçekten kritik olduğundan hassasiyet çok önemlidir. Öte yandan, bu entegrasyonu tek bir zaman adımı için "birkaç kez" yapmam gerekiyor, böylece hesaplama gideri çok yüksek olmamalı. Entegrasyonun kendisini seri olarak yürüteceğim için paralelleştirme bir sorun değil.

Cevaplarınız için şimdiden teşekkürler.

DÜZENLEME: Wendland'ın quinik polinomu, ile ve , r_0 \ mathbb {R} ^ 3 içinde rastgele bir vektörα=21W(q)=[q2]αh3(1q2)4(2q+1) q=r-r0α=2116π r0R3q=rr0hr0R3

EDIT2: Eğer Δ iki boyutlu bir üçgen daha sonra istediğim için hesapla Δω(r)dr ile ω(r)=W(rr0h) . Böylece q içinde W yekpare bir 2-boyutlu yüzey üzerinde bir yüzey integrali olduğu daha küçük 0 Not asla R3

EDIT3: 1-B (hat) sorunu için analitik bir çözüm var. Birini 2-B (üçgen) için hesaplamak da mümkün olabilir.


Entegre etmeye çalıştığınız fonksiyonla ilgili birkaç ayrıntı daha verir misiniz? Sadece bir polinom mu? Yoksa parçalı bir polinom mu?
Pedro

İstendiği gibi düzenlendi.
Azrael3000

Yanıtlar:


4

Fonksiyonu içinde pürüzsüz olduğu , fakat sabit derece (olup düzlemde) ben, örneğin basit bir adaptif yöntemi kullanılarak, öneriyoruz trapezoidal kural ile Romberg yöntemi her iki boyutta.q2

Kendisine, için bir üçgen köşesinin ile tanımlanır eğer , ve ve bir rutin bütünleştirir hattı boyunca gelen için , size (Matlab gösterimde), aşağıdakileri içerebilir:y z R 3xyzR3romb(f,a,b)fab

int = romb( @(xi) romb( W , xi , y+(z-y)*(xi-x)./(z-x) ) , x , z );

'De romb, sabit sayıda nokta kullanmayın, ancak birbirini izleyen iki köşegen arasındaki fark, gerekli toleransın altında olana kadar tabloyu büyütmeye devam edin. İşleviniz düzgün olduğundan, bu iyi bir hata tahmini olmalıdır.

Üçgenin bazı kısımları alanının dışındaysa , yukarıdaki koddaki entegrasyon sınırlarını buna göre ayarlamayı deneyebilirsiniz.W(q)

Bu, probleminizi çözmenin en hesaplamalı olarak etkili yolu olmayabilir, ancak uyarlanabilirlik, sabit dereceli bir kuraldan çok daha fazla sağlamlık sağlayacaktır.


İşlev, dışında her yerde smmoth'tur . Bu noktanın komşuluğu soruna neden oluyor. q=0
Arnold Neumaier

Ah iki 1-B problemine ayrılıyor, hiç de fena bir fikir değil. Çünkü sana söylemediğim bir şey var. 1-D'de analitik bir çözümüm var, bu yüzden iç rombu analitik bir işlevle değiştirebiliyorum. Zaten bir şans vereceğim +1
Azrael3000

@ArnoldNeumaier, üzgünüm, bunun nasıl mümkün olduğunu bilmiyorum. Açıklayabilir misiniz?
Pedro

bir fonksiyonu olarak düz , ancak bir düzgün olmayan fonksiyonudur ve entegrasyon üzerinde sorusunu anlaşılır kadar gibi. Bileşik işlev böylece bir düzgün olmayan bir fonksiyonudur . q r r rqqrrr
Arnold Neumaier

1
@Pedro Uyguladım ve bir cazibe gibi çalışıyor. Aslında bugün de analitik bir çözüm bulduk. Ancak bu sadece genel olanı yeniden yapılandırmak için kullanılabilecek özel bir durum içindir. Bu, bazı alan ayrışması yapmamız gerektiği anlamına gelir. Romberg yaklaşık 4 adımda birleştiğinden, bu nedenle analitik formülü kullanmaktan daha hızlı olacağını düşünüyorum. Ve Wikipedia'ya göre rasyonel polinomları kullanırken Romberg'den daha iyisini yapabiliriz. Adını bir sonraki makalemin teşekküründe bulacaksınız :) Şerefe.
Azrael3000

2

Küp kurallarına iyi bir genel bakış için bkz. "R. Cools, Küp Formüllerinin Bir Ansiklopedisi J. Complexity, 19: 445-453, 2003". Sabit bir kural kullanarak, bazı kuralların polinomları tam olarak entegre etmesi (Gauss quadrature'ın tek boyutlu olarak yaptığı gibi) avantajı sağlayabilir.

Cools aynı zamanda sayısal küp için bir yazılım paketi olan CUBPACK'in ana yazarlarından biridir .


Buradaki problemin fonksiyonun bir polinomu olduğunu , ancak uzaysal koordinatlarda doğrusal olmayan bir fonksiyon olduğunu düşünüyorum . Fonksiyon, temel fonksiyonun kenarına kadar pürüzsüzdür, ancak eksenler hariç polinom değildir. qqq
Pedro

Bu doğru Pedro.
Azrael3000

Ah tamam. benim hatam. afedersiniz.
GertVdE

2

Entegrasyon kuralları, işlevin düşük dereceli bir polinom tarafından yerel olarak iyi bir şekilde tahmin edildiğini varsayar. Sorununuzun kompakt destekle ilgisi yok. Kompakt olarak desteklenen radyal temel fonksiyonlar destek sınırında pürüzsüzdür ve pürüzsüzlük sırasına kadar dörtlü kurallar sorunsuz bir şekilde kullanılabilir. (Yüksek dereceli kurallar yardımcı olmaz; bu nedenle muhtemelen derece 5 polinomlarını tam olarak entegre eden bir kural kullanmamalısınız.)

Sizin durumunuzda yanlışlık , içermeyen bile, yakınındaki üçgenler için durumunuzda iyi polinom yaklaşıklığı varsayımının başarısız .r 0r0r0

q q r r r 0 r rW bir fonksiyonu olarak pürüzsüz olduğu , ancak bir düzgün olmayan fonksiyonudur sınırı sonsuz olur gradyanı ile, . Entegrasyon üzerindedir ve bileşik işlev düz olmayan bir işlevidir .qqrrr0rr

Üçgen içermiyorsa , işlev , ancak daha yüksek türev çok hızlı bir şekilde büyüdüğünden ve yüksek dereceli bir yöntemin hatası yüksek dereceli bir türevle orantılı olduğundan yardımcı olmaz, bu nedenle çok büyük !C i n f r 0r0Cinfr0

Basit çözüm, her bir üçgeni T, alt üçgenlerin bir N_T sayısına bölmektir. Sen alabilir uzaklardan ve yakın . İstenen doğruluğa ulaşmak için belirli bir çap ve mesafeli üçgenler için ne kadar büyük gerektiğini çevrimdışı olarak öğrenebilirsiniz . Ayrıca, yalnızca yakın düşük dereceli formüller kullanmalısınız .r 0 N T1 r 0 N T r 0 r 0NT=1r0NT1r0NTr0r0

Bir üçgen üzerine entegre olduğunuzda, ancak 3 boyutlu olduğundan, üçgen görünüşe göre .R 3r0R3

Bu nedenle daha hızlı bir çözüm, için integrali üçgen koordinatların bir fonksiyonu olarak tablo haline getirir ( bir tepe noktası - ekseninde kalacak ve bir saniye yansıtacak şekilde 2 boyutlu bir - düzlemine döndürülerek normalize edilir tepe üzerinde yer alır). Bu tablo, doğrusal veya karesel enterpolasyonun yeterince doğru olmasını sağlamak için yeterince ayrıntılı olmalıdır. Ancak bu tabloyu oluşturmak için önce özetlenen yavaş yöntemi kullanabilirsiniz.x y xr0=0xyx

Sorunun kurtulmak için başka bir yol içinde bir çok terimli bir kompakt desteklenen radyal tabanlı işlevini kullanmaktır yerine . Bu her yerde pürüzsüz ve entegrasyonu kolaydır. qq2q


qr0

r0R3rR3r0

R3
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.