โดยทั่วไปคุณจะต้องใช้วิธีการโดยปริยายสำหรับสมการพาราโบลา (ส่วนการแพร่) - แผนการที่ชัดเจนสำหรับพาราโบลา PDE จำเป็นต้องมีการประทับเวลาสั้น ๆ เพื่อให้มีเสถียรภาพ ในทางกลับกันสำหรับชิ้นส่วนไฮเปอร์โบลิค (advection) คุณจะต้องการวิธีที่ชัดเจนเนื่องจากมีราคาถูกกว่าและไม่รบกวนระบบสมมาตรของระบบเชิงเส้นที่คุณต้องแก้ไขโดยใช้วิธีการโดยปริยายสำหรับการแพร่ ในกรณีดังกล่าวคุณต้องการหลีกเลี่ยงความแตกต่างกึ่งกลางเช่นและเปลี่ยนเป็นความแตกต่างด้านเดียวสำหรับเหตุผลของความมั่นคง(uj+1−uj−1)/2Δt(uj−uj−1)/Δt
ฉันขอแนะนำให้คุณดูที่หนังสือของ Randy LevequeหรือหนังสือของDale Durranสำหรับ "von Neumann เสถียรภาพการวิเคราะห์" เป็นวิธีการทั่วไปในการตรวจสอบความมั่นคงของแผนการลดทอนของคุณหากคุณมีเงื่อนไขขอบเขตเป็นระยะ (นอกจากนี้ยังมีบทความวิกิพีเดียที่ดีที่นี่ )
แนวคิดพื้นฐานคือการสมมติว่าการประมาณแบบไม่ต่อเนื่องของคุณสามารถเขียนผลรวมของคลื่นระนาบ , โดยที่คือหมายเลขคลื่นและความถี่ คุณอัดคลื่นระนาบเข้าไปในการประมาณค่ากับ PDE และอธิษฐานว่ามันจะไม่ระเบิด เราสามารถเขียนคลื่นระนาบเป็นและเราต้องการที่จะทำให้แน่ใจว่า1ei(kjΔx−ωnΔt)kωξneikjΔx|ξ|≤1
จากภาพประกอบให้พิจารณาสมการการกระจัดกระจายทั่วไปโดยใช้ความแตกต่างโดยนัย:
un+1j−unjΔt=Dun+1j−1−2un+1j+un+1j+1Δx2
หากเราแทนที่คลื่นระนาบแล้วหารด้วยและเราจะได้สมการξneikjΔx
ξ−1Δt=De−ikΔx−2+eikΔxΔx2ξ
ทำความสะอาดนี่สักหน่อยแล้วเราจะได้:
ξ=11+2DΔtΔx2(1−coskΔx)ขวา)}
นี้น้อยกว่าหนึ่งเสมอดังนั้นคุณจะอยู่ในที่ชัดเจน ลองใช้สิ่งนี้กับรูปแบบที่ชัดเจนและเป็นศูนย์กลางสำหรับสมการการพา:
un+1j−unjΔt=vunj−1−unj+12Δx
และดูสิ่งที่คุณจะได้รับ (มันจะมีส่วนจินตภาพในเวลานี้) คุณจะพบว่าซึ่งเป็นเวลาที่น่าเศร้า ดังนั้นการตักเตือนของฉันที่คุณไม่ได้ใช้มัน หากคุณสามารถทำเช่นนั้นคุณไม่ควรมีปัญหามากในการหารูปแบบที่มั่นคงสำหรับสมการการแพร่กระจายแบบเต็มรูปแบบξ|ξ|2>1
ที่กล่าวว่าฉันจะใช้รูปแบบโดยนัยสำหรับส่วนการแพร่กระจาย เปลี่ยนส่วนต่างในถ้าและถ้าและเลือก timestep เพื่อให้ . (นี่คือเงื่อนไขCourant-Friedrichs-Lewy ) เป็นเพียงลำดับแรกที่ถูกต้องดังนั้นคุณอาจต้องการค้นหารูปแบบการแยกคำสั่งที่สูงขึ้นหากมันเกี่ยวข้องกับคุณuj−uj−1v>0uj−uj+1v<0VΔt/Δx≤1