Độ cương (stiffness) là một khái niệm khá mơ hồ, nhưng ảnh hưởng của chúng và công thức xử lý độ cương được biết đến rất nhiều khi giải ODEs. LTIs có thể cương, nhưng khi chúng ta thêm tác động của các phương trình đại số và đặc biệt là những tác động của trễ đối với GENLTIs, không đơn giản để lý giải một cách rõ ràng về ý nghĩa của độ cương đối với những bài toán này. Thật vậy, ngay cả đối với DODEs cương, chỉ có một vài code và một chút ít cơ sở lý luận, (xem [10]). Trong trường hợp ODEs, một bài toán là cương khi cỡ bước được xác định bởi tính ổn định. Tương tự như vậy, chừng nào những ảnh hưởng của trễ chiếm ưu thế hơn so với lựa chọn cỡ bước, một bài toán không thể là rất cương. Trong trường hợp đầu tiên này, đây là bài toán làm thế nào mà khoảng cách giữa một điểm của D và điểm kế tiếp, so sánh được với chiều dài của khoảng lấy tích phân. Tuy nhiên, việc tưởng tượng ra việc ước lượng và cách giải bài toán một cách ổn định lại rất dễ dàng; bài toán cương sẽ được dự kiến khi giải ODEs. Trong mọi tình huống cần cẩn trọng khi lựa chọn một công thức để giải ODEs cương. Dù sao đi nữa thì độ cương của LTIs được chứa trong lớp các mô hình có thể giải được.
Phương pháp thích hợp cho ODEs cương là hoàn toàn ẩn, thực tế này đã dẫn đến rất nhiều khó khăn. May mắn thay, những khó khăn này không xuất hiện khi giải GENLTIs. Chúng ta quyết định sử dụng phương pháp một bước vì một bộ nhớ dẫn tới nhiều khó khăn khi phải nói về các nghiệm gián đoạn. Chúng ta sẽ trở lại trường hợp tổng quát nói về các bước “dài” trong mục 2.6, nhưng bây giờ chúng ta hãy nghĩ đến việc sử dụng các phương pháp đa bước sao cho các
Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc.tnu.edu.vn
biến đại số xuất hiện một cách rõ ràng. Quan sát chủ yếu cho thấy, hầu hết các phương trình vi phân là tuyến tính và Jacobian là không đổi, vì vậy các phương trình đại số xác định một bước với phương pháp Runge-Kutta ẩn đều cho một hệ phương trình tuyến tính. Khi sử dụng phần mềm MATLAB các phương trình đại số tuyến tính sẽ được giải rất nhanh và chính xác. Các code đặc trưng cho ODEs cương làm việc với một cỡ bước không đổi cho đến khi cần phải giảm cỡ bước hoặc tới khi đủ điều kiện để tăng cỡ bước. Điều này được thực hiện nhằm làm giảm chi phí của hệ đại số tuyến tính. Tương tự như vậy, trong bối cảnh hiện nay, chúng ta lưu được một nhân tử hóa LU và sử dụng nó miễn sao cỡ bước là không thay đổi. Không giống với các code tiêu biểu cho ODEs cương, không có sự lặp lại khi đánh giá một công thức ẩn và do đó không có lý do gì để thay đổi phép tuyến tính hóa và nhân tử hóa vì kết quả là không hội tụ.
Lựa chọn đầu tiên của chúng ta là công thức Runge-Kutta ẩn dựa trên công thức cầu phương Gauss-Legendre hai điểm. Công thức này có thể có thứ tự bậc cao nhất là hai giai đoạn, có tên là 4, và là A - ổn định. Trải nghiệm của chúng ta với công thức này, là khá khả quan cho đến khi chúng ta gặp bài toán mà chúng ta gọi là slow, được trình bày sau đây. Đối với t 0 các phương trình là:
10001 625 64 0,01 . 16 0 0 x t x t z t ( ) 78,1406 14,6484 1 z t x t
Các giá trị riêng của ma trận A là 1, 10000 và khoảng lấy tích phân là 0, 20 , vì vậy đây sẽ là một ODE cương nếu không có trễ. Đây là một DODE phát triển chậm, thiết lập bối cảnh cho độ cương vì vậy nghiệm trở nên trơn hơn khi tiến hành lấy tích phân.
Khi chúng ta cố gắng giải bài toán này với công thức Gauss-Legendre A
- ổn định, chúng ta sẽ gặp phải một phản ứng đặc trưng của độ cương khi giải ODEs: Mặc dù nghiệm là trơn, các code có nhiều bước không đạt và cỡ bước
trung bình khá ngắn so với Tf . Cuối cùng, chúng ta đi đến nghi ngờ rằng phản ứng này là do các tác động kết hợp của cả trễ và công thức vì công thức này không bị giảm ở vô cực. Vì lý do đó, chúng ta đã thử nghiệm công thức Radau IIA hai giai đoạn. Công thức này có thứ tự bậc 3 nhưng lại cực kỳ ổn định, được biết là có tính ổn định tốt khi giải các DODEs (xem [10]). Công thức mới này giúp làm sáng tỏ những khó khăn của chúng ta: Một cỡ bước nhỏ là cần thiết để giải bài toán điều kiện ban đầu với cỡ bước nhỏ nhất khoảng 4 10 . 8 Các cỡ
bước trung bình là khoảng 4 10 2 và phép lấy tích phân diễn ra một cách thuận
lợi. Khi sử dụng công thức này tất cả các bài toán thử của chúng ta được giải rất hiệu quả, tương tự như khi sử dụng công thức khác. Một điều ngạc nhiên, bậc cao hơn của công thức Gauss-Legendre đã không thuận lợi, chúng ta vẫn có thể giải được các bài toán nhưng độ chính xác không cao và nghiệm có thể không trơn. Thời gian đóng vai trò quan trọng trong ứng dụng này. Bởi vì giai đoạn sau của công thức Radau IIA đã cho các kết quả tại cuối bước, cho nên việc sử dụng của công thức này là đơn giản hơn và nhanh gọn hơn. Có thể nhận xét rằng chúng ta đã sử dụng một chương trình tương tự để ước lượng và điều khiển sai số cho cả hai công thức, điều đó sẽ được giải thích trong phần sau. Tất cả các kết quả số ở đây đã được tính với công thức Radau IIA hai giai đoạn.