Tôi có thể sử dụng sơ đồ bước thời gian rõ ràng để xác định bằng số liệu ODE có bị cứng không?


10

Tôi có ODE:

u ( 0 ) = - 1u=1000u+sin(t)
u(0)=11000001

Tôi biết rằng ODE đặc biệt này là cứng, phân tích. Tôi cũng biết rằng nếu chúng ta sử dụng phương pháp bước thời gian rõ ràng (chuyển tiếp) (Euler, Runge-Kutta, Adams, v.v.), phương thức sẽ trả về các lỗi rất lớn nếu bước thời gian quá lớn. Vì vậy, tôi có hai câu hỏi:

  1. Đây có phải là cách xác định ODE cứng, nói chung, khi một biểu thức phân tích cho cụm từ lỗi không có sẵn hoặc có thể dẫn xuất?

  2. Nói chung, khi ODE bị cứng, làm cách nào để xác định dấu thời gian "đủ nhỏ"?


Có các phương pháp tiêu chuẩn để phát hiện độ cứng bằng các phương pháp rõ ràng. Tôi đang đặt bình luận này ở đây vì có thể khó tìm thấy câu trả lời chi tiết hơn của tôi ở phía dưới.
David Ketcheson

Câu trả lời:


6

Để trả lời câu hỏi của bạn:

  1. Theo như tôi biết, trong thực tế, nếu các phương pháp rõ ràng đòi hỏi các bước thời gian cực kỳ nhỏ so với thang đo thời gian quan tâm của bạn (xem câu trả lời cho câu hỏi này về ý nghĩa của ODE là cứng ) để mang lại kết quả chính xác, sau đó cho tất cả ý định và mục đích, vấn đề của bạn là cứng nhắc. Để xác định các yêu cầu về kích thước bước, hãy dựa vào một trong nhiều thư viện được viết bởi các chuyên gia (bộ MATLAB là một ví dụ, cũng là SUNDIALS, VODE, DASPK, DASSL, LSODE, v.v.), có các bước phỏng đoán thời gian thích ứng. Hướng dẫn SUNDIALS giải thích các quy tắc quyết định mà họ sử dụng để xác định kích thước của các bước thời gian mà gói thực hiện, để cho bạn một ví dụ về các quy tắc được sử dụng trong thực tế.

  2. Một lần nữa, tôi sẽ sử dụng một thư viện với bước thời gian thích ứng trong thực tế, bởi vì nó hiệu quả hơn để làm như vậy. Tuy nhiên, nếu bạn tự mình viết mã một phương pháp, sử dụng các kích thước bước cố định, nếu bạn nhận thấy dao động lớn hoặc giải pháp của bạn "nổ tung", thì bạn sẽ nghi ngờ rằng bước thời gian của bạn quá lớn và giảm nó. Lặp lại cho đến khi bạn có được một giải pháp số hoạt động hợp lý. Sách giáo khoa như Ascher và Petzold và Hairer và Wanner có những ví dụ điển hình về hiện tượng này.


9

Một cách tốt hơn để xem xét nó là đối với một vấn đề cứng, bất kỳ phép tính rõ ràng ổn định nào cũng dẫn đến một lỗi nhỏ hơn nhiều so với sai số yêu cầu .

Có nhiều phương pháp tốt để tự động phát hiện độ cứng bằng cách sử dụng các sơ đồ rõ ràng, đặc biệt là các cặp Runge-Kutta được nhúng. Xem ví dụ:

Trong ví dụ thứ hai của faleichik, khi kích thước bước giảm, người ta sẽ thấy lỗi giảm đột ngột đến mức thấp hơn nhiều so với dung sai mong muốn điển hình khi ngưỡng thời gian ổn định được vượt qua. Vì vậy, một công cụ ước tính lỗi tốt thực sự sẽ tiết lộ độ cứng của vấn đề. Trong vấn đề đầu tiên, lỗi thu được với kích thước bước ổn định sẽ nằm trong phạm vi dung sai mong muốn điển hình, biểu thị độ cứng không cứng.

Lưu ý là hậu quả của bất kỳ vấn đề nào đều trở nên không cứng nếu cần phải có dung sai lỗi đủ nghiêm ngặt.


2
Đó là những giấy tờ tôi sắp liên kết trước khi thấy câu trả lời của bạn. +1, tất nhiên. :) Hãy để tôi cũng thêm cái này , cái này , và cuối cùng cái này . Đây chắc chắn là một vấn đề được nghiên cứu kỹ lưỡng ...
JM

9

1. Chúng ta có thể phát hiện độ cứng bằng cách áp dụng các phương pháp rõ ràng không?

  • [0,10]τ=1 τ

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

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

    τ=0.1[0,10]

    Vì vậy, vấn đề là cứng? Câu trả lời là KHÔNG ! Bước nhỏ ở đây là cần thiết để tái tạo chính xác các dao động của giải pháp .

    y(t)=2cosπt,y(0)=1.

  • τ=1

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

    τ=0.1

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

    τ=0.1[0,10]

    Là vấn đề này cứng? ! Chúng tôi đã thực hiện rất nhiều bước nhỏ để tái tạo giải pháp đang thay đổi rất chậm. Điều này là phi lý! Độ lớn của bước thời gian ở đây bị giới hạn bởi các thuộc tính ổn định của Euler rõ ràng .

    Vấn đề này là

    y(t)=2y(t)+sint/2,y(0)=1.


Kết luận: thông tin về dấu thời gian và các lỗi tương ứng là không đủ để phát hiện độ cứng. Bạn cũng nên nhìn vào giải pháp thu được. Nếu nó thay đổi chậm và stepize là rất nhỏ, vấn đề rất có thể là cứng. Nếu giải pháp dao động nhanh và bạn tin tưởng vào kỹ thuật ước tính lỗi của mình thì vấn đề này không phải là khó khăn.


2. Làm thế nào để xác định các bước tối đa cho phép tích hợp vấn đề cứng với phương pháp rõ ràng?

Nếu bạn sử dụng một số bộ giải rõ ràng hộp đen với điều khiển bước tự động thì bạn không cần phải làm gì: phần mềm sẽ thực hiện các bước theo yêu cầu một cách thích ứng.

[Λ,0]Λ=1000

[2,0]τΛτ

τ2|Λ|.

τ1|Λ|,
1/|Λ|<τ2/|Λ|

Tất nhiên một phân tích như vậy chủ yếu được áp dụng cho các vấn đề tuyến tính với phổ đã biết. Đối với các vấn đề thực tế hơn, chúng ta nên dựa vào các phương pháp phát hiện độ cứng bằng số (xem tài liệu tham khảo và nhận xét trong các câu trả lời khác).


Như đã đề cập trong một số bài báo mà David liên kết, phương pháp sức mạnh để tìm giá trị bản địa chiếm ưu thế (được sửa đổi phù hợp) là một lựa chọn thông thường cho các máy dò độ cứng dựa trên Jacobian.
JM
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.