Tam denklemli Neumann sınır koşullarında (sınırlardaki yansıma) sonlu farklar ile denklem denklemini çözerken garip salınım


33

Tavsiye denklemini çözmeye çalışıyorum ama dalga sınırlardan yansıdığında çözümde ortaya çıkan tuhaf bir salınım var. Eğer bu eseri daha önce kimse görmüşse, nedenini ve nasıl önleneceğini bilmek isterdim!

Bu, animasyonu görüntülemek için ayrı pencerede açılan bir animasyonlu gif (önbelleğe alındıktan sonra yalnızca bir kez oynatılacak veya oynatılmayacak!) Gauss nabzının yayılması

Dalga ilk sınırdan yansımaya başlayana kadar yayılımın oldukça kararlı göründüğüne dikkat edin. Burada ne olabileceğini düşünüyorsun? Birkaç gün kodumu kontrol ederek geçirdim ve herhangi bir hata bulamadım. Garip çünkü iki yayıcı çözüm var gibi görünüyor: biri pozitif diğeri negatif; ilk sınırın yansımasından sonra. Çözümler bitişik ağ noktaları boyunca ilerliyor gibi görünüyor.

Uygulama detayları takip edilir.

Tavsiye denklemi,

ut=vux

burada yayılma hızıdır.v

Crank-Nicolson, uzayda yavaşça değişken olması koşuluyla denklem için Fourier dönüştürüldüğünde düşük frekanslı bileşenleri içerir ) koşulsuz (pdf bağlantısı) kararlı bir ayrıklaştırmadır .u(x)

Uyguladığım takdir yetkisi,

ϕjn+1ϕjnΔt=v[1β2Δx(ϕj+1nϕj1n)+β2Δx(ϕj+1n+1ϕj1n+1)]

Bilinmeyenleri sağ tarafa koymak, bunun doğrusal biçimde yazılmasını sağlar,

βrϕj1n+1+ϕjn+1βrϕj+1n+1=(1β)rϕj1n+ϕjn+(1β)rϕj+1n

burada (şimdiki zaman ile gelecek nokta arasında eşit olarak ağırlıklı zaman ortalamasını almak için) ve .β=0.5r=vΔt2Δx

Bu denklem seti matrisine sahiptir , burada,Aun+1=Mun

A=(1βr0βr1βrβr1βr0βr1)

M=(1(1β)r0(1β)r1(1β)r(1β)r1(1β)r0(1β)r1)

ve vektörleri , çözmek istediğimiz miktarın bilinir ve bilinmezdir.unun+1

Daha sonra sol ve sağ sınırlara kapalı Neumann sınır koşulları uygularım . Kapalı sınırlarla , her iki arayüzde demek istiyorum . Kapalı sınırlar için (burada çalışmamı göstermeyeceğim) sadece yukarıdaki matris denklemini çözmemiz gerektiği ortaya çıktı. @DavidKetcheson tarafından belirtildiği gibi, yukarıdaki matris denklemleri aslında Dirichlet sınır koşullarını tanımlar . Neumann sınır şartları için,ux=0

A=(100βr1βrβr1βr001)

Güncelleştirme

Davranış, kullandığım sabitlerin seçiminden oldukça bağımsız görünüyor, ancak bunlar yukarıda gördüğünüz çizim için değerlerdir:

  • v = 2
  • dx = 0.2
  • dt = 0.005
  • σ = 2 (Gauss hwhm)
  • β = 0.5

Güncelleme II

Sıfır olmayan difüzyon katsayısına sahip bir simülasyon, (aşağıdaki yorumlara bakınız), salınım kayboluyor, ancak dalga artık yansıtmıyor !? Nedenini anlamadımD=1

Yayınım ve tavsiye


için ne aldın ? v
chris

v=2Bu simülasyonlarda . Simülasyon ayarıyla güncelleyeceğim. İyi bir fikir.
boyfarrell

Sonra başlangıç ​​koşulunun sağa itiraz edilmesini ve doğru sınırdan kaybolmasını beklerdim. Akla gelen tek şey, merkezi şemanın 2 numaralı hücre Peclet numarası ile yapılan adveksiyon-difüzyon denklemine uygulanmadıkça sahte salınımlar verebilmesidir.
chris

Denklemde işaret hatası olabileceğini düşünüyor musunuz? Aslında benim nihai amacım bunu önerinin yayılması denklemiyle uygulamak. Şu anda farklı sınırlayıcı vakaları test ediyorum. Yukarıdaki örnekte difüzyon katsayısı sıfıra ayarlanmıştır. Yukarıda yeni bir animasyon ekledim. Difüzyon katsayısı sıfır olmadığında zirvenin neden yansımadığını anlamıyorum. Aynen bahsettiğiniz gibi yapar (yönden ayrı olarak).
boyfarrell

Ben düşünüyordum işareti Tamam yani. İkinci komplo bana iyi geldi. Neden bir şey yansıtmasını beklersin? Bu, ancak değişiklikleri bir şekilde işaret ederse olabilir . Merkezi şema yerine geri bildirim için yukarı sarma şemasını deneyin, sonra için benzer bir şey görmelisiniz . tu+vxu=0vD=0
chris

Yanıtlar:


28

Çözdüğünüz denklem doğru çözümlere izin vermiyor, bu nedenle bu denklem için yansıtıcı bir sınır koşulu gibi bir şey yoktur . Özellikleri göz önünde bulundurursanız, yalnızca doğru sınırda bir sınır koşulu uygulayabileceğinizi fark edeceksiniz. Sol sınırda, matematiksel olarak geçersiz olan homojen bir Dirichlet sınır koşulu getirmeye çalışıyorsunuz.

Yinelemek için: karakteristiklerin yöntemi, çözeltinin herhangi bir sabit için şeklindeki herhangi bir satır boyunca sabit olması gerektiğini söyler . Bu nedenle, sol sınır boyunca çözüm, sorun alanınızın içinde daha önceki zamanlarda çözüm tarafından belirlenir; orada bir çözüm empoze edemezsiniz.xνt=CC

Denklemin farklı olarak, sayısal şema yok sağ gidiş çözümler itiraf. Doğru gidiş modları parazitik modlar olarak adlandırılır ve çok yüksek frekansları içerir. Doğru giden dalganın, şebekenizde temsil edilebilecek en yüksek frekanslarla ilişkili olan testere dişi bir dalga paketi olduğuna dikkat edin. Bu dalga tamamen kendi takdirinize bağlı olarak yaratılan sayısal bir eserdir.

Vurgulamak için: çözmeye çalıştığınız başlangıç-sınır değer probleminin tamamını yazmadınız. Bunu yaparsanız, matematiksel olarak iyi pozlanmış bir sorun olmadığı açık olacaktır.

Yine de bunu buraya gönderdiğinize sevindim, çünkü iyi olmayan bir problemi ve parazitik modlar fenomenini gizlice gördüğünüzde neler olabileceğinin güzel bir örneği. Sorunuz için benden büyük bir +1.


tartışma ve düzeltmeler için teşekkür ederim. Matrisin diferansiyel denklem ile aynı özelliklere sahip olmayacağını düşünmemiştim .
İzlenecek

Evet, şimdi bunların Dirichlet sınır koşullarının gerçekte nasıl olduğunu görüyorum. Düzeltme için yukarıda not aldım. Bu, bu denklemleri çözme sürecini gerçekten anlamak için ilk kez (en azından) denedim, yolda çarpmalara devam ediyorum. İlerlememi kaydetmekten mutluyum!
boyfarrell

@David Ketcheson: Aynı problemle karşılaşıyorum ve sorunumu aşağıdaki bağlantıya yazdım: scicomp.stackexchange.com/questions/30329/… Sorunun neden "matematiksel açıdan iyi olmadığını" söylediğini açıklar mısın lütfen? ? Teşekkürler.
Herman Jaramillo

@HermanJaramillo PDE tarafından zaten belirlenmiş olan sol sınırdaki bir çözüm değerini empoze etmeye çalışıyorsunuz. Tavsiye ile ilgili bir tartışma içeren herhangi bir ders kitabı, geçerli sınır koşullarının ne olduğunu ve neden olduğunu da gösterir. Ek bir açıklama ile ikinci bir paragraf ekledim; umarım yardımcı olur.
David Ketcheson

1
@HermanJaramillo: "matematiksel olarak iyi pozlanmış" değil, temel olarak sınırda bir fonksiyon değeri için iki denkleminiz olduğu, PDE'nin kendisinin de sınır koşulu olduğu anlamına gelir. Genel olarak, bu iki denklem birbiriyle çelişir. Daha genel olarak, kişi bunu her iki hedefin de mümkün olduğu kadar iyi karşılanacağı bir optimizasyon problemi olarak düşünebilir.
davidhigh

0

Yukarıdaki cevaplardan çok şey öğrendim. Bu cevabı dahil etmek istiyorum çünkü sorunun farklı görüşler ortaya koyduğuna inanıyorum.

Denklemini göz önüne alalım sabit dalga hızı ile .

uxx+1cutt=0.
c

Başlangıç ​​ve sınır koşulları olmadan bu denklem, biçiminde bir çözüme sahiptir . (sağa hareket eden bir darbe)u(x,t)=f(xct)

Biz bir başlangıç konumuna empoze ise , o zaman aralığı denklemin çözeltisi olup . Sınır yok ve çözüm bu.u(x,t0)=p(x)x(,)p[xc(tt0)]

Şimdi, tüm bilgisayarlar sınırlı belleğe sahip olduktan sonra sınırlı bir etki alanı tanımladığımızı varsayalım . O zaman ve değerleri belirtmemiz gerekir , aksi takdirde hesaplama olarak sıkışıp kaldık.x[a,b]ab

Sınır koşullarını tanımlamanın bir yolu, sol sınırdaki Dirichlet ve yayılan çözelti ile tutarlı bir koşul kullanmaktır. Yani tanımlayabiliriz (başlangıç ​​zamanı ) t0

u(a,t0)=0,u(b,t0)=p[bc(tt0)].

Bu, sağ kenarda kaybolana kadar sağa doğru giden bir darbe üretir.

Sol sınırdaki Dirichlet'teki animasyon için buraya tıklayın

Hala anlayamadığım bazı sesler alıyorum (burada herhangi biri yardım edebilir mi?)

Diğer seçenek, periyodik sınır koşullarını empoze etmektir. Soldaki Dirichlet sınır koşulunu koymak yerine, soldaki sınırla tutarlı olan dalga paketini dayatabiliriz. Yani:

u(a,t0)=p[ac(tt0)],u(b,t0)=p[bc(tt0)].

Ancak için ve , ve aralık içindeki verileri koymak gerekir çünkü biz bir ekleme uzunluğu "dönem" ve daha sonra bulmak , böylece soldaki durum (aynı!) olur ve üzerinde bir puls çıkacaktır sağ ve sola girerek.ac(tt0)<at>t0c>0[a,b]baac(tt0)+ba=a+b(tt0)u(a,t0)=p[bc(tt0]

Bu bağlantı , periyodik sınır koşulları olarak adlandıracağımı gösterir.

Animasyonları python ile yaptım ve şema, soruda belirtildiği gibi bir Crank-Nicholson şemasıdır.

Dalga ilk (sağ) sınıra girdikten sonra hala gürültü modeliyle mücadele ediyorum.


1
Animasyonu cep telefonumda göremedim, ancak gürültü kalıbınızın sayısal doğruluk eksikliğinden kaynaklandığına inanıyorum. Absorpsiyon sadece işe yarıyor, çünkü sınırdaki kesin çözümü siz veriyorsunuz. Bu kesin çözümle, doğru sınıra ulaşan sayısal çözüm, frekans ve faz bakımından biraz farklılık gösterir. Bu tekrar yansıma ve dolayısıyla parazite yol açar.
davidhigh

@davidhigh: Bilginiz için teşekkürler. Bunu kontrol edeceğim. Üzgünüm animasyon telefonunuzda işe yaramadı. Telefonumda da (Samsung) çalışmadı. Bu telefonlarda bazı eksik yazılımlar olabilir. Bir bilgisayarda çalışması gerekir. Tekrar teşekkürler.
Herman Jaramillo

Rica ederim. Animasyonun kendisi o kadar önemli değil, sadece hataların ne kadar büyük olduğunu görmek istedim. Btw, sınırda kesin bir çözüm uygulayarak, tasarım gereği "kötü niyetli" olmaktan kaçınırsınız. Yani, sınırda hala bir değer için iki denkleminiz var, ancak kesin sonucu kullanarak onları tutarlı olmaya zorluyorsunuz. Ancak bu sadece sonuçta işe yarar, çünkü sayısal sonuç tam olarak kesin değildir.
davidhigh

Ve bir başka yorum: dalga denkleminin genel analitik çözümü sola ve bir sağa hareket eden bir darbenin bir üst üste binmesidir. Sizin durumunuzda, sadece doğru hareket eden nabzı göz önünde bulunduruyorsunuz, bu yüzden zaten metinde belirtmiş olduğunuzun aksine başlangıç ​​koşulları uyguladınız.
davidhigh

@davidhigh: Darbe sınırdan sonra gürültü hakkındaki görüşlerinizi biraz düşündüm. Haklı olduğunuza ve tam analitik çözüm ile sayısal yayılan nabız arasında bir fark olduğuna inanıyorum. Sınırda çok az fark, orada görülen küçük gürültü modelini oluşturur. Bu tartışmada gösterilen CN tavsiye sistemi dağınıktır ve nabzın sınırlara çarpmadan önce dağılma fark edilmezken, sınırdaki küçük bozulmaların (analitik ve sayısal çözümler arasındaki fark) tetikleyebileceğine inanıyorum. Tekrar teşekkürler.
Herman Jaramillo
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.