Tại sao phương pháp của Runge-Kutta và Euler lại khác nhau như vậy?


10

Tôi đang giải một hệ phương trình tuyến tính, , bằng số. Tôi đã thực hiện điều này bằng cách sử dụng phổ biến các phương pháp của Euler và Runge-Kutta (RK). Tôi đã nhận thấy khá nhiều sự khác biệt giữa hai độ chính xác với giải pháp phân tích. Lý do cho điều này là gì?x˙_= =Một_x_


5
Trong cùng một bước, hai phương pháp có độ chính xác và ổn định rất khác nhau. Than ôi, đây chủ yếu là một câu hỏi toán học, và sẽ tốt hơn nếu bạn giải thích mức độ hiểu biết về Phương pháp số.
ja72

Trình độ của tôi với môn học này rất hạn chế. Nhưng cảm ơn vì đã chia sẻ ý kiến ​​của bạn.

Câu trả lời:


18

Điều đầu tiên, bạn có thể đã đề cập, phương pháp RK nào bạn đã sử dụng. Dưới đây là một giới thiệu ngắn gọn về các phương pháp RK và phương pháp Euler, đang hoạt động, có những ưu điểm và nhược điểm.

Phương pháp Euler

Phương pháp của Euler là phương pháp đặt hàng đầu tiên. Đó là một phương pháp đơn giản để ước tính điểm tiếp theo dựa trên tốc độ thay đổi tại điểm hiện tại và rất dễ để viết mã. Đây là một phương pháp bước duy nhất. Đáng chú ý, phương pháp Forward Euler không ổn định một cách vô điều kiện đối với các hệ dao động không bị ẩm (như hệ thống lò xo hoặc phương trình sóng) trong quá trình khử lưu lượng không gian. Đối với các vấn đề phức tạp và / hoặc điều kiện biên, nó có thể thất bại. Nó có thể được sử dụng để phân tích số cơ bản. Phương pháp này không được sử dụng phổ biến cho sự rời rạc không gian nhưng một số lần được sử dụng trong thời gian rời rạc. Sơ đồ này không được khuyến nghị cho phương trình vi phân hyperbol vì điều này là phổ biến hơn. Thứ tự hội tụ của sơ đồ này với sàng lọc lưới là rất kém. Mở rộng phương pháp Euler sang phương pháp bậc cao hơn là dễ dàng và đơn giản.

Phương pháp RK:

Các phương pháp Runge-Kutta thực sự là một họ các phương án bắt nguồn từ một phong cách cụ thể. Bạn có thể tham khảo liên kết này để có ý tưởng cơ bản về các phương thức RK: http://web.mit.edu/10.001/Web/Cference_Notes/Differential_Equations_Notes/node5.html

Phương thức Euler chuyển tiếp thực sự là phương pháp RK đơn giản nhất (1 giai đoạn, thứ tự đầu tiên). Các phương pháp RK chính xác bậc cao là nhiều giai đoạn vì chúng liên quan đến tính toán độ dốc ở nhiều bước tại hoặc giữa các giá trị thời gian rời rạc hiện tại và tiếp theo. Giá trị tiếp theo của biến phụ thuộc được tính bằng cách lấy trung bình trọng số của nhiều giai đoạn này dựa trên xấp xỉ chuỗi Taylor của giải pháp. Các trọng số trong mức trung bình có trọng số này được tính bằng cách giải các phương trình đại số phi tuyến tính được hình thành bằng cách yêu cầu hủy các thuật ngữ lỗi trong chuỗi Taylor. Phát triển các phương pháp RK bậc cao là tẻ nhạt và khó khăn mà không sử dụng các công cụ tượng trưng để tính toán.

Phương pháp RK phổ biến nhất là RK4 vì nó cung cấp sự cân bằng tốt giữa thứ tự chính xác và chi phí tính toán. RK4 là phương pháp Runge-Kutta rõ ràng theo thứ tự cao nhất, yêu cầu số bước tương tự như thứ tự chính xác (nghĩa là RK1 = 1 giai đoạn, RK2 = 2 giai đoạn, RK3 = 3 giai đoạn, RK4 = 4 giai đoạn, RK5 = 6 giai đoạn ,. ..). Ngoài thứ tự thứ tư, các phương pháp RK trở nên tương đối đắt hơn để tính toán.

Câu trả lời

  • Thông thường lỗi trong phương thức Euler cao hơn phương pháp RK bậc cao (RK2, RK3, v.v.), vì lỗi cắt ngắn trong phương thức bậc cao ít hơn so với phương pháp Euler.

  • Trong một số tài liệu cấp độ mới bắt đầu trong các phương pháp số, người ta thường đề cập một cách lỏng lẻo rằng các phương pháp bậc cao hơn (giả sử, RK4) đưa ra ít lỗi hơn so với phương pháp bậc thấp hơn (giả sử, phương pháp Euler). Hầu hết thời gian điều này là đúng, nhưng không phải tất cả thời gian. Tính chất này phụ thuộc vào lưới và điều kiện ban đầu và phương trình vi phân mà bạn đã xem xét.

  • Nếu giải pháp chính xác cho phương trình vi phân là một đa thức bậc , nó sẽ được giải chính xác bằng phương pháp Runge-Kutta thứ . Ví dụ, chuyển tiếp Euler sẽ chính xác nếu giải pháp là một dòng. RK4 sẽ chính xác nếu giải pháp là đa thức bậc 4 trở xuống.nn

  • "Lỗi chênh lệch tối đa tuyệt đối" ban đầu trong phương pháp RK4 bằng (hoặc) cao hơn phương pháp Euler đối với lưới thô và giảm với lưới tinh chỉnh cho các vấn đề với sóng ngắn hơn so với lưới . Bởi vì tốc độ hội tụ của phương pháp RK4 nhiều hơn Euler. Xin lưu ý rằng độ thô hoặc độ mịn của lưới hoàn toàn dựa trên phương trình vi phân, điều kiện ban đầu và sơ đồ số. Vui lòng tham khảo liên kết sau để biết thêm chi tiết. Mặc dù điều đó dựa trên sự khác biệt, chúng ta có thể so sánh tương đối giữa tích hợp số và phân biệt thời gian miễn là "tích hợp số" ổn định.

Bạn có thể thử thí nghiệm này trong mã của mình với các phương trình vi phân khác nhau, số lượng lưới khác nhau với Euler và RK4 nếu bạn có đủ thời gian. Có thể tìm ra thứ tự hội tụ của sơ đồ bằng cách tính độ dốc của âm mưu - so với .đăng nhập(error)đăng nhập(grTôid STôize)


6
Thật tuyệt khi thấy những người khác nhận ra rằng thứ tự cao hơn không phải lúc nào cũng có nghĩa là lỗi thấp hơn, chỉ là sự hội tụ nhanh hơn. Đó là một điểm quan trọng, nhưng rất nhiều người dường như bỏ lỡ nó!
tpg2114

Vâng thưa ngài, tôi đã biết điều này từ một trong những giáo sư của tôi giảng bài và xác minh điều này trong một trong những bài tập của tôi. Tôi nghĩ rằng nó bị thiếu bởi vì, hầu hết thời gian chúng tôi làm việc trong lưới tốt và phương trình vi phân tương đối không cứng.
AGN

Rất tốt đẹp trả lời tổng thể. Tôi chỉnh sửa để sửa một vài điểm và thêm một số chi tiết. Hy vọng bạn không phiền.
Doug Lipinski

1
@ Doug, Cảm ơn bạn đã dành thời gian quý báu của bạn trong việc này. Quan điểm của tôi rất đơn giản là các phương pháp bậc thấp hơn là chính xác trên lưới khóa học và các phương pháp bậc cao hơn là chính xác trong lưới mịn. Tại sao tôi đã đề cập, (Xin lưu ý rằng độ thô hoặc độ mịn của lưới hoàn toàn dựa trên phương trình vi phân, điều kiện ban đầu và sơ đồ số) trong câu trả lời của tôi là lỗi cắt ngắn trong các sơ đồ phụ thuộc vào kích thước lưới và độ lớn của bậc của hàm mà chúng tôi đã cắt ( Một cách gián tiếp, điều này có thể liên quan đến độ cứng của ODE).
AGN

Xin lỗi, tôi đã không thấy bình luận của bạn cho đến bây giờ. Mọi người chỉ nhận được thông báo nếu bạn @ trả lời tên người dùng đầy đủ của họ (hoặc nếu họ là chủ sở hữu bài đăng). Bắt đầu nhập @Dou...và nó sẽ cung cấp để tự động hoàn thành cho bạn. Tôi đã đăng một câu trả lời tại câu hỏi khác của bạn .
Doug Lipinski

8

Phương pháp Euler không tính đến độ cong của giải pháp, vì vậy nó có xu hướng cho kết quả khác nhau tùy thuộc vào kích thước bước. RK, tùy thuộc vào thứ tự, có tính đến độ cong. Và điều này làm cho "bước tiếp theo" ước tính chính xác hơn. Về cơ bản, nếu bạn đang giả vờ một đường thẳng là một xấp xỉ tốt của một đường cong (Euler), bạn sẽ luôn luôn vượt quá giải pháp của mình. Nhưng nếu bạn tính đến độ cong (RK), bạn có thể đi theo đường cong.

So sánh với trích dẫn khúc côn cầu nổi tiếng (Gretzky): Giày trượt Euler đến nơi quả bóng; Giày trượt băng Runge-Kutta đến nơi sẽ diễn ra.

Tôi khuyên bạn nên đọc về các thuật toán này. Bạn có thể bắt đầu với các bài viết Wikipedia ở đâyở đây .


5

Xin lỗi vì tôi đã thêm câu trả lời cho tôi, nhưng tôi không thể cưỡng lại việc bao gồm trang này từ Press, et al: "Công thức số trong C":

nhập mô tả hình ảnh ở đây


1
Rất độc đáo bổ sung cho câu trả lời khác. Cuốn sách đó là một tác phẩm kinh điển. Mặc dù nó cho thấy gốc FORTRAN của nó bằng cách đôi khi bắt đầu các mảng với chỉ số là 1.
Floris

2
@Floris: Tôi đã từng làm việc với một anh chàng đến từ miền bắc nước Ý, cao, mũi móc, tóc vàng và tất cả, tên là Giuseppe. Tôi đã hiểu về lý do tại sao mọi người không chuyển đổi sang ngôn ngữ hiện đại, như C :) Anh ấy nói với tôi bằng giọng trầm, sâu sắc, "MIke, Fortran giống như Rock and Roll. Nó sẽ không bao giờ chết."
Mike Dunlavey

1
tôi phù hợp với khoảng một nửa mô tả của bạn về Giuseppe ... :-)
Floris

4

Về cơ bản lý do chúng có mức độ chính xác khác nhau là ở cách chúng có nguồn gốc. Phương thức Euler (tôi giả sử chuyển tiếp) là thứ tự đầu tiên và có thể được rút ra một số cách. Dễ dàng nhất từ ​​theroem của Taylor. Trong phương pháp đó, chỉ có thuật ngữ thứ tự thứ hai được giữ lại do đó tạo ra lỗi thứ tự đầu tiên.

Mặt khác, các phương pháp Runge kutta được dàn dựng và có các hệ số được chọn rất cụ thể để "hủy bỏ" một số thứ tự các điều khoản lỗi. Rk4 là lệnh thứ tư kể từ zeroth, các điều khoản lỗi thứ tự thứ nhất, thứ hai, thứ ba hủy bỏ bởi sự lựa chọn các hệ số giai đoạn. Việc tạo ra các hệ số này không khó lắm và có lẽ có thể tìm thấy trên wikipedia nếu bạn thích xem nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.