Tôi đang cố gắng giải phương trình thăng tiến nhưng có một dao động lạ xuất hiện trong lời giải khi sóng phản xạ từ ranh giới. Nếu bất cứ ai đã nhìn thấy vật phẩm này trước khi tôi quan tâm để biết nguyên nhân và làm thế nào để tránh nó!
Đây là một gif hoạt hình, mở trong cửa sổ riêng biệt để xem hoạt hình (nó sẽ chỉ phát một lần hoặc không ngay khi nó được lưu vào bộ nhớ cache!)
Lưu ý rằng sự lan truyền có vẻ rất ổn định cho đến khi sóng bắt đầu phản xạ từ ranh giới đầu tiên. Bạn nghĩ gì có thể xảy ra ở đây? Tôi đã dành vài ngày để kiểm tra mã của mình và không thể tìm thấy bất kỳ lỗi nào. Thật kỳ lạ vì dường như có hai giải pháp lan truyền: một tích cực và một tiêu cực; sau khi phản ánh từ ranh giới đầu tiên. Các giải pháp dường như đang đi dọc theo các điểm lưới liền kề.
Các chi tiết thực hiện theo.
Phương trình thăng tiến,
trong đó là tốc độ lan truyền.
Crank-Nicolson là sự rời rạc ổn định vô điều kiện (liên kết pdf) cho phương trình tiến lên với điều kiện thay đổi chậm trong không gian (chỉ chứa các thành phần tần số thấp khi biến đổi Fourier).
Sự rời rạc mà tôi đã áp dụng là,
Đặt các ẩn số ở phía bên tay phải cho phép điều này được viết ở dạng tuyến tính,
trong đó (lấy trung bình thời gian có trọng số đồng đều giữa điểm hiện tại và tương lai) và .
Các bộ phương trình này có dạng ma trận , trong đó,
Các vectơ và là số lượng đã biết và chưa biết về số lượng chúng ta muốn giải quyết.
Sau đó tôi áp dụng các điều kiện biên Neumann đã đóng ở ranh giới bên trái và bên phải. Theo các ranh giới khép kín, ý tôi là trên cả hai giao diện. Đối với các ranh giới khép kín, hóa ra (tôi sẽ không thể hiện công việc của mình ở đây) chúng ta chỉ cần giải phương trình ma trận trên. Như @DavidKetcheson đã chỉ ra, các phương trình ma trận trên thực sự mô tả các điều kiện biên Dirichlet . Đối với điều kiện biên Neumann,
Cập nhật
Hành vi có vẻ khá độc lập với sự lựa chọn các hằng số tôi sử dụng, nhưng đây là các giá trị cho cốt truyện bạn thấy ở trên:
- = 2
- dx = 0,2
- dt = 0,005
- = 2 (Gaussian hwhm)
- = 0,5
Cập nhật II
Một mô phỏng với hệ số khuếch tán khác không, (xem bình luận bên dưới), dao động biến mất, nhưng sóng không còn phản xạ nữa!? Tôi không hiểu tại sao?