Này và cảm ơn vì đã dành thời gian để xem xét câu hỏi của tôi. Đây là phiên bản cập nhật của câu hỏi của tôi mà tôi đã đăng trước đó trong vật lý.stackexchange.com
Tôi hiện đang nghiên cứu một máy kéo sợi exciton 2D Bose-Einstein Condensate và tò mò về trạng thái cơ bản của hệ thống này. Phương pháp toán học để đến trạng thái cơ bản được gọi là phương pháp thời gian tưởng tượng .
Phương pháp này rất đơn giản mà thời gian trong cơ học lượng tử được thay thế bằng tưởng tượng một thay thế này khiến cho các hạt năng lượng cao trong hệ thống của tôi bị hư hỏng nhanh hơn so với những năng lượng thấp. Bình thường hóa lại số lượng hạt trong mỗi bước tính toán, chúng tôi kết thúc với một hệ thống các hạt năng lượng thấp nhất, hay còn gọi là. trạng thái mặt đất.
Các phương trình trong câu hỏi là phi tuyến, được gọi là phương trình Schrödinger phi tuyến , đôi khi là phương trình Gross-Pitaevskii . Để giải quyết vấn đề tôi đang sử dụng Matlabs ode45 giúp phát triển hệ thống theo thời gian và cuối cùng đạt đến trạng thái cơ bản.
- Ghi chú! Phương trình Schrödinger phi tuyến bao gồm laplacian và một số thuật ngữ vi phân khác trong không gian. Tất cả đều được giải quyết bằng cách sử dụng biến đổi Fourier nhanh. Cuối cùng, chúng tôi chỉ có một thời gian ODE. *
Vấn đề và câu hỏi của tôi: Các tính toán đi từ đến t f . Các ode45 được đặt trong một cho vòng lặp vì vậy nó không tính toán một vector khổng lồ [ t 0 , ... , t f ] cùng một lúc. Vòng đầu tiên sẽ bắt đầu với ode45 (odefun, [ t 0 , t 0 + Δ / 2 , t 0 + Δ ] , y , ... ) và sau đó đi vào thời gian tiếp theo từ t 0 + Δ. Đây là bước thời gian là vấn đề của tôi. Các lựa chọn khác nhau trong các bước thời gian mang lại cho tôi các giải pháp trạng thái cơ bản khác nhau và tôi không biết làm thế nào để xác định bước thời gian nào mang lại cho tôi trạng thái cơ bản "chính xác nhất"!
Nỗ lực của tôi: Tôi nhận ra rằng trong sơ đồ này, các bước thời gian lớn sẽ khiến số lượng hạt lớn bị phân rã trước khi được tái chuẩn hóa thành số hạt ban đầu trong khi các bước thời gian nhỏ sẽ khiến lượng hạt nhỏ hơn bị phân rã trước khi được tái chuẩn hóa. Suy nghĩ ban đầu của tôi là các bước thời gian nhỏ sẽ đưa ra một giải pháp chính xác hơn nhưng dường như ngược lại.
Tôi không phải là chuyên gia về số nên việc lựa chọn ode45 chỉ đơn giản là tùy ý. ode113 cho tôi điều tương tự. :
Có ai có bất kỳ suy nghĩ về vấn đề này. Hãy cho tôi biết nếu cần thêm chi tiết.
Cảm ơn bạn.
Cập nhật 1: Tôi đã nghiên cứu phương pháp thời gian tưởng tượng và ODE. Có vẻ như nếu bước thời gian không đủ nhỏ thì toàn bộ mọi thứ trở nên không ổn định. Điều này khiến tôi tự hỏi liệu phương trình phi tuyến của tôi có bị cứng không khiến mọi thứ trở nên khó khăn hơn nhiều so với những gì tôi hiểu. Tôi sẽ cập nhật cho bạn.
Cập nhật 2: CỐ ĐỊNH: Vấn đề thực sự có sự chuẩn hóa bên ngoài ODE. Nếu chuẩn hóa được giữ bên trong odefun thì ODE trả về kết quả tương tự cho các lựa chọn khác nhau của các bước thời gian "bên ngoài". Đồng nghiệp của tôi đã cho tôi xem các mã cũ hơn và tôi chỉ cần thêm một dòng trong odefun của mình.
function y_out = odefun(t,y_in,...variables...)
...
[ Nonlinear equations evaluated ]
...
y_out = y_out + 0.1*y_in*(N0-Ntemp) ;
end
Dòng cuối cùng tính toán sự khác biệt về số lượng hạt hiện tại (Ntemp) và số lượng hạt mà hệ thống nên giữ (N0). Nó thêm một phần của các hạt trở lại đầu ra và do đó tạo ra sự ổn định tổng số hạt trong hệ thống thay vì làm cho tất cả chúng bị phân rã.
Tôi cũng sẽ đặt ra một câu hỏi mới liên quan đến tính chiều của vấn đề và một số khác biệt khi làm việc với picosecond hoặc nano giây như các bước thời gian trong ODE.
Cảm ơn tất cả. :)
ode45()
đó cho phép bạn giữ lại các bước lớn hơn một ngưỡng nhất định; Bạn có thể muốn nhìn vào đó.
ode45()
thực hiện các bước không thể thiếu. Tại sao, chính xác, bạn đang tránh việc tạo ra "vectơ khổng lồ"? Nếu bạn thực sự cần các điểm tương đương,ode45()
hãy tiến hành như bình thường và sau đó sử dụng phép nội suy.