2010-05-04 37 views

Trả lời

2

Nếu mọi thứ chỉ theo đường thẳng, bạn sẽ không sử dụng phương pháp nào, nhưng khi có điều gì đó thú vị (tức là phi tuyến tính), bạn cần xem xét cẩn thận hơn bằng cách xem xét - trực tiếp (verlet) hoặc bằng cách lấy các dấu thời gian nhỏ hơn (rk4).

+1

Vâng! Tôi nghĩ đây là một điều cực kỳ hữu ích để chỉ ra, và thiếu những câu trả lời khác toàn diện. Nếu bạn không tăng tốc, tích hợp Euler sẽ cho bạn kết quả chính xác, ngoại trừ số vòng tròn. Nhưng bạn gần như chắc chắn _do_ có khả năng tăng tốc. Vận tốc của bạn thay đổi. Nó không thay đổi ngay lập tức tại thời điểm lặp lại - nó thay đổi liên tục giữa các bước được tăng tốc trơn tru. đó là lý do tại sao các kỹ thuật tích hợp phức tạp hơn hỗ trợ chủ nghĩa hiện thực và có lẽ các tính chất khác như ổn định mô phỏng. – Benjohn

12

Euler method là lược đồ tích hợp thứ tự đầu tiên, nghĩa là tổng số lỗi tỷ lệ thuận với kích thước bước. Tuy nhiên, nó có thể không ổn định về mặt số lượng, nói cách khác, lỗi tích lũy có thể áp đảo phép tính cho bạn vô nghĩa. Xin lưu ý, sự bất ổn này có thể xảy ra bất kể bạn tạo kích thước bước nhỏ đến mức nào hoặc liệu hệ thống có tuyến tính hay không. Tôi không quen thuộc với tích hợp verlet, vì vậy tôi không thể nói đến hiệu quả của nó. Tuy nhiên, các Runge-Kutta methods khác với phương pháp Euler trong nhiều hơn chỉ là kích thước bước.

Thực chất, chúng dựa trên một cách tốt hơn để tính xấp xỉ đạo hàm. Các chi tiết chính xác thoát khỏi tôi vào lúc này. Nói chung, phương pháp Runge-Kutta thứ tư được coi là phương pháp làm việc của các phương án tích hợp, nhưng nó có một số disadvantages. Đó là một chút tiêu tan, nghĩa là một thuật ngữ phụ thuộc phái sinh nhỏ đầu tiên được thêm vào tính toán của bạn giống như ma sát được thêm vào. Ngoài ra, nó có một kích thước bước cố định mà có thể dẫn đến có thể làm cho nó khó khăn để đạt được độ chính xác mà bạn mong muốn. Ngoài ra, bạn có thể sử dụng lược đồ bước thích ứng, như là Runge-Kutta-Fehlberg method, cho độ chính xác thứ tự thứ năm để có thêm 6 đánh giá chức năng. Điều này có thể làm giảm đáng kể thời gian cần thiết để thực hiện phép tính của bạn trong khi cải thiện độ chính xác, như được hiển thị here.

+0

^Xin lưu ý, sự bất ổn này có thể xảy ra bất kể bạn tạo kích thước bước nhỏ đến mức nào hoặc hệ thống có tuyến tính hay không. Khi bạn nói tuyến tính, bạn đang đề cập đến thứ tự thứ 2 (gia tốc), không phải thứ tự thứ nhất (vận tốc), đúng không? Tôi tin rằng tom10 đã đề cập đến một vận tốc không tăng tốc ổn định. –

+0

@Steve H, khi tôi nói tuyến tính tôi đã đề cập đến định nghĩa chuẩn của một phương trình vi phân tuyến tính, không phải thứ tự của phương trình. – rcollyer

+2

Phương pháp Euler * là * phương pháp Runge – Kutta, vì vậy bạn không thể nói rằng phương pháp Runge – Kutta khác với phương pháp Euler. Ngoài ra, lưu ý rằng có nhiều phương thức Runge-Kutta thứ tự, nhưng một trong số chúng được gọi là phương pháp RK4 và đặc biệt nổi tiếng. Nhưng có lẽ đó là tiềm ẩn trong những gì bạn đang nói. – HelloGoodbye

14

Phương pháp Verlet rất tốt trong việc mô phỏng các hệ thống có bảo tồn năng lượng và lý do là nó là đối tượng. Để hiểu được câu lệnh này, bạn phải mô tả một bước thời gian trong mô phỏng của bạn như một hàm, f, ánh xạ không gian trạng thái vào chính nó. Nói cách khác, mỗi dấu thời gian có thể được viết trên biểu mẫu sau.

(x (t + dt), v (t + dt)) = f (x (t), v (t))

Chức năng bước thời gian, f, của phương pháp Verlet có đặc biệt tài sản mà nó bảo tồn khối lượng không gian nhà nước. Chúng ta có thể viết điều này bằng các thuật ngữ toán học. Nếu bạn có một tập hợp các trạng thái trong không gian trạng thái, thì bạn có thể xác định f (A) bằng

f (A) = {f (x) | cho x trong A}

Bây giờ, giả sử rằng các bộ A và f (A) đều mịn và đẹp để chúng ta có thể xác định âm lượng của chúng. Sau đó, một bản đồ symplectic, f, sẽ luôn luôn thực hiện rằng khối lượng của f (A) là giống như khối lượng của A. (và điều này sẽ được đáp ứng cho tất cả các lựa chọn tốt đẹp và mịn của A). Điều này được thực hiện bởi hàm bước thời gian của phương thức Verlet, và do đó phương thức Verlet là một phương thức symplectic.

Bây giờ câu hỏi cuối cùng là. Tại sao một phương pháp đối ứng tốt cho mô phỏng các hệ thống với bảo tồn năng lượng, nhưng tôi sợ rằng bạn sẽ phải đọc một cuốn sách để hiểu điều này.