Hai dan terima kasih telah meluangkan waktu untuk melihat pertanyaan saya. Ini adalah versi terbaru dari pertanyaan saya yang saya posting sebelumnya di physics.stackexchange.com
Saat ini saya sedang mempelajari spin exciton 2D Bose-Einstein Condensate dan saya ingin tahu tentang keadaan dasar sistem ini. Metode matematika untuk mencapai keadaan dasar disebut metode waktu imajiner .
Metode ini sangat sederhana di mana waktu dalam mekanika kuantum digantikan oleh imajiner satu Substitusi ini menyebabkan partikel energi tinggi dalam sistem saya meluruh lebih cepat daripada yang energi rendah. Menormalkan kembali jumlah partikel dalam setiap langkah perhitungan kita berakhir dengan sistem partikel energi terendah, alias. keadaan dasar.
Persamaan yang dimaksud adalah nonlinier, disebut persamaan Schrödinger nonlinier , kadang-kadang persamaan Gross-Pitaevskii . Untuk mengatasi masalah ini saya menggunakan Matlabs ode45 yang mengembangkan sistem maju dalam waktu dan akhirnya mencapai keadaan dasar.
- Catatan! Persamaan Schrödinger nonlinear termasuk laplacian dan beberapa istilah diferensial lainnya dalam ruang. Ini semua diselesaikan dengan menggunakan transformasi Fourier cepat. Pada akhirnya kita hanya memiliki ODE waktu. *
Usaha saya: Saya menyadari bahwa dalam skema ini langkah-langkah waktu yang besar akan menyebabkan sejumlah besar partikel membusuk sebelum dinormalisasi ulang ke jumlah partikel semula sedangkan langkah-langkah waktu yang kecil akan menyebabkan jumlah partikel yang lebih kecil membusuk sebelum kembali dinormalisasi. Pikiran awal saya adalah bahwa langkah waktu yang kecil harus memberikan solusi yang lebih akurat tetapi tampaknya sebaliknya.
Saya bukan ahli numerik sehingga pilihan ode45 benar-benar sewenang-wenang. ode113 memberiku hal yang sama. :(
Apakah ada yang punya pemikiran tentang hal ini. Beri tahu saya jika ada detail tambahan yang dibutuhkan.
Terima kasih.
Pembaruan 1: Saya telah meneliti metode waktu imajiner dan ODE. Tampaknya jika langkah waktu tidak cukup kecil semuanya menjadi tidak stabil. Ini membuat saya bertanya-tanya apakah persamaan nonlinear saya kaku yang membuat banyak hal lebih sulit dari apa yang saya mengerti. Saya akan membuat Anda diperbarui.
Pembaruan 2: TETAP: Masalahnya memang memiliki normalisasi di luar ODE. Jika normalisasi disimpan di dalam odefun maka ODE mengembalikan hasil yang sama untuk pilihan langkah-langkah waktu "luar" yang berbeda. Rekan saya menunjukkan kode yang lebih lama dan saya hanya menambahkan satu baris di odefun saya.
function y_out = odefun(t,y_in,...variables...)
...
[ Nonlinear equations evaluated ]
...
y_out = y_out + 0.1*y_in*(N0-Ntemp) ;
end
Baris terakhir menghitung perbedaan jumlah partikel saat ini (Ntemp) dan jumlah partikel yang harus dimiliki sistem (N0). Ini menambahkan sebagian partikel kembali ke output dan dengan demikian menciptakan stabilitas jumlah partikel total dalam sistem bukannya membuat mereka semua membusuk.
Saya juga akan mengajukan pertanyaan baru mengenai dimensi masalah dan beberapa perbedaan dalam bekerja dengan picoseconds atau nanoseconds sebagai langkah waktu dalam ODE.
Terima kasih semua. :)
ode45()
yang memungkinkan Anda mempertahankan langkah-langkah yang lebih besar dari batas tertentu; Anda mungkin ingin melihatnya.
ode45()
mengambil langkah-langkah yang sama. Mengapa, tepatnya, apakah Anda menghindari generasi "vektor raksasa"? Jika Anda benar-benar membutuhkan titik-titik bersyarat,ode45()
lanjutkan seperti biasa, lalu gunakan interpolasi.