Toán ứng dụng và Tính toán
Giải số phương trình vi phân
Các phương pháp từng bước như Euler và Runge–Kutta để xấp xỉ nghiệm khi không có công thức chính xác.
Trực giácXấp xỉ một đường cong từng bước nhỏ một
Phần lớn các phương trình vi phân xuất hiện trong vật lý, kỹ thuật và tài chính không có công thức tường minh viết bằng hàm sơ cấp. Các phương pháp giải số thay đường cong chính xác bằng một dãy giá trị xấp xỉ , tính từng bước chỉ dựa vào độ dốc mà phương trình cho biết tại mỗi điểm. Bước nhảy càng nhỏ thì đường gấp khúc xấp xỉ càng bám sát đường cong thật — nhưng bước nhỏ hơn cũng đòi hỏi nhiều phép tính hơn, nên mỗi phương pháp đều phải cân bằng giữa độ chính xác và chi phí tính toán.
Phổ thôngPhương pháp Euler
Định nghĩa: Phương pháp Euler (hiển)
Cho bài toán giá trị ban đầu với , chọn bước nhảy và đặt . Phương pháp Euler cập nhật giá trị xấp xỉ theo công thức , lặp lại với .
Ở đây là hàm độ dốc cho trước, là bước nhảy cố định, và là giá trị xấp xỉ cho giá trị đúng sau bước. Mỗi bước chỉ đơn giản đi theo đường tiếp tuyến mà dự đoán tại điểm hiện tại trên một đoạn ngang , rồi tính lại độ dốc tại điểm mới — về mặt hình học, đó là một chuỗi các đoạn thẳng xấp xỉ đường cong.
| Phương pháp | Số lần tính mỗi bước | Bậc sai số toàn cục | Phù hợp với phương trình cứng? |
|---|---|---|---|
| Euler hiển | 1 | Không (cần rất nhỏ) | |
| RK4 cổ điển | 4 | Không (vẫn cần nhỏ với bài toán cứng) | |
| Euler ẩn | 1 (cộng với giải một phương trình) | Có (ổn định-A với mọi ) |
Đại họcHội tụ: mỗi phương pháp chính xác đến đâu?
Giả sử liên tục Lipschitz theo với hằng số , và nghiệm chính xác thỏa trên . Khi đó sai số toàn cục sau bước với bước nhảy thỏa .
Vì sao đúng?
Mỗi bước Euler mắc một sai số cục bộ nhỏ cỡ do cắt bỏ chuỗi Taylor sau số hạng bậc nhất, nhưng các sai số cục bộ này có thể cộng dồn qua khoảng bước cần thiết để tới thời điểm cố định. Định lý cho thấy sự cộng dồn này không quá tệ: điều kiện Lipschitz ngăn các sai số cục bộ nhỏ bị khuếch đại nhanh hơn hàm mũ, nên sai số toàn cục chỉ còn bậc nhất, , theo bước nhảy — kém một bậc so với sai số cục bộ, đúng theo quy luật thường gặp ở các phương pháp một bước.
Chứng minh
Viết sai số cục bộ mắc phải trong một bước là hiệu giữa nghiệm chính xác khai triển bằng chuỗi Taylor và bước cập nhật Euler. Định lý Taylor cho với nào đó nằm giữa và , nên sai số cắt cụt cục bộ là , bị chặn bởi nhờ giả thiết .
Trừ bước cập nhật Euler khỏi khai triển Taylor chính xác này. Viết , hiệu của hai vế phải cho . Điều kiện Lipschitz chặn số hạng trong ngoặc vuông bởi , nên .
Vì (giá trị ban đầu là chính xác), khai triển đệ quy này bằng quy nạp cho , dùng đẳng thức chuỗi hình học. Cuối cùng, vì với mọi số thực , biến chặn trên thành — đúng là bất đẳng thức cần chứng minh, và rõ ràng là khi cố định.
Phương pháp Runge–Kutta bậc bốn cổ điển, xác định bởi các giai đoạn , , , và công thức cập nhật , có sai số cắt cụt cục bộ mỗi bước và, với cùng giả thiết Lipschitz như trên, sai số toàn cục sau bước.
Vì sao đúng?
RK4 tính độ dốc bốn lần mỗi bước tại các điểm trung gian được chọn khéo léo, thay vì một lần, rồi lấy trung bình với các trọng số theo tỉ lệ trên tổng phần. Công sức thêm này đổi lấy ba bậc chính xác cao hơn hẳn so với phương pháp Euler: khai triển khớp với nghiệm đúng theo chuỗi Taylor tới tận số hạng , thay vì chỉ dừng ở số hạng bậc nhất.
Chứng minh
Khai triển mỗi giai đoạn thành chuỗi Taylor quanh . Vì , và tính tại điểm giữa dùng dịch chuyển nửa bước theo hướng của một giai đoạn trước, thay quy tắc dây chuyền cho , , và vào từng tạo ra bốn đa thức theo khớp với tới bậc mà mỗi giai đoạn có thể thấy được.
Lập tổ hợp có trọng số rồi nhân với , các hệ số của và trong tổng này chính xác là các hệ số của khai triển Taylor tới tận số hạng — đây chính xác là tập điều kiện bậc cổ điển mà các hệ số và của bảng RK4 được chọn để thỏa mãn.
Vì hai chuỗi khớp nhau tới , số hạng đầu tiên chúng có thể khác nhau là số hạng , nên sai số cắt cụt cục bộ là mỗi bước. Như trong trường hợp Euler, cộng dồn các sai số cục bộ này qua bước cần thiết để tới một thời điểm cố định, dùng điều kiện Lipschitz trên , làm mất đúng một bậc của , cho sai số toàn cục .
Nâng caoPhương trình cứng và các phương pháp ẩn
Một phương trình vi phân được gọi là cứng khi nó trộn lẫn các thang thời gian rất khác nhau: một số thành phần của nghiệm suy giảm cực nhanh trong khi các thành phần khác biến đổi chậm, buộc các phương pháp hiển phải lấy bước rất nhỏ chỉ để giữ ổn định số, dù độ chính xác một mình cho phép bước lớn hơn nhiều. Với phương trình thử đơn giản với , phương pháp Euler chỉ ổn định khi đúng, tức khi , nên một âm mạnh (một chế độ suy giảm nhanh) buộc phải rất nhỏ.
Các phương pháp ẩn như Euler ẩn (lùi), , đòi hỏi giải một phương trình để tìm ở mỗi bước (thường bằng phương pháp Newton khi phi tuyến), nhưng đổi lại chúng vẫn ổn định với mọi bước nhảy trên phương trình thử này — một tính chất gọi là ổn định-A — đúng là điều cần thiết cho các hệ cứng xuất hiện trong động học hóa học, mô phỏng mạch điện và lý thuyết điều khiển.
Đại họcỨng dụng thực tiễn và Ví dụ minh họa
Các bộ tích phân số cho phương trình vi phân là xương sống tính toán của phần mềm mô phỏng: chúng đưa trạng thái của một hệ vật lý hoặc tài chính tiến lên theo thời gian chỉ dựa vào phương trình chi phối và điều kiện ban đầu. Phần mềm mô phỏng mạch điện dùng chúng để dự đoán điện áp và dòng điện, phần mềm cơ học thiên thể dùng chúng để lan truyền quỹ đạo vệ tinh, các kỹ sư hóa học dùng bộ giải cho hệ cứng để mô hình hóa mạng phản ứng nhanh, và tài chính định lượng dùng chúng để mô phỏng các mô hình lãi suất và định giá quyền chọn.
Ví dụ: Phóng điện mạch RC bằng phương pháp Euler
Một tụ điện trong mạch RC phóng điện theo (thời gian đo bằng đơn vị ) với điện áp ban đầu . Dùng phương pháp Euler với bước để ước lượng .
Lời giải
Ở đây , nên công thức cập nhật đơn giản là với .
Bước một: .
Bước hai: , nên ước lượng Euler là .
Nghiệm chính xác là , cho , vậy ước lượng Euler sau hai bước lệch khoảng — phù hợp với sai số toàn cục bậc nhất, , giảm tỉ lệ thuận với .
Ví dụ: Vì sao một phản ứng nhanh buộc bước nhảy phải rất nhỏ
Một mô hình động học hóa học đơn giản hóa có một pha chuyển tiếp suy giảm nhanh, chi phối bởi với . Xác định bước nhảy lớn nhất để phương pháp Euler hiển vẫn ổn định về số, và giải thích điều gì thay đổi nếu dùng Euler ẩn thay thế.
Lời giải
Gần pha chuyển tiếp nhanh, phương trình hoạt động giống phương trình thử tuyến tính , nên giá trị liên quan là . Euler hiển ổn định đúng khi , với điều này trở thành , tức — một trần rất nhỏ dù phần chậm của nghiệm hầu như không đổi trong khoảng đó.
Nếu chọn lớn hơn , các giá trị số bắt đầu dao động với biên độ tăng dần dù nghiệm đúng trơn và bị chặn: đây là lỗi ổn định, không phải lỗi độ chính xác, vì sai số cắt cụt cục bộ thực ra vẫn chấp nhận được ở một lớn hơn nhiều.
Chuyển sang Euler ẩn, , điều kiện ổn định cho cùng phương trình thử trở thành , đúng với mọi khi : phương pháp này ổn định-A, nên bước nhảy có thể được chọn hoàn toàn dựa trên độ chính xác cần có để theo dõi phần chậm của nghiệm, chứ không phải dựa trên pha chuyển tiếp nhanh.
Dùng phương pháp Euler với , và bước nhảy , giá trị xấp xỉ sau một bước là bao nhiêu?
Bậc chính xác toàn cục của phương pháp Runge–Kutta bậc bốn (RK4) cổ điển là bao nhiêu?
Khi áp dụng Euler hiển cho một phương trình vi phân cứng, điều gì thường xảy ra nếu bước nhảy chỉ lớn hơn một chút so với ngưỡng ổn định?
Điều nào sau đây là một ứng dụng thực tế điển hình của các bộ giải số phương trình vi phân?
Tài liệu tham khảo
- J. C. Butcher (2016). Numerical Methods for Ordinary Differential Equations
- E. Hairer, S. P. Norsett, G. Wanner (1993). Solving Ordinary Differential Equations I: Nonstiff Problems