เฮ้มีและขอบคุณที่ให้เวลาเพื่อดูคำถามของฉัน นี่เป็นคำถามที่ฉันได้โพสต์ก่อนหน้านี้ใน physics.stackexchange.com
ขณะนี้ฉันกำลังศึกษาสปินทริปปินเตอร์ 2 มิติ Bose-Einstein Condensate และอยากรู้เกี่ยวกับสถานะพื้นฐานของระบบนี้ วิธีการทางคณิตศาสตร์ของการเดินทางไปสภาพพื้นดินที่เรียกว่าวิธีการที่เวลาจินตนาการ
วิธีนี้ง่ายมากที่เวลาในกลศาสตร์ควอนตัมถูกแทนที่ด้วยจินตภาพหนึ่ง ทดแทนนี้ทำให้อนุภาคพลังงานสูงในระบบของฉันสลายตัวเร็วกว่าพลังงานต่ำ การทำให้จำนวนอนุภาคกลับมาเป็นปกติในทุกขั้นตอนของการคำนวณเราจะจบลงด้วยระบบของอนุภาคพลังงานต่ำสุดหรือที่รู้จัก สภาพพื้นดิน
สมการ (s) ในคำถามเป็นเชิงเรียกว่าไม่เชิงเส้นSchrödingerสมบางครั้งสม Gross-Pitaevskii เพื่อแก้ปัญหาที่ฉันใช้ Matlabs ode45 ซึ่งวิวัฒนาการระบบไปข้างหน้าในเวลาและในที่สุดก็ถึงสภาพพื้นดิน
- บันทึก! สมการไม่เชิงเส้นSchrödingerรวมถึง laplacian และคำที่แตกต่างอื่น ๆ ในอวกาศ ทั้งหมดนี้ได้รับการแก้ไขโดยใช้การแปลงฟูริเยร์ที่รวดเร็ว ในที่สุดเรามีเวลาเพียง ODE * * * *
ปัญหาและคำถามของฉัน:การคำนวณไปจากเพื่อt_fode45 ถูกใส่ไว้ในfor for loop ดังนั้นมันจึงไม่คำนวณเวกเตอร์ยักษ์ในเวลาเดียวกัน รอบแรกจะเริ่มต้นด้วย ode45 (odefun, ) และจากนั้นไปในครั้งต่อไปจาก\ นี่คือขั้นตอนเวลาคือปัญหาของฉัน ตัวเลือกที่แตกต่างกันในขั้นตอนเวลาทำให้ฉันแก้ปัญหาสถานะพื้นดินที่แตกต่างกันและฉันไม่รู้ว่าจะกำหนดขั้นตอนเวลาใดให้สถานะพื้นดินที่ถูกต้อง "มากที่สุด"!T ฉ [ T 0 , ... , เสื้อฉ ] [ T 0 , T 0 + Δ / 2 , T 0 + Δ ] , Y , ... T 0 + Δ Δ
ความพยายามของฉัน:ฉันรู้ว่าในโครงการนี้ขั้นตอนเวลามากจะทำให้อนุภาคจำนวนมากสลายตัวก่อนถูกทำให้เป็นอนุภาคในจำนวนปกติในขณะที่ขั้นตอนเวลาขนาดเล็กจะทำให้อนุภาคมีขนาดเล็กลงก่อนที่จะถูกทำให้เป็นมาตรฐาน ความคิดเริ่มต้นของฉันคือขั้นตอนเวลาน้อยควรให้คำตอบที่แม่นยำยิ่งขึ้น แต่ดูเหมือนจะตรงกันข้าม
ฉันไม่ใช่ผู้เชี่ยวชาญด้านตัวเลขดังนั้นการเลือก ode45 จึงเป็นเรื่องง่าย ode113 ให้สิ่งเดียวกันกับฉัน :(
ไม่มีใครมีความคิดใด ๆ ในเรื่องนี้ แจ้งให้เราทราบหากต้องการรายละเอียดเพิ่มเติม
ขอบคุณ.
อัปเดต 1: ฉันค้นคว้าวิธีเวลาในการจินตนาการและ ODE แล้ว ดูเหมือนว่าหากขั้นตอนเวลาไม่เล็กพอสิ่งทั้งหมดจะไม่เสถียร นี่ทำให้ฉันสงสัยว่าสมการไม่เชิงเส้นของฉันนั้นแข็งซึ่งทำให้สิ่งต่าง ๆ ยากขึ้นกว่าที่ฉันเข้าใจ ฉันจะแจ้งให้คุณทราบ
อัปเดต 2: แก้ไขแล้ว: ปัญหานี้เกิดขึ้นจริงจากการทำให้เป็นมาตรฐานภายนอก ODE หากการทำให้เป็นมาตรฐานนั้นถูกเก็บไว้ใน odefun ดังนั้น ODE จะส่งกลับผลลัพธ์เดียวกันสำหรับตัวเลือกที่แตกต่างกันของขั้นตอนเวลา "นอก" เพื่อนร่วมงานของฉันแสดงรหัสเก่าแก่ฉันและฉันเพิ่งเพิ่มหนึ่งบรรทัดใน odefun ของฉัน
function y_out = odefun(t,y_in,...variables...)
...
[ Nonlinear equations evaluated ]
...
y_out = y_out + 0.1*y_in*(N0-Ntemp) ;
end
บรรทัดสุดท้ายจะคำนวณความแตกต่างของจำนวนอนุภาคปัจจุบัน (Ntemp) และจำนวนของอนุภาคที่ระบบควรเก็บ (N0) มันเพิ่มส่วนของอนุภาคกลับไปที่เอาต์พุตดังนั้นจึงสร้างความเสถียรของจำนวนอนุภาคทั้งหมดในระบบแทนที่จะปล่อยให้อนุภาคเหล่านั้นสลายตัวไปหมด
ฉันจะถามคำถามใหม่เกี่ยวกับมิติของปัญหาและความแตกต่างบางประการในการทำงานกับ picoseconds หรือ nanoseconds เป็นขั้นตอนเวลาใน ODE
ขอบคุณทุกคน. :)
ode45()
ที่จะช่วยให้คุณรักษาขั้นตอนที่ใหญ่กว่าเกณฑ์ที่กำหนด; คุณอาจต้องการดูว่า
ode45()
จะทำตามขั้นตอนที่เท่ากัน ทำไมคุณหลีกเลี่ยงการสร้าง "เวกเตอร์ยักษ์" อย่างแม่นยำใช่ไหม หากคุณต้องการแต้มที่เท่ากันให้ode45()
ดำเนินการตามปกติแล้วใช้การแก้ไข