มีวิธีง่ายๆในการแก้สมการชโรดิงเงอร์ที่ขึ้นกับตัวเลขหรือไม่?


34

ฉันต้องการเรียกใช้การจำลองแบบง่าย ๆ ของการกระเจิงของ wavepackets จากศักยภาพแบบง่าย ๆ ในมิติเดียว

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

  • มีเสถียรภาพเชิงตัวเลข
  • ง่ายต่อการใช้งานหรือมีการใช้งานการเข้าถึงไลบรารีโค้ดได้ง่าย
  • วิ่งเร็วพอสมควรและหวังว่า
  • ค่อนข้างง่ายที่จะเข้าใจ

ฉันอยากจะแนะนำวิธีการทางสเปกตรัมที่ค่อนข้างชัดเจนโดยเฉพาะอย่างยิ่งวิธีการที่น้อยกว่าการแก้สมการชโรดิงเงอร์ที่ไม่ขึ้นกับเวลาเช่นเคย อย่างไรก็ตามฉันสนใจวิธีหลอกหลอกที่ใช้ B-splines หรือ whatnot หากวิธีการนั้นมีศักยภาพที่ขึ้นกับเวลานั้นเป็นโบนัสแน่นอน

แน่นอนว่าวิธีการดังกล่าวจะมีข้อเสียอยู่เสมอดังนั้นฉันจึงอยากได้ยินเกี่ยวกับสิ่งเหล่านั้น มันไม่ทำงานเมื่อไหร่? ข้อผิดพลาดทั่วไปคืออะไร มันสามารถผลักไปทางไหนและมันจะไม่ทางไหน?


1
ที่เกี่ยวข้อง: physics.stackexchange.com/q/12614และphysics.stackexchange.com/q/12199
Kyle Kanos

@EmilioPisanty ฉันได้เพิ่มการสนทนาของข้อผิดพลาดในการเขียน SSFM ของฉัน: ฉันสังเกตเห็น (หลังจากเขียนคำตอบของฉันขอโทษ) คุณไม่กระตือรือร้นในวิธีการสเปกตรัม แต่ในกรณี ...

ทำความสะอาดด้าย เอาการอภิปรายของ topicality จากฟิสิกส์
Geoff Oxberry

1
ผมขอแนะนำให้เริ่มต้นที่นี่แม้ว่าจะมีเป็นจำนวนมากของการทำงานมากขึ้นล่าสุด: เปรียบเทียบรูปแบบการขยายพันธุ์ที่แตกต่างกันสำหรับเวลาสมSchrödingerขึ้น
David Ketcheson

3
@GeoffOxberry คุณสามารถแสดงภาพหน้าจอของความคิดเห็นเหล่านั้นได้หรือไม่
Emilio Pisanty

คำตอบ:


24

สม Schroedinger มีประสิทธิภาพปฏิกิริยาแพร่สม (ค่าคงที่ทั้งหมดคือ 1) เมื่อพูดถึงสมการเชิงอนุพันธ์บางส่วนมีสองวิธีในการแก้:

(1)iψt=2ψ+Vψ
  1. วิธีการโดยปริยาย (adv: ขั้นตอนเวลามาก & เสถียรโดยไม่มีเงื่อนไขข้อเสีย: ต้องการตัวแก้เมทริกซ์ที่สามารถให้ข้อมูลที่ไม่ดี)
  2. วิธีการที่ชัดเจน (adv: ง่ายต่อการใช้งาน, เสียเปรียบ: ต้องการเวลาประทับเล็กน้อยเพื่อความเสถียร)

สำหรับสมการพาราโบลา (เชิงเส้นในและลำดับที่ 2 ใน ) วิธีการทางอ้อมมักเป็นตัวเลือกที่ดีกว่า เหตุผลคือเงื่อนไขความมั่นคงสำหรับวิธีการที่ชัดเจนต้องใช้ซึ่งจะมีขนาดเล็กมาก คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้วิธีการโดยปริยายซึ่งไม่มีข้อ จำกัด ดังกล่าวในขั้นตอนเวลา (แม้ว่าในทางปฏิบัติแล้วคุณจะไม่ทำให้มันใหญ่โตอย่างผิดปกติเพราะคุณสูญเสียบางส่วนของฟิสิกส์) สิ่งที่ฉันอธิบายต่อไปคือวิธีCrank-Nicolsonซึ่งเป็นลำดับที่สองทั่วไปที่ถูกต้อง (พื้นที่ & เวลา)x d t d x 2txdtdx2

เริ่ม

เพื่อที่จะแก้ปัญหา PDE คุณต้องแยกมันออก (ทำให้ตัวแปรพอดีกับกริด) ตรงไปข้างหน้ามากที่สุดคือตารางคาร์ทีเซียนสี่เหลี่ยม ในที่นี้แสดงถึงดัชนีเวลา (และเป็นซุปเปอร์สคริปต์เสมอ) และดัชนีดัชนีตำแหน่ง (เสมอตัวห้อย) โดยการใช้การขยายตัวของเทย์เลอร์สำหรับตัวแปรตามตำแหน่งสมการ (1) จะกลายเป็น เราได้สันนิษฐานไว้แล้วว่าj ฉันψ n + 1 j - ψ jnjV=V(x) 1

iψjn+1ψjdt=12(ψj+1n+12ψjn+1+ψj1n+1dx2+ψj+1n2ψjn+ψj1ndx2)+12(Vjψjn+1+Vjψjn)
V=V(x). สิ่งที่เกิดขึ้นต่อไปคือการจัดกลุ่มของดัชนีเชิงพื้นที่และชั่วขณะ (คุณอาจต้องการตรวจสอบคณิตศาสตร์เป็นสองเท่า): สมการนี้มีรูปแบบ (0-00+0-00+0-)(ψ n + 1 0 ψ n + 1 1ψ n + 1 J - 1 )=(ψ n 0
(2)12dtdx2ψj+1n+1+(idtdx212Vj)ψjn+1+12dtdx2ψj1n+1=iψjn12dtdx2(ψj+1n2ψjn+ψj1n)+12Vjψjn
ฉันψ n + 1 J
(A0A00A+A0A00A+A0A)(ψ0n+1ψ1n+1ψJ1n+1)=(ψ0nψ1nψJ1n)
ซึ่งเรียกว่าเมทริกซ์สามเหลี่ยมและมีวิธีแก้ปัญหาที่รู้จัก (รวมถึงตัวอย่างการทำงานรวมถึง หนึ่งเขียนโดยฉัน!) รอยขีดข่วนวิธีการที่ชัดเจนออกมาด้านซ้ายทั้งหมด (หรือผมควรจะพูดบรรทัดบนสุด?) ของสมการ (2) ยกเว้นสำหรับระยะiψjn+1

ประเด็น

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

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

ฉันยังไม่แน่ใจว่าธรรมชาติที่ซับซ้อนของฟังก์ชันคลื่นจะส่งผลต่อการคำนวณอย่างไร งานที่ฉันทำใช้สมการไดนามิกของออยเลอร์และเป็นจริงโดยสิ้นเชิงกับขนาดที่ไม่เป็นลบ

ศักยภาพขึ้นอยู่กับเวลา

หากคุณมีศักยภาพการวิเคราะห์ตามเวลา (เช่น ) คุณก็แค่ใช้เวลาปัจจุบันสำหรับบน RHS ของ (2) และเวลาในอนาคตบน LHS ฉันไม่เชื่อว่านี่จะสร้างปัญหาใด ๆ แต่ฉันยังไม่ได้ทดสอบสิ่งนี้ดังนั้นฉันจึงไม่สามารถยืนยันหรือปฏิเสธด้านนี้ได้เช่นกันt V j t + d tVcos(ωt)tVjt+dt

ทางเลือก

มีทางเลือกที่น่าสนใจสำหรับวิธี Crank-Nicolson เช่นกัน สิ่งแรกคือวิธีที่เรียกว่า "super-time-stepping" ในวิธีการที่ชัดเจนนี้คุณใช้ขั้นตอนเวลา ( ) และใช้รูตของชื่อพหุนาม Chebyshevเพื่อรับชุดขั้นตอนเวลาที่ปรับให้เหมาะสมซึ่งจะรวมกับเร็วกว่าการทำขั้นตอนอย่างมีประสิทธิภาพ คุณได้รับเพื่อที่แต่ละขั้นตอนคุณเป็น d T d T / N N Δ T = N 2 d T N N d Tdtdx2dtdt/NNΔT=N2dtNNdtภายในเวลาที่กำหนด). (ฉันใช้วิธีนี้ในการวิจัยของฉันเพราะคุณมี "ฟลักซ์" ที่ชัดเจนจากเซลล์หนึ่งไปอีกเซลล์หนึ่งที่ใช้สำหรับการผสานข้อมูลจากโปรเซสเซอร์หนึ่งไปยังอีกโปรเซสเซอร์หนึ่งโดยใช้โครงร่าง Crank-Nicolson ที่ฉันไม่สามารถทำได้)

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

อื่น ๆ เรียกว่าสลับทิศทางอย่างชัดเจน วิธีการนี้กำหนดให้คุณต้องมีเงื่อนไขขอบเขตที่เป็นที่รู้จักและกำหนดไว้อย่างดี จากนั้นจะดำเนินการแก้สมการโดยใช้ขอบเขตโดยตรงในการคำนวณ (ไม่จำเป็นต้องใช้หลังจากแต่ละขั้นตอน) สิ่งที่เกิดขึ้นในวิธีนี้คือคุณแก้ปัญหา PDE สองครั้งครั้งเดียวในการกวาดขึ้นด้านบนและอีกครั้งในการกวาดลง การกวาดขึ้นใช้ ในขณะที่การกวาดลงใช้ สำหรับสมการการแพร่ในขณะที่คำอื่น ๆ จะยังคงเหมือนเดิม ขั้นตอนเวลา

2ψx2ψj1n+1ψjn+1ψjn+ψj+1ndx2
2ψx2ψj+1n+1ψjn+1ψjn+ψj1ndx2
n+1 แก้ไขได้โดยเฉลี่ยทั้งสองทิศทางเรตติ้ง

1
คำตอบที่ดีข้อร้องเรียนเพียงอย่างเดียวคือคุณเอาชนะฉันได้!
Kyle

@ChrisWhite: ฉันคิดเกี่ยวกับวิธีที่สามารถทำได้ก่อนหน้านี้ในเช้าวันนี้และสิ่งเดียวที่ฉันมาด้วยจะทำมันอีกครั้งสำหรับและอีกครั้งสำหรับฉัน ฉันจะดูที่กระดาษนั้น (และที่สำคัญกว่านั้นคือรหัสที่แจกฟรี) และดูวิธีที่พวกเขาแนะนำให้ทำ RI
Kyle Kanos

@ChrisWhite อาจจะเป็นความลับที่คำนวณ eigenfunctions ซึ่งฉันได้เห็นโดยการคำนวณเวลาตามจินตนาการ: คุณจัดเรียงทิศทางขั้นตอนเพื่อให้ eigenfunction พลังงานต่ำสุดมีค่าลบน้อยที่สุดและทำให้การสลายตัวช้าที่สุด เมื่อวนซ้ำในอินพุตแบบสุ่มจะเหลือเพียงรูปร่างของค่าฟังก์ชันพลังงานต่ำสุดเท่านั้น จากนั้นคุณลบสิ่งนี้จากอินพุตแบบสุ่มและทำขั้นตอนอีกครั้ง: ตอนนี้ไอเจฟังก์ชั่นพลังงานต่ำสุดถัดไปคืออันที่โดดเด่น และอื่น ๆ มันฟังดูเล็กน้อย (โดยเฉพาะการเพิ่ม eigenfuncs) แต่มันใช้งานได้! hνhν

1
@DavidKetcheson: สมการปฏิกิริยาการแพร่กระจายแบบฟอร์มที่ใช้(U) ในกรณีของสมการชโรดิงเงอ ; ฉันขอถามหน่อยได้ไหมว่ามันไม่ใช่สมการ RD-type? และจริงๆแล้วสมการชโรดิงเงอร์ปรากฏอยู่ในบทความวิกิพีเดียปฏิกิริยาการแพร่กระจายที่ฉันอ้างถึง การแบ่งตัวที่ฉันทำนี้ยังปรากฏอยู่ในวารสารและตำราที่ตีพิมพ์จำนวนมาก(ไปข้างหน้าและค้นหา) บางทีฉันควรจะแนะนำให้ใช้ห้องสมุดมาตรฐาน (เช่น MO ทั่วไปที่นี่) จะดีกว่าหรือไม่เช่น PETSc, deal.ii หรือ pyCLAW tu=Dx2u+R(u)R(u)=Vu
Kyle Kanos

1
@KyleKanos: โพสต์ของคุณดี ในความเป็นจริงในบทความที่โพสต์โดย DavidKetcheson, Crank-Nicolson ได้รับการสนับสนุนโดยการอ้างอิงครั้งแรก การเปรียบเทียบกับการแพร่ของปฏิกิริยานั้นดี ดังที่คุณทราบการเปรียบเทียบกับการแพร่กระจายของปฏิกิริยาจะปรากฏในหลาย ๆ แหล่งที่ตีพิมพ์ ฉันคิดว่า DavidKetcheson กำลังมองหาบางอย่างเช่น "สมการคลื่นที่กระจายตัว" ที่กล่าวถึงก่อนหน้านี้
Geoff Oxberry

22

ในช่วงต้นยุค 90 เรากำลังมองหาวิธีการที่จะแก้ TDSE อย่างรวดเร็วพอที่จะทำภาพเคลื่อนไหวในเวลาจริงบนเครื่องพีซีและมาข้ามง่ายน่าแปลกใจที่มีความเสถียร, วิธีการที่ชัดเจนอธิบายโดย PB Visscher ในคอมพิวเตอร์ฟิสิกส์ : " อัลกอริทึมที่ชัดเจนอย่างรวดเร็ว สำหรับสมการชโรดิงเงอร์ที่ขึ้นอยู่กับเวลา " Visscher ตั้งข้อสังเกตว่าถ้าคุณแยกคลื่นความถี่ออกเป็นส่วนจริงและจินตภาพ SE จะกลายเป็นระบบ:ψ=R+iI

dRdt=HIdIdt=HRH=12m2+V

หากคุณคำนวณและในเวลาที่เซ (ที่และที่คุณจะได้รับการแยกแยะ:RIR0,Δt,2Δt,...I0.5Δt,1.5Δt,...)

R(t+12Δt)=R(t12Δt)+ΔtHI(t)

I(t+12Δt)=I(t12Δt)ΔtHR(t)

กับ (Laplacian สามจุดมาตรฐาน)

2ψ(r,t)=ψ(r+Δr,t)2ψ(r,t)+ψ(rΔr,t)Δr2

นี้เป็นที่ชัดเจนอย่างรวดเร็วมากในการคำนวณและลำดับที่สองที่ถูกต้องในTΔt

การกำหนดความหนาแน่นของความน่าจะเป็น

P(x,t)=R2(x,t)+I(x,t+12Δt)I(x,t12Δt)
ที่ขั้นตอนจำนวนเต็มและ

P(x,t)=R(x,t+12Δt)R(x,t12Δt)+I2(x,t)
ที่ขั้นตอนครึ่งจำนวนเต็ม

ทำให้อัลกอริทึมเป็นหนึ่งเดียวกัน

ด้วยการเพิ่มประสิทธิภาพรหัสที่เพียงพอเราสามารถรับแอนิเมชั่นที่ดีมากซึ่งคำนวณแบบเรียลไทม์บนเครื่อง 80486 นักเรียนสามารถ "ดึง" ศักยภาพใด ๆ เลือกพลังงานทั้งหมดและดูวิวัฒนาการเวลาของแพ็กเก็ต Gaussian


นั่นเป็นเคล็ดลับที่เรียบร้อยมากสำหรับการแก้ส่วนประกอบที่แท้จริงและจินตภาพ! $$ ... $$ยังทราบว่าคุณจะได้รับขนาดใหญ่สมเป็นศูนย์กลางโดยใช้ ฉันใช้เสรีภาพในการทำสิ่งนี้เพื่อคุณฉันหวังว่าคุณจะไม่สนใจ!
Kyle Kanos

เรามีความยินดีเป็นอย่างยิ่งที่ได้พบอัลกอริธึม - มันเป็นโปรแกรมที่ง่ายและวิ่งเร็ว ส่วนที่ยากที่สุดคือการเริ่มต้นเงื่อนไขที่ถูกต้อง R ที่ t = 0 และฉันที่ 0.5dt ... ฉันไม่รังเกียจการแก้ไขฉันมีความสุขที่ได้สมการทั้งหมด

1
@ user40172 เรากำลังทำสิ่งเดียวกันกับท่อนำคลื่นในเวลาเดียวกันและเราตัดสินตาม BPM ที่อธิบายไว้ในคำตอบของฉัน เหตุผลก็คือในตอนนั้นเราสามารถรัน FFT แยกจาก CPU หลักโดยใช้บอร์ด DSP เราคิดว่าเราช่างฉลาดเหลือเกิน แต่ฉันต้องบอกว่าการแก้ปัญหาฮาร์ดแวร์เป็นหลักในการแก้ไขปัญหาซอฟต์แวร์นั้นดูเหมือนว่าจะไม่เป็นธรรมในปี 2014! Visual Studio C ++ เวอร์ชันล่าสุดจะเขียนโค้ดเวกเตอร์โดยอัตโนมัติเหนือ CPU และทำงานได้อย่างสวยงามด้วย FFT

1
@ user40172 ในที่สุดคุณได้รับเงื่อนไขเริ่มต้นที่อย่างไร เพียงเผยแพร่โซลูชันไปยังเวลานั้นด้วยวิธีอื่นหรือไม่ 0.5dt

1
@Rusian เนื่องจากเราทำการกระเจิงเราใช้แพ็คเก็ต wave Gaussian แบบปลอดอนุภาคมาตรฐาน แต่ให้แน่ใจว่าเริ่มต้น "ไกลพอ" จากภูมิภาคใด ๆ ที่มีศักยภาพไม่ใช่ศูนย์ ดูตัวอย่างเช่น: demonstrations.wolfram.com/EvolutionOfAGaussianWavePacket

10

คำตอบของ Kyle Kanos ดูเหมือนจะเต็มมาก แต่ฉันคิดว่าฉันจะเพิ่มประสบการณ์ของตัวเอง วิธีฟูเรียร์แบบแยกขั้นตอน (SSFM) นั้นง่ายมากในการวิ่งและเล่นกับ คุณสามารถสร้างต้นแบบมันขึ้นมาในไม่กี่บรรทัดของ Mathematica และมันก็เป็นตัวเลขที่เสถียรมาก มันเกี่ยวข้องกับการให้ผู้ประกอบการที่ไม่ซ้ำกันในชุดข้อมูลของคุณดังนั้นมันจึงสงวนความน่าจะเป็น / พลังงานโดยอัตโนมัติ (หลังถ้าคุณกำลังแก้สมการของ Maxwell ด้วยซึ่งเป็นที่ที่ประสบการณ์ของฉันอยู่) สำหรับสมการSchrödingerหนึ่งมิติ (เช่นและเปลี่ยนแปลงเท่านั้น) มันเร็วมากแม้ในขณะที่รหัส Mathematica และถ้าคุณต้องการเพิ่มความเร็วคุณต้องใช้รหัส FFT ที่ดีในภาษาเป้าหมายของคุณ (ประสบการณ์ของฉันคือ C ++)txt

สิ่งที่คุณกำลังทำอยู่คือวิธีการเผยแพร่แบบลำแสงแบบไม่เปิดเผยสำหรับการแพร่กระจายทางแสงผ่านท่อนำคลื่นของส่วนข้ามที่แตกต่างกัน

วิธีที่ฉันดู SSFM / BPM มีดังนี้ การต่อสายดินเป็นสูตรผลิตภัณฑ์ Trotter ของทฤษฎี Lie:

(1)limm(exp(Dtm)exp(Vtm))m=exp((D+V)t)

ซึ่งบางครั้งเรียกว่าสมการแยกตัวดำเนินการในบริบทนี้ ชุดข้อมูลของคุณเป็นหรือ discretised ตารางของค่าที่ซับซ้อนเป็นตัวแทนในเวลาที่กำหนดทีคุณลองนึกภาพนี้ (คุณไม่ต้องทำอย่างนี้ฉันยังคงพูดถึงแนวคิด) ที่เขียนตารางเป็นเวกเตอร์คอลัมน์องค์ประกอบ (สำหรับตารางเรามี ) จากนั้นสมการชโรดิงเงอร์ของคุณเป็นรูปแบบ:xyxyzψ(x,y,z)tNΨ1024×1024N=10242=1048576

(2)dtΨ=KΨ=(D+V(t))Ψ

ที่คือเอียง - Hermitian เมทริกซ์เป็นองค์ประกอบของและจะถูกแมปด้วยเวลาที่เพิ่มขึ้นโดยองค์ประกอบของคนหนึ่ง กลุ่มพารามิเตอร์t) (ฉันดูดปัจจัยเข้าไปในบน RHS เพื่อให้ฉันสามารถพูดคุยในแง่ทฤษฎีโกหกได้ง่ายขึ้น) ด้วยขนาดของที่อยู่อาศัยตามธรรมชาติของผู้ปฏิบัติงานเป็นกลุ่มโกหกที่ใหญ่โตอย่างมากดังนั้น PHEW! ใช่ฉันยังคงพูดในแง่ทฤษฎีทั้งหมด! ตอนนี้K=D+VN×Nu(N)Ψexp(Kt)iK=D+VNU(N)D+Vดูเหมือน? ยังคงนึกภาพตอนนี้มันอาจจะคิดว่าเป็นรุ่นที่แตกต่างกัน จำกัด ของโดยที่มีความเป็นไปได้ "หมายถึง" ที่สะดวกสำหรับปัญหาที่อยู่ในมือi2/(2m)i1V0+i1(V0V(x,y,z,t0))V0

เราให้:

(3)D=i2m2i1V0V=i1(V0V(x,y,z,t))

ทำไมฉันถึงแยกมันออกเป็นแบบนี้จะชัดเจนขึ้น

จุดเกี่ยวกับก็คือมันสามารถทำงานได้วิเคราะห์สำหรับคลื่นระนาบ: มันเป็นตัวดำเนินการคูณแบบง่าย ๆ ในพิกัดโมเมนตัม ดังนั้นเพื่อหาไปนี้เป็นสามขั้นตอนแรกของรอบ SSFM / BPM:DΨexp(ΔtD)Ψ

  1. ส่ง FFT ไปยังชุดข้อมูลเพื่อแปลงเป็นชุดของน้ำหนักทับซ้อนของคลื่นระนาบ: ตอนนี้พิกัดพิกัดได้เปลี่ยนจากเป็น ;ΨΨ~x,y,zkx,ky,kz
  2. บอก โดยการคูณแต่ละจุดบนตารางโดย ;Ψ~exp(ΔtD)Ψ~exp(iΔt(V0kx2+ky2+kz2)/)
  3. บอก FFT ผกผันเพื่อทำแผนที่กริดของเรากลับไปที่exp(ΔtD)Ψ

    . ตอนนี้เรากลับมาอยู่ในโดเมนตำแหน่งแล้ว นี่เป็นโดเมนที่ดีกว่าในการบอกโอเปอเรเตอร์แน่นอน: ที่นี่เป็นตัวดำเนินการคูณอย่างง่าย ดังนั้นนี่คือขั้นตอนสุดท้ายของวัฏจักรอัลกอริทึมของคุณ:VV

  4. บอกกล่าวโอเปอเรเตอร์เพียงแค่คูณแต่ละจุดบนกริดโดยปัจจัยเฟสΨexp(ΔtV)Ψexp(iΔt(V0V(x,y,z,t))/)

.... แล้วคุณจะเริ่มถัดไปของคุณละขั้นตอนและวนซ้ำ เห็นได้ชัดว่ามันง่ายมากที่จะใส่ค่าศักย์ที่แปรผันตามเวลาลงในโค้ดΔtV(x,y,z,t)

ดังนั้นคุณจะเห็นว่าคุณเลือกเล็กพอที่สูตร Trotter (1) เตะเข้า: คุณแค่ประมาณการกระทำของโอเปอเรเตอร์และคุณโบกไปมาพร้อมกับ FFT ของคุณระหว่างตำแหน่งและพิกัดโมเมนตัมเช่นโดเมนที่และเป็นตัวดำเนินการคูณอย่างง่ายΔtexp(D+VΔt)exp(DΔt)exp(VΔt)VD

ขอให้สังเกตว่าคุณเป็นคนเดียวที่เปิดเผยแม้ในโลกที่แยกตัวออกมาผู้ประกอบการที่รวมกัน: FFT และปัจจัยเฟสบริสุทธิ์

จุดหนึ่งที่คุณต้องระวังคือเมื่อของคุณมีขนาดเล็กคุณต้องตรวจสอบให้แน่ใจว่าระยะห่างของตารางอวกาศลดลงเช่นกัน มิฉะนั้นสมมติว่าระยะห่างตารางอวกาศเป็นx จากนั้นความหมายทางกายภาพของขั้นตอนที่ไม่ต่อเนื่องคือผลกระทบการเลี้ยวเบนกำลังเคลื่อนที่ด้วยความเร็ว ; เมื่อจำลองสมการของแมกซ์เวลล์และท่อนำคลื่นคุณจะต้องตรวจสอบให้แน่ใจว่าความเร็วนี้มีขนาดเล็กกว่าคฉัน daresay ชอบข้อ จำกัด ที่ใช้กับสมการชโรดิงเงอร์: ฉันไม่มีประสบการณ์ตรงที่นี่ แต่มันฟังดูสนุกและบางทีคุณอาจโพสต์ผลลัพธ์ของคุณได้บ้าง!Δ x Δ x / Δ t cΔtΔxΔx/Δtc

จุดที่ "ประสบการณ์" ประการที่สองคือสิ่งนี้ฉันเกือบยินดีที่จะเดิมพันว่านี่เป็นวิธีที่คุณจะเลิกติดตามความคิดของคุณ เรามักจะมีความคิดที่เราต้องการทำแบบจำลองที่ง่ายและรวดเร็วและสกปรก แต่มันก็ไม่เคยได้ผลเลย! ฉันจะเริ่มต้นด้วย SSFM ตามที่อธิบายไว้ข้างต้นเพราะมันง่ายมากที่จะเริ่มต้นใช้งานและคุณจะเห็นได้อย่างรวดเร็วว่าผลลัพธ์นั้นมีอยู่จริงหรือไม่ ต่อมาเมื่อคุณสามารถใช้ของคุณบอกรหัส Mathematica SSFM ตรวจสอบผลของรหัสที่ซับซ้อนมากขึ้นคุณอาจท้ายการสร้างการพูด, รหัส Crank Nicolson ตามสายของคำตอบที่ไคล์ Kanos ของ


ข้อผิดพลาดขอบเขต

การรับรู้สูตร Dynkin ของทฤษฎีบทของ Baker-Campbell-Hausdorff:

exp(DΔt)exp(V)Δt)=exp((D+V)Δt+12[D,V]Δt2+)
บรรจบกันสำหรับแสดงให้เห็นว่าวิธีนี้มีความแม่นยำ ลำดับที่สองและสามารถแสดงให้เห็นว่า:Δt>0

exp(DΔt)exp(V)Δt)exp(12[D,V]Δt2)=exp((D+V)Δt+O(Δt3))

ในทางทฤษฎีคุณสามารถใช้คำว่าเพื่อประเมินข้อผิดพลาดและตั้งค่าของคุณตามลำดับ สิ่งนี้ไม่ใช่เรื่องง่ายอย่างที่มันดูและในทางปฏิบัติขอบเขตของการเป็นข้อผิดพลาดแทน ปัญหาคือ:exp(V)Δt)exp(12[D,V]Δt2)Δt

Δt22[D,V]=iΔt22m(x2V(x,t)+2xV(x,t)x)

และไม่มีการแปลงให้เป็นพิกัด -เป็นตัวดำเนินการอย่างง่าย ดังนั้นคุณต้องมีเนื้อหาที่มีและใช้สิ่งนี้เพื่อประเมินข้อผิดพลาดของคุณโดยหาสำหรับคุณ กำลังพัฒนาโซลูชันและใช้สิ่งนี้เพื่อตั้งค่าของคุณ[D,V]exp(12[D,V]Δt2)eiφΔt2(id(12[D,V]iφ(t))Δt2)(id(12[D,V]iφ(t))Δt2)ψψ(x,t)Δton-the-fly หลังจากแต่ละรอบของอัลกอริทึม แน่นอนคุณสามารถทำให้ความคิดเหล่านี้เป็นพื้นฐานสำหรับการควบคุม stepize แบบปรับตัวสำหรับการจำลองของคุณ ที่นี่เป็นระยะส่วนกลางที่ดึงออกมาจากชุดข้อมูลเพื่อลดบรรทัดฐานของ ; แน่นอนว่าคุณสามารถขว้างระยะออกจากโลกออกมาได้บ่อยครั้งขึ้นอยู่กับว่าคุณกำลังทำอะไรกับผลการจำลองสถานการณ์บ่อยครั้งที่เราไม่ได้ใส่ใจกับโลกคงที่ขวา)φ(12[D,V]iφ(t))Δt2exp(φdt)

บทความที่เกี่ยวข้องเกี่ยวกับข้อผิดพลาดใน SSFM / BPM คือ:

Lars Thylén "คานการขยายพันธุ์วิธีการ: การวิเคราะห์การบังคับใช้" แสงและควอนตัมอิเล็กทรอนิคส์ 15 (1983) pp433-439

Lars Thylénคิดเกี่ยวกับข้อผิดพลาดในแง่ทฤษฎีที่ไม่โกหก (กลุ่ม Lie เป็นคนงอของฉันดังนั้นฉันชอบที่จะมองหาการตีความของพวกเขา) แต่ความคิดของเขาเป็นหลักเหมือนกับข้างต้น


1
ร็อดคุณอาจทราบดีว่าคุณสามารถทำได้ดีกว่าถ้าคุณใช้การประมาณแบบแยกผู้ดำเนินการโดยที่2] ในความเป็นจริงคุณสามารถทำการแยกต่อไปเพื่อนำข้อผิดพลาดไปสู่พลังสูงขึ้น ดูตัวอย่าง Bandrauk และ Shen, Chem สรวง เลทท์ 176, 428 (1991) เห็นได้ชัดว่าคำศัพท์เกี่ยวกับการเคลื่อนไหวของคุณไม่สามารถขึ้นอยู่กับพิกัดนั่นคือมันไม่ได้ทำงานได้ดีในพิกัดโค้งเชิงเส้น exp[Δt(D+V)]exp[ΔtV/2]exp[ΔtD]exp[ΔtV/2]Δt

1
มิฉะนั้นสิ่งแยกนี้ประกอบกับการประเมิน FFT ของผู้ประกอบการพลังงานจลน์เป็นหนึ่งในขั้นตอนมาตรฐานในการแก้ปัญหา TDSE ในรูปแบบกริดในโมเลกุลฟิสิกส์

@perplexity ขอบคุณมาก เป็นเรื่องดีที่จะรู้ว่าใช้ฟิลด์ใด วันที่ในการอ้างอิงของคุณในปี 1991 นั้นน่าสนใจ: ผมค่อนข้างมั่นใจเสมอว่าความคิดแบบแยกขั้นตอนออกมาจากการจำลองท่อนำคลื่นในช่วงปลายปี 1970 - ดังนั้นบางทีฉันผิด

1
คุณไม่ผิดเลย นั่นคือแรงบันดาลใจแน่นอน งานแรกแปลความคิดเหล่านี้ไปยัง QM ที่ฉันรู้คือ Feit, Fleck และ Steiger, J. Comput สรวง 47, 412 (1982) ที่ไหน, ถ้าฉันจำได้ถูกต้อง, พวกเขาใช้เล่ห์เหลี่ยมเดียวกันกับข้อได้เปรียบที่ผู้ปฏิบัติงานที่นี่รวมกันโดยการก่อสร้าง (ซึ่งแตกต่างจากคลื่นแบบดั้งเดิม) ผมเชื่อว่าวิธีการที่ใช้กริดแบบ FFT กับกริดประเภทนี้เป็นครั้งแรกที่ Ronnie Kosloff เสนอ เขามีความคิดเห็นที่ดีมากเกี่ยวกับเรื่องนี้ในหน้าเว็บของเขา

อีกหนึ่งการอ้างอิงที่ดีในสาขาของฉันคือหนังสือของ David Tannor เกี่ยวกับ Quantum Mechanics: มุมมองที่ขึ้นกับเวลา ไชโย

5

ฉันสามารถแนะนำให้ใช้วิธีการ จำกัด เวลาผลต่างของโดเมน (FDTD) ฉันยังได้เขียนบทช่วยสอนที่ควรตอบคำถามส่วนใหญ่ของคุณ:

JR Nagel "การทบทวนและการประยุกต์ใช้อัลกอริธึม จำกัด โดเมนเวลาที่ต่างกันนำไปใช้กับสมการชโรดิงเงอร์" ACES Journal, Vol. 24, ฉบับที่ 1, กุมภาพันธ์ 2009

ฉันมีรหัส Matlab บางตัวที่ทำงานได้ดีกับระบบ 1D หากคุณมีประสบการณ์กับ FDTD ในการทำแม่เหล็กไฟฟ้าก็ใช้งานได้ดีสำหรับกลศาสตร์ควอนตัมเช่นกัน ฉันสามารถโพสต์รหัสของฉันหากคุณสนใจ

โดยพื้นฐานแล้วมันทำงานกับการแทรกซึมของคลื่นโดยตรงโดยการแยกอนุพันธ์ออกเป็นความแตกต่างแน่นอน มันคล้ายกับแผนการของ Crank-Nicholson แต่ไม่ใช่อย่างแน่นอน หากคุณคุ้นเคยกับ FDTD จากทฤษฎีคลื่นแม่เหล็กไฟฟ้า FDTD นั้นจะใช้งานง่ายมากเมื่อแก้สมการชโรดิงเงอร์


4

วิธีการผลต่างอัน จำกัด ตรงไปตรงมาที่สุดนั้นรวดเร็วและเข้าใจง่าย แต่ไม่รวมกันในเวลาดังนั้นความน่าจะเป็นจะไม่ถูกสงวนไว้ Crank-Nicholson-Crout เฉลี่ยวิธีการแตกต่างไปข้างหน้าและข้างหลังแน่นอนในการผลิตวิธีไฮบริดส่อโดยนัย / ชัดเจนที่ยังคงค่อนข้างง่ายต่อการเข้าใจและนำไปปฏิบัติ เว็บไซต์นี้จะอธิบายวิธีการที่ดีให้ pseudocode และให้คุณสมบัติที่เกี่ยวข้อง:

http://www.physics.utah.edu/~detar/phycs6730/handouts/crank_nicholson/crank_nicholson/ หมายเหตุ: มีเครื่องหมาย - หายไปจาก LHS ของสมการหนึ่งของลิงก์นี้ซึ่งแพร่กระจายไปทั่วหน้า

nonunitarity มาจากไหน

ในเปลือกถั่วการแก้ปัญหา TDSE นั้นเกิดขึ้นเพื่อหาวิธีจัดการกับมัน

|ψ(x,t)=eiHt|ψ(x,0)

ซึ่งมีตัวดำเนินการส่วนต่างในเลขชี้กำลัง

การใช้ความแตกต่างที่แน่นอนไปข้างหน้าเปลี่ยนผู้ดำเนินการส่วนต่างให้เป็นเมทริกซ์ tridiagonal (แปลงค่า Reals เป็นกริด) และเลขชี้กำลังเป็นสองเทอมแรกของเทย์เลอร์ซีรีส์

eiHt1iHt

discretization และ linearization นี้เป็นสิ่งที่ก่อให้เกิด nonunitarity (คุณสามารถแสดงให้เห็นว่าเมทริกซ์ tridiagonal ไม่ได้มีการรวมเข้าด้วยกันโดยการคำนวณโดยตรง) การรวมความแตกต่างแน่นอนที่มีการส่งต่อไปข้างหน้ากับความแตกต่างที่แน่นอนของการย้อนหลังสร้างการประมาณ

eiHt112iHt1+12iHt

ซึ่งกรุณารวมเป็นหนึ่ง (อีกครั้งคุณสามารถแสดงได้โดยการคำนวณโดยตรง)


ขอบคุณสำหรับการตอบสนองอย่างรวดเร็ว. คุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทั้งสองได้หรือไม่ พวกเขาทำงานอย่างไรและทำไม nonunitarity มาจากไหน
Emilio Pisanty

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

โปรดสมมติให้มากที่สุดเท่าที่คุณต้องการจากฟิสิกส์และคณิตศาสตร์มาตรฐาน (แม้ว่าการอ้างอิงไปยังส่วนที่ซับซ้อนมากขึ้นอาจช่วยได้) แม้ว่าวิธีการเชิงตัวเลขของฉันค่อนข้างจะเป็นสนิม
Emilio Pisanty

มีความแตกต่างระหว่างคำตอบนี้กับKyle Kanosหรือไม่? ฉันหมายความว่ามันไม่ได้เป็นที่เห็นได้ชัดวิธีการใช้สมการสุดท้ายของคุณ - ตามที่คุณเขียนมันเกี่ยวข้องกับ inverting ผู้ประกอบการเต็มรูปแบบ - คุณเพียงแค่บอกว่าวิธีการ CN เป็นเพียงผ่านวิธีการแก้ปัญหาของสม tridiagonal ตนทำงานออก ? หรือมีความละเอียดอ่อนที่ฉันไม่ได้รับ? จริงๆแล้วคุณสมการสุดท้ายคือการเรนเดอร์ที่ดีที่ทำให้หน่วยความชัดเจนสำหรับ CN ความจริงที่ไม่ชัดเจนในคำอธิบายมากมายของ CN (1+i2Ht)1(1+i2Ht)ψ

ไม่มันเป็นอัลกอริทึมแบบเดียวกับที่ Kyle Kanos มอบให้ ฉันเพิ่งเขียนมันด้วยวิธีนี้เพื่อให้วิธีการมองที่แตกต่าง ฉันหวังว่าจะทำให้แนวความคิดง่ายขึ้น - ในขณะที่เขาใช้งานได้ง่ายขึ้น ใช่แล้วคุณจะแก้สมการไตรภาคีในท้ายที่สุด มีกระดาษเก่า (1967) ใน AJP ที่ฉันไม่สามารถหาได้ก่อนหน้านี้ซึ่งอธิบายได้ดีมาก: ergodic.ugr.es/cphys/lecciones/SCHROEDINGER/ajp.pdf พวกเขาใช้ CN เพื่อผลิตลูปฟิล์ม 8 มม. ของเกวนแบบรัสเซีย กระจายออกศักยภาพที่หลากหลาย คุณยังสามารถค้นหาลูปภาพยนตร์เหล่านั้นได้ในห้องสมุดสาธิตฟิสิกส์ของมหาวิทยาลัยหลายแห่ง

3

คำตอบและความคิดเห็นที่นี่ทำให้ TDSE สับสนด้วยสมการคลื่น อาจเป็นปัญหาความหมายบางส่วน TDSE เป็นเวอร์ชั่นเชิงปริมาณของคลาสสิกแบบไม่สัมพันธ์ relativistic hamiltonianด้วยกฎ (ตามที่กล่าวไว้ในบทที่ 1 ของ Espagnat ศิลปวัตถุ, แนวคิดพื้นฐานของกลศาสตร์ควอนตัม, https://philpapers.org/rec/ESPCFO ) จึงอ่าน ดังนั้นจึงเห็นได้ชัดว่าเป็นสมการการแพร่ - หากใครใช้พลังงานเชิงสัมพัทธภาพซึ่งมีคำว่า Eแสดงว่าสมการที่คล้ายคลื่นเช่น

H=p22m+V(x)=E.
pix,  Eit,  xx,
[22mxx+V(x)]ψ=itψ,
2
xxψ=ttψ+
จะได้รับ (สำหรับ V = 0 สำหรับความเรียบง่าย) เช่นสมการ Pauli หรือ Klein-Gordon แต่แน่นอนว่าเป็นเรื่องที่แตกต่างอย่างสิ้นเชิง

ตอนนี้กลับไปที่ TDSE วิธีที่ชัดเจนคือ Crank-Nicolson ดังที่ได้กล่าวมาแล้วเพราะมันเป็นการขยายเวลาเล็ก ๆ ที่ช่วยรักษาความเป็นหน่วยของวิวัฒนาการ (FTCS เช่นไม่ใช่) สำหรับกรณีที่ 1-space-D สามารถถือว่าเป็นเมทริกซ์ซ้ำได้โดยอ่าน พร้อมเมทริกซ์เอกลักษณ์และ (รายละเอียดเช่นในวิธีเชิงตัวเลขสำหรับฟิสิกส์, http://algarcia.org/nummeth/nummeth.html , โดย AL Garcia) เห็นได้ชัดเจนที่สุดในเงื่อนไขขอบเขตเป็นระยะพื้นที่ที่มีการแปล

ψn+1=(I+iτ2H~)1(Iiτ2H~)ψn
I
Hjk=(H~)jk=22m[δj+1,k+δj1,k2δjkh2]+Vjδjk.
ψกระจายออกไปตามเวลา: สิ่งนี้คาดว่าเพราะการแปลเริ่มต้นที่ไม่ได้เป็น eigenstate ของสมการชโรดิงเงอร์นิ่ง แต่เป็นการทับซ้อน (อนุภาคขนาดใหญ่ฟรีคลาสสิก) eigenstate ด้วยโมเมนตัมคงที่ (สำหรับผู้ประกอบการจลน์ศาสตร์เชิงสัมพัทธภาพ) คือกล่าวคือมีการแจกแจงเต็มรูปแบบตามหลักการของไฮเซนเบิร์ก / L ทุกหนทุกแห่ง (โปรดทราบว่าฉันกำลังหลีกเลี่ยงปัญหาการทำให้เป็นมาตรฐานด้วยสถานะความต่อเนื่องโดยให้อนุภาคของฉันมีชีวิตอยู่บนเส้นที่ จำกัด ใช้ CN, norm ψψs=eikx/L
|ψ|2dx
ได้รับการอนุรักษ์ขอบคุณหน่วย (นี่ไม่ใช่กรณีในรูปแบบอื่น ๆ เช่น FTCS เช่น) ขอให้สังเกตว่าเริ่มต้นจากการบีบอัดพลังงานเช่น ด้วยคงที่คุณจะได้ นั่นคือสมการ advection ที่ไม่มีการกระจาย (ถ้ารวมเข้ากับ Lax-Wendroff วิธีการ) และแพคเกจ Wavepacket ของคุณจะไม่กระจายในเวลานั้น อะนาล็อกควอนตัมคือสมการไดร์รัคอนุภาคไร้มวล
cp=E
c
icx=it
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.