Crank-Nicolson เป็นโครงร่างการแยกย่อยที่เสถียรสำหรับสมการปฏิกิริยา - การแพร่ - การพา (การพาความร้อน) หรือไม่?


26

ฉันไม่คุ้นเคยกับรูปแบบการแยกย่อยทั่วไปสำหรับ PDE ฉันรู้ว่า Crank-Nicolson เป็นรูปแบบที่ได้รับความนิยมในการลดทอนสมการการกระจาย ยังเป็นตัวเลือกที่ดีสำหรับคำศัพท์การพา?

ฉันสนใจการแก้สมการปฏิกิริยา - การแพร่ -การพา

ut+(vuDu)=f

โดยที่คือสัมประสิทธิ์การแพร่ของสสารและคือความเร็วDuv

สำหรับการสมัครเฉพาะของฉันสมการสามารถเขียนได้ในรูปแบบ

ut=D2ux2Diffusion+vuxAdvection (convection)+f(x,t)Reaction

นี่คือโครงร่างข้อเหวี่ยง - นิโคลสันที่ฉันสมัคร

ujn+1ujnΔt=D[1β(Δx)2(uj1n2ujn+uj+1n)+β(Δx)2(uj1n+12ujn+1+uj+1n+1)]+v[1α2Δx(uj+1nuj1n)+α2Δx(uj+1n+1uj1n+1)]+f(x,t)

สังเกตและเงื่อนไข สิ่งนี้ช่วยให้รูปแบบการย้ายระหว่าง:αβ

  • β=α=1/2 Crank-Niscolson
  • β=α=1มันมีนัยโดยนัย
  • β=α=0มันชัดเจนอย่างสมบูรณ์

ค่าอาจแตกต่างกันซึ่งทำให้คำว่า diffusion เป็น Crank-Nicolson และคำ advection เป็นอย่างอื่น อะไรคือแนวทางที่มีเสถียรภาพมากที่สุดคุณจะแนะนำอะไร

คำตอบ:


15

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

ด้วยคุณจะได้รับวิธีการที่มีเสถียรภาพอย่างแน่นอนสำหรับขนาดขั้นตอนที่มีขนาดใหญ่โดยพลการรวมถึงลำดับที่สองที่แม่นยำ อย่างไรก็ตามวิธีการนี้ไม่ได้เป็นแบบL-เสถียรดังนั้นความถี่ที่สูงมาก ๆ จะไม่ถูกทำให้ชื้นα=β=1/2

ด้วยคุณจะได้รับวิธีการที่มีความเสถียรแบบไม่มีเงื่อนไข แต่มีเพียงลำดับที่ถูกต้องเท่านั้น วิธีนี้จะลดลงมาก มันเป็นL-เสถียรα=β=1

หากคุณใช้วิธีการของคุณสามารถเข้าใจได้ว่าเป็นการใช้วิธีRunge-Kutta แบบเติมแต่งกับการแยกความแตกต่างกึ่งกลางที่กึ่งกลาง การวิเคราะห์ความเสถียรและความแม่นยำสำหรับวิธีการดังกล่าวมีความซับซ้อนมากขึ้น กระดาษที่ดีมากเกี่ยวกับวิธีการดังกล่าวเป็นที่นี่αβ

วิธีการที่แนะนำจะขึ้นอยู่กับขนาดของข้อมูลประเภทเริ่มต้นที่คุณจัดการและความแม่นยำที่คุณต้องการ หากยอมรับความแม่นยำต่ำมากเป็นแนวทางที่แข็งแกร่งมาก ถ้าอยู่ในระดับปานกลางหรือใหญ่แสดงว่าปัญหานั้นเกิดจากการแพร่กระจายและแข็งทื่อมาก โดยทั่วไปจะให้ผลลัพธ์ที่ดี หากมีขนาดเล็กมากก็อาจเป็นประโยชน์ในการใช้วิธีการที่ชัดเจนและการเรียงลำดับขั้นสูงขึ้นสำหรับเงื่อนไขการพาความร้อนDα=β=1Dα=β=1/2D


คำตอบที่ลึกซึ้งมากขอบคุณ! มีวิธีการกำหนดระบอบการปกครองที่แตกต่างกันของการแพร่กระจายและการครอบงำการปกครอง? นอกเหนือจากการเปรียบเทียบขนาดของคำศัพท์? ตัวอย่างเช่นโดยการเปรียบเทียบค่าสัมประสิทธิ์เท่านั้น ความหมายของคำศัพท์ทางเทคนิคคืออะไรความมั่นคง L ทุกคนแนะนำหนังสือเล่มนี้ฉันต้องซื้อมัน!
boyfarrell

เกณฑ์ที่ฉันให้คุณเกี่ยวข้องกับค่าสัมประสิทธิ์เท่านั้น คร่าวๆ L-เสถียรภาพหมายความว่าความถี่สูงจะชื้นอย่างยิ่ง
David Ketcheson

ดังนั้นเมื่อเป็นฟังก์ชั่นที่ราบรื่น (ตามความหมายมันไม่มีส่วนประกอบของฟูริเยร์ความถี่สูง) Crank-Nicolson เป็นตัวเลือกที่ดี อย่างไรก็ตามหากมีขอบที่แหลมแล้วเป็นตัวเลือกที่ดี u(x)u(x)β=1
boyfarrell

นั่นเป็นเหตุผลที่สมเหตุสมผล อย่างน้อยตัวเลือกเหล่านี้จะใช้ได้ถ้าคุณไม่ต้องการความแม่นยำมาก
David Ketcheson

10

โดยทั่วไปคุณจะต้องใช้วิธีการโดยปริยายสำหรับสมการพาราโบลา (ส่วนการแพร่) - แผนการที่ชัดเจนสำหรับพาราโบลา PDE จำเป็นต้องมีการประทับเวลาสั้น ๆ เพื่อให้มีเสถียรภาพ ในทางกลับกันสำหรับชิ้นส่วนไฮเปอร์โบลิค (advection) คุณจะต้องการวิธีที่ชัดเจนเนื่องจากมีราคาถูกกว่าและไม่รบกวนระบบสมมาตรของระบบเชิงเส้นที่คุณต้องแก้ไขโดยใช้วิธีการโดยปริยายสำหรับการแพร่ ในกรณีดังกล่าวคุณต้องการหลีกเลี่ยงความแตกต่างกึ่งกลางเช่นและเปลี่ยนเป็นความแตกต่างด้านเดียวสำหรับเหตุผลของความมั่นคง(uj+1uj1)/2Δt(ujuj1)/Δt

ฉันขอแนะนำให้คุณดูที่หนังสือของ Randy LevequeหรือหนังสือของDale Durranสำหรับ "von Neumann เสถียรภาพการวิเคราะห์" เป็นวิธีการทั่วไปในการตรวจสอบความมั่นคงของแผนการลดทอนของคุณหากคุณมีเงื่อนไขขอบเขตเป็นระยะ (นอกจากนี้ยังมีบทความวิกิพีเดียที่ดีที่นี่ )

แนวคิดพื้นฐานคือการสมมติว่าการประมาณแบบไม่ต่อเนื่องของคุณสามารถเขียนผลรวมของคลื่นระนาบ , โดยที่คือหมายเลขคลื่นและความถี่ คุณอัดคลื่นระนาบเข้าไปในการประมาณค่ากับ PDE และอธิษฐานว่ามันจะไม่ระเบิด เราสามารถเขียนคลื่นระนาบเป็นและเราต้องการที่จะทำให้แน่ใจว่า1ei(kjΔxωnΔt)kωξneikjΔx|ξ|1

จากภาพประกอบให้พิจารณาสมการการกระจัดกระจายทั่วไปโดยใช้ความแตกต่างโดยนัย:

ujn+1ujnΔt=Duj1n+12ujn+1+uj+1n+1Δx2

หากเราแทนที่คลื่นระนาบแล้วหารด้วยและเราจะได้สมการξneikjΔx

ξ1Δt=DeikΔx2+eikΔxΔx2ξ

ทำความสะอาดนี่สักหน่อยแล้วเราจะได้:

ξ=11+2DΔtΔx2(1coskΔx)ขวา)}

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

ujn+1ujnΔt=vuj1nuj+1n2Δx

และดูสิ่งที่คุณจะได้รับ (มันจะมีส่วนจินตภาพในเวลานี้) คุณจะพบว่าซึ่งเป็นเวลาที่น่าเศร้า ดังนั้นการตักเตือนของฉันที่คุณไม่ได้ใช้มัน หากคุณสามารถทำเช่นนั้นคุณไม่ควรมีปัญหามากในการหารูปแบบที่มั่นคงสำหรับสมการการแพร่กระจายแบบเต็มรูปแบบξ|ξ|2>1

ที่กล่าวว่าฉันจะใช้รูปแบบโดยนัยสำหรับส่วนการแพร่กระจาย เปลี่ยนส่วนต่างในถ้าและถ้าและเลือก timestep เพื่อให้ . (นี่คือเงื่อนไขCourant-Friedrichs-Lewy ) เป็นเพียงลำดับแรกที่ถูกต้องดังนั้นคุณอาจต้องการค้นหารูปแบบการแยกคำสั่งที่สูงขึ้นหากมันเกี่ยวข้องกับคุณujuj1v>0ujuj+1v<0VΔt/Δx1


นั่นเป็นคำตอบที่ละเอียดมากขอบคุณ
boyfarrell

คำตอบนี้พิจารณาเพียงการแยกย่อยตามวิธีของออยเลอร์ไปข้างหน้าและข้างหลังในเวลา คำถามเกี่ยวกับ Crank-Nicholson
David Ketcheson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.