การสั่นที่แปลกเมื่อแก้สมการการพาโดยความแตกต่างอัน จำกัด ด้วยเงื่อนไขขอบเขตของ Neumann ที่ปิดสนิท (การสะท้อนที่ขอบเขต)


32

ฉันพยายามที่จะแก้สมการการพาความร้อน แต่มีความผันผวนที่แปลกประหลาดปรากฏขึ้นในการแก้ปัญหาเมื่อคลื่นสะท้อนจากขอบเขต หากใครได้เห็นสิ่งประดิษฐ์นี้ก่อนที่ฉันจะสนใจที่จะรู้สาเหตุและวิธีการหลีกเลี่ยง!

นี่คือ gif แบบเคลื่อนไหวเปิดในหน้าต่างแยกต่างหากเพื่อดูภาพเคลื่อนไหว (มันจะเล่นเพียงครั้งเดียวหรือไม่พร้อมกันในทันที! การขยายพันธุ์ของชีพจรเกาส์เซียน

ขอให้สังเกตว่าการขยายพันธุ์ดูเหมือนจะมีเสถียรภาพสูงจนกระทั่งคลื่นเริ่มสะท้อนจากขอบเขตแรก คุณคิดว่าจะเกิดอะไรขึ้นที่นี่ ฉันใช้เวลาสองสามวันในการตรวจสอบรหัสของฉันและไม่พบข้อผิดพลาดใด ๆ มันแปลกเพราะมันดูเหมือนจะมีวิธีแก้ปัญหาที่แพร่กระจายสองอย่าง: หนึ่งบวกและลบหนึ่ง หลังจากการสะท้อนจากขอบเขตแรก การแก้ปัญหาดูเหมือนว่าจะเดินทางไปตามจุดตาข่ายที่อยู่ติดกัน

รายละเอียดการใช้งานมีดังนี้

สมการการพาความร้อน

ut=vux

โดยที่คือความเร็วในการแพร่กระจายv

Crank-Nicolson เป็นdiscretization ที่ไม่มีเงื่อนไข (ลิงก์ pdf) ที่ มีเสถียรภาพสำหรับสมการการพาความร้อนที่ให้มีการเปลี่ยนแปลงอย่างช้าๆในอวกาศ (มีส่วนประกอบความถี่ต่ำเท่านั้นเมื่อแปลงฟูริเยร์)u(x)

discretization ฉันได้ใช้คือ

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

การนำสิ่งที่ไม่ทราบทางด้านขวามาใช้จะเขียนในรูปแบบเส้นตรง

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

ที่ (จะใช้เวลาเฉลี่ยถ่วงน้ำหนักเท่า ๆ กันระหว่างจุดปัจจุบันและอนาคต) และx}r =β=0.5r=vΔt2Δx

ชุดสมการนี้มีรูปแบบเมทริกซ์ , โดยที่,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)

เวกเตอร์และเป็นทราบและไม่ทราบปริมาณที่เราต้องการแก้unun+1

จากนั้นฉันใช้เงื่อนไขขอบเขตของ Neumann แบบปิดบนขอบเขตด้านซ้ายและด้านขวา ตามขอบเขตปิดฉันหมายถึงในทั้งสองอินเตอร์เฟส สำหรับขอบเขตที่ปิดแล้วปรากฎว่า (ฉันจะไม่แสดงการทำงานของฉันที่นี่) เราแค่ต้องแก้สมการเมทริกซ์ด้านบน ตามที่ชี้แจงโดย @DavidKetcheson สมการเมทริกซ์ข้างต้นอธิบายถึงเงื่อนไขขอบเขตของ Dirichletux=0เงื่อนไขขอบเขต สำหรับเงื่อนไขขอบเขตของนอยมันน์

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

ปรับปรุง

พฤติกรรมดูเหมือนว่าค่อนข้างอิสระต่อการเลือกค่าคงที่ที่ฉันใช้ แต่สิ่งเหล่านี้เป็นค่าสำหรับพล็อตที่คุณเห็นด้านบน:

  • v = 2
  • DX = 0.2
  • dt = 0.005
  • σ = 2 (Gaussian hwhm)
  • β = 0.5

อัปเดต II

การจำลองที่มีสัมประสิทธิ์การแพร่กระจายที่ไม่เป็นศูนย์, (ดูความคิดเห็นด้านล่าง) การสั่นจะหายไป แต่คลื่นไม่สะท้อนอีกต่อไป!? ฉันไม่เข้าใจว่าทำไมD=1

การแพร่และการพาความร้อน


คุณใช้อะไรไป? v
chris

v=2ในการจำลองเหล่านั้น ฉันจะอัปเดตด้วยการตั้งค่าการจำลอง ความคิดที่ดี.
boyfarrell

จากนั้นฉันคาดว่าเงื่อนไขเริ่มต้นจะถูกประกาศไปทางขวาและหายไปผ่านขอบเขตด้านขวา สิ่งที่อยู่ในใจคือโครงการกลางสามารถให้การแกว่งลวงตานอกเสียจากว่าจะใช้กับสมการการแพร่ - การแพร่กระจายที่มีจำนวนเซลล์ Peclet ด้านล่าง 2 ลองใช้รูปแบบ upwind หรือไม่
chris

คุณคิดว่าอาจมีข้อผิดพลาดเข้าสู่ระบบด้วยสมการ ที่จริงแล้วเป้าหมายสุดท้ายของฉันคือการใช้สิ่งนี้กับสมการการแพร่ - แพร่ ฉันกำลังทดสอบกรณี จำกัด ที่แตกต่างกัน ในตัวอย่างข้างต้นสัมประสิทธิ์การแพร่ถูกตั้งค่าเป็นศูนย์ ฉันได้รวมภาพเคลื่อนไหวใหม่ไว้ด้านบนแล้ว ฉันไม่เข้าใจว่าทำไมจุดสูงสุดไม่สะท้อนเมื่อสัมประสิทธิ์การแพร่เป็นศูนย์ มันจะตรงตามที่คุณพูดถึง (นอกเหนือจากทิศทาง)
boyfarrell

ฉันกำลังคิดดังนั้นสัญญาณก็โอเค พล็อตที่สองดูโอเคกับฉัน ทำไมคุณคาดหวังอะไรที่จะสะท้อน? สิ่งนี้อาจเกิดขึ้นได้หากการเปลี่ยนแปลงลงชื่ออย่างใด ลองกับโครงการทวนลมสำหรับการพาแทนโครงการกลางแล้วคุณจะเห็นบางสิ่งบางอย่างที่คล้ายกันสำหรับ 0 tu+vxu=0vD=0
chris

คำตอบ:


28

สมการที่คุณกำลังแก้ไขไม่อนุญาตการแก้ปัญหาที่เกิดขึ้นอย่างถูกต้องดังนั้นจึงไม่มีสิ่งดังกล่าวเป็นเงื่อนไขขอบเขตการสะท้อนของสมการนี้ หากคุณพิจารณาคุณสมบัติคุณจะทราบว่าคุณสามารถกำหนดเงื่อนไขขอบเขตที่ขอบเขตด้านขวาเท่านั้น คุณกำลังพยายามกำหนดเงื่อนไขขอบเขต Dirichlet ที่เป็นเนื้อเดียวกันที่ขอบเขตซ้ายซึ่งไม่ถูกต้องทางคณิตศาสตร์

ย้ำ: วิธีการลักษณะกล่าวว่าการแก้ปัญหาจะต้องมีอย่างต่อเนื่องตามเส้นใด ๆ ของรูปแบบxνt=Cสำหรับค่าคงที่ใด ๆCCดังนั้นการแก้ปัญหาตามขอบเขตด้านซ้ายจะถูกกำหนดโดยวิธีแก้ปัญหาก่อนหน้านี้ภายในโดเมนปัญหาของคุณ คุณไม่สามารถกำหนดวิธีแก้ปัญหาที่นั่น

ซึ่งแตกต่างจากสมการตัวเลขโครงการของคุณไม่ยอมรับโซลูชั่นที่เหมาะสมไป โหมดที่ถูกต้องจะเรียกว่าโหมดกาฝากและเกี่ยวข้องกับความถี่ที่สูงมาก โปรดสังเกตว่าคลื่นที่ถูกต้องเป็นแพ็กเก็ตคลื่นที่มีฟันเลื่อยซึ่งสัมพันธ์กับความถี่สูงสุดที่สามารถแสดงในกริดของคุณ คลื่นนั้นเป็นสิ่งประดิษฐ์เชิงตัวเลขที่สร้างขึ้นโดย discretization ของคุณ

สำหรับการเน้น: คุณยังไม่ได้เขียนปัญหามูลค่าเริ่มต้นเต็มขอบเขตที่คุณพยายามแก้ไข ถ้าคุณทำมันจะชัดเจนว่าไม่ใช่ปัญหาทางคณิตศาสตร์

ฉันดีใจที่คุณโพสต์สิ่งนี้ไว้ที่นี่เนื่องจากมันเป็นภาพประกอบที่สวยงามของสิ่งที่สามารถเกิดขึ้นได้เมื่อคุณแยกแยะปัญหาที่ไม่เหมาะสมและปรากฏการณ์ของโหมดกาฝาก +1 ที่ยิ่งใหญ่สำหรับคำถามของคุณจากฉัน


ขอบคุณสำหรับการสนทนาและการแก้ไข ฉันไม่ได้ชื่นชมว่าเมทริกซ์จะไม่มีคุณสมบัติเหมือนกันกับสมการเชิงอนุพันธ์ ความคิดเห็นเพิ่มเติมที่จะติดตาม ...
boyfarrell

ใช่ฉันเห็นแล้วว่าสิ่งเหล่านี้เป็นเงื่อนไขขอบเขต Dirichlet จริง ๆ ฉันได้ทำบันทึกข้างต้นสำหรับการแก้ไข นี่เป็นครั้งแรกที่ฉันได้ลอง (อย่างสุด ๆ ) เพื่อทำความเข้าใจกระบวนการแก้สมการเหล่านี้อย่างจริงจังฉันยังคงกระแทกกระแทกบนถนน ฉันยินดีที่จะโพสต์ความคืบหน้าของฉัน!
boyfarrell

@ David Ketcheson: ฉันพบปัญหาเดียวกันและโพสต์ปัญหาของฉันในลิงก์ต่อไปนี้ scicomp.stackexchange.com/questions/30329/ ...... คุณช่วยอธิบายหน่อยได้ไหมว่าทำไมคุณถึงบอกว่าปัญหาไม่ใช่ "ทางคณิตศาสตร์ดี" ? ขอบคุณ
Herman Jaramillo

@HermanJaramillo คุณกำลังพยายามกำหนดค่าโซลูชันที่ขอบเขตด้านซ้ายซึ่งกำหนดโดย PDE แล้ว หนังสือเรียนใด ๆ ที่มีการถกเถียงเรื่องการโฆษณาจะระบุว่าเงื่อนไขขอบเขตที่ถูกต้องคืออะไรและเพราะเหตุใด ฉันเพิ่มวรรคสองพร้อมคำอธิบายเพิ่มเติม; หวังว่าจะช่วย
David Ketcheson

1
@HermanJaramillo: ไม่ใช่ "การวางตำแหน่งทางคณิตศาสตร์ดี" โดยทั่วไปหมายความว่าคุณมีสองสมการสำหรับค่าฟังก์ชันหนึ่งที่ขอบเขตขอบเขตเงื่อนไขและ PDE โดยทั่วไปสมการทั้งสองนั้นขัดแย้งกัน โดยทั่วไปแล้วเราสามารถพิจารณาว่านี่เป็นปัญหาการปรับให้เหมาะสมซึ่งทั้งสองวัตถุประสงค์มีความพึงพอใจมากที่สุด
davidhigh

0

ฉันเรียนรู้มากมายจากคำตอบข้างต้น ฉันต้องการที่จะรวมคำตอบนี้เพราะฉันเชื่อว่ามันมีข้อมูลเชิงลึกที่แตกต่างกันของปัญหา

uxx+1cutt=0.
c

สมการนี้มีคำตอบของรูปแบบโดยไม่มีเงื่อนไขเริ่มต้นและขอบเขต u(x,t)=f(xct) )(ชีพจรเคลื่อนที่ไปทางขวา)

u(x,t0)=p(x)x(,)p[xc(tt0)] ]ไม่มีขอบเขตและนั่นคือทางออก

x[a,b]ab

t0

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

สิ่งนี้จะสร้างพัลส์ที่วิ่งไปทางขวาจนกว่าจะหายไปที่ขอบด้านขวา

กดที่นี่เพื่อดูภาพเคลื่อนไหวบน Dirichlet ที่ขอบเขตซ้าย

ฉันยังคงได้รับเสียงรบกวนซึ่งฉันไม่เข้าใจ (ใครจะช่วยได้ที่นี่บ้าง)

ตัวเลือกอื่นคือการกำหนดเงื่อนไขขอบเขตเป็นระยะ นั่นคือแทนที่จะกำหนดเงื่อนไขขอบเขต Dirichlet ทางด้านซ้ายเราสามารถกำหนดแพ็กเก็ตคลื่นที่สอดคล้องกับขอบเขตด้านซ้าย นั่นคือ:

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

ac(tt0)<at>t0c>0[a,b]baac(tt0)+ba=a+b(tt0)u(a,t0)=p[bc(tt0]

ลิงก์นี้ แสดงสิ่งที่ฉันเรียกว่าเงื่อนไขขอบเขตเป็นระยะ

ฉันสร้างอนิเมชั่นในไพ ธ อนและชุดรูปแบบเป็น Crank-Nicholson ตามที่ระบุในคำถามที่นี่

ฉันยังคงดิ้นรนกับรูปแบบเสียงรบกวนหลังจากคลื่นกระทบกับขอบเขต (ขวา) แรก


1
ฉันไม่เห็นภาพเคลื่อนไหวในโทรศัพท์มือถือของฉัน แต่ฉันเชื่อว่ารูปแบบเสียงรบกวนของคุณเกิดจากความแม่นยำของตัวเลขหายไป การดูดซับใช้งานได้เพียงเพราะคุณกำหนดวิธีการแก้ปัญหาที่แน่นอนในขอบเขต Wrt โซลูชันที่แน่นอนนี้โซลูชันเชิงตัวเลขที่มาถึงขอบเขตขวาจะแตกต่างกันเล็กน้อยในความถี่และเฟส สิ่งนี้นำไปสู่การสะท้อนกลับและการรบกวน
davidhigh

@davidhigh: ขอบคุณสำหรับข้อมูลของคุณ ฉันจะตรวจสอบสิ่งนี้ ฉันขอโทษที่ภาพเคลื่อนไหวไม่ทำงานในโทรศัพท์ของคุณ มันไม่ทำงานในโทรศัพท์ของฉัน (Samsung) เช่นกัน นี่อาจเป็นซอฟต์แวร์ที่ขาดหายไปในโทรศัพท์ มันควรทำงานในคอมพิวเตอร์ ขอบคุณอีกครั้ง.
Herman Jaramillo

ไม่เป็นไร อนิเมชั่นนั้นไม่สำคัญเลยฉันแค่อยากจะดูว่าข้อผิดพลาดใหญ่แค่ไหน Btw ด้วยการกำหนดวิธีการแก้ปัญหาที่แน่นอนในขอบเขตที่คุณหลีกเลี่ยง "ความไม่ดี" โดยการออกแบบ นั่นคือคุณยังคงมีสมการสองค่าสำหรับหนึ่งค่าที่ขอบเขต แต่ด้วยการใช้ผลลัพธ์ที่แน่นอนคุณจะต้องทำให้มันสอดคล้องกัน แต่วิธีนี้ใช้งานได้ประมาณเท่านั้นเนื่องจากผลลัพธ์ที่เป็นตัวเลขนั้นไม่ถูกต้องทั้งหมด
davidhigh

และความคิดเห็นอื่น: โซลูชันการวิเคราะห์ทั่วไปของสมการคลื่นคือการทับซ้อนของพัลส์ที่เลื่อนไปทางซ้ายและอีกอันที่ถูกต้อง ในกรณีของคุณคุณพิจารณาเฉพาะชีพจรที่กำลังเคลื่อนที่ดังนั้นคุณจึงใช้เงื่อนไขเริ่มต้น - ตรงกันข้ามกับสิ่งที่คุณระบุไว้ในข้อความ
davidhigh

@davidhigh: ฉันได้รับการคิดเล็กน้อยเกี่ยวกับข้อมูลเชิงลึกของคุณเกี่ยวกับเสียงหลังจากที่ชีพจรกระทบขอบเขต ฉันเชื่อว่าคุณพูดถูกและมีความแตกต่างระหว่างวิธีการวิเคราะห์ที่แน่นอนและการเต้นของชีพจรเชิงตัวเลข ในขอบเขตที่แตกต่างกันเล็กน้อยสร้างรูปแบบเสียงรบกวนขนาดเล็กที่เห็นที่นั่น ระบบ CN advection ที่แสดงในการอภิปรายนี้แพร่กระจายและฉันเชื่อว่าในขณะที่การกระจายตัวไม่ได้ถูกสังเกตเห็นก่อนที่พัลส์จะกระทบกับขอบเขตมันอาจทริกเกอร์ แต่ก่อกวนเล็กน้อย (ความแตกต่างระหว่างการวิเคราะห์และการแก้ปัญหาเชิงตัวเลข) ขอบคุณอีกครั้ง.
เฮอร์แมน Jaramillo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.