Vùng hút Mạch Chua

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp runge kutta và thuật toán tính số mũ luyapunov của hệ động lực (Trang 26)

7, b=−5

7 và giá trị ban đầu[0.1,0.1,0.1]

1.3. Số mũ Lyapunov

Số mũ Lyapunov của hệ dùng để xác định một thành phần được nói đến trong tất cả các định nghĩa về hỗn loạn ở trên, đó là tính nhạy cảm với điều kiện ban đầu. Nó cung cấp một độ đo về sự phân tách theo tiến trình thời gian của những quỹ đạo xuất phát ở những giá trị ban

đầu gần nhau. Hai quỹ đạo với giá trị ban đầu rất gần nhau nhưng có số mũ lyapunov dương sẽ phân tách rất nhanh. Nghiệm nhận được sẽ hoàn toàn khác nhau. Hình 1.5 mô tả về sự phân tách này. Một quỹ đạo y được làm nhiễu bởi . Sau một lần lặp, y1 và nghiệm bị nhiễu y1∗ cách nhau một khoảng d1. Số mũ Lyapunov dương sẽ đảm bảo cho sự phân tách này lớn lên theo những lần lặp sau. Một hệ có tất cả số mũ Lyapunov đều âm sẽ hội tụ về điểm cố định hay một chu trình tuần hoàn và không có hành vi hỗn loạn.

Một hàm trơn là hàm khả vi vô hạn lần. Tất cả các vế phải trong các hệ xét ở trên đều là hàm trơn. Alligood và đồng tác giả đã đưa ra định nghĩa số mũ Lyapunov của hàm trơn như sau [5], [3].

Định nghĩa 1.3.1. Với k = 1,2, ..., m, rnk là độ dài của trục trực giao dài nhất thứ k của JnU, với Jn là định thức Jacobian tại lần lặp thứ n

của f và U là cơ sở trực giao của Rm.

Các biến rkn đo sự thay đổi của hình cầu lân cận xung quanh x0. Các đạo hàm trong Jacobian đo sự phân tách cực nhỏ. Hình cầu nhiễu giá trị ban đầu nằm trong Rm tương tự như khoảng cách thẳng được mô tả trong ví dụ hình 1.5.Ví dụ về sự thay đổi của hình cầu điều kiện ban đầu được cho trong hình 1.6. Ta định nghĩa số Lyapunov thứ k của f là

Lk = lim

n→∞(rkn)1n (1.3.1) Số mũ Lyapunov thứ k của f là

λk = lnLk (1.3.2)

Các số Lyapunov đo mức độ kéo dài hoặc nén trung bình theo hướng trục trên mỗi lần lặp. Nếu một số Lyapunov của hệ lớn hơn 1 thì theo hướng trục đó có một quỹ đạo phân tách ra từ một quỹ đạo khác và

Hình 1.5: Hai quỹ đạo sai khác rất nhỏ ban đầu sẽ phân tách xa khi số lần lặp tăng lên nếu số mũ Lyapunov dương.

hệ thể hiện tính chất nhạy cảm với điều kiện ban đầu. Và khi đó số mũ Lyapunov tương ứng sẽ dương. Điều này dẫn tới định nghĩa (1.1.4), một hệ là hỗn loạn nếu có số mũ lyapunov dương.

Để tính số mũ Lyapunov cho hệ động lực liên tục, một phương pháp giải số được áp dụng từ thời điểm ban đầu đến thời điểm kết thúc sử dụng bước thời gian cố định. Thông thường khoảng thời gian càng nhỏ thì độ chính xác càng cao. Nghiệm số rời rạc nhận được với quỹ đạo tiến theo thời gian sẽ cho thấy một số hành vi của hệ. Các phương pháp thay đổi bước lưới không được đề cập ở đây vì sự phức tạp của nó.

Hình 1.6: Mô tả về sự thay đổi của hình cầu điều kiện ban đầu qua ánh xạ

1.4. Một số tính chất của phương pháp giải số

Việc tính toán số mũ Lyapunov yêu cầu giải số các hệ phương trình vi phân thường (ODEs). Rất nhiều ODEs xuất phát từ thực tế nên chúng không có nghiệm giải tích (nghiệm đóng), các nhà khoa học phải tìm cách giải số nó sao cho đạt độ chính xác mong muốn. Xuất phát từ tập hợp điều kiện ban đầu, có nhiều phương pháp để đưa ra lời giải số. Nhưng để so sánh, đánh giá các phương pháp số ta cần dựa vào các tính chất chung của chúng, đó là tính chính xác (thể hiện bởi bậc), tính ổn định (bùng nổ sai số hay không), và độ phức tạp tính toán (có hiệu quả và dễ thực hiện không? Thời gian tính toán ước lượng là bao lâu?). Việc lựa chọn phương pháp phải đảm bảo cân bằng giữa các yếu tố trên [1].

1.4.1. Tính ổn định

Tính ổn định của phương pháp là tính chất chống lại sự bùng nổ sai số lan truyền. Khi phương pháp không ổn định, một lỗi tính toán rất nhỏ xuất hiện sẽ làm lời giải số nhanh chóng tiến đến vô hạn. Tính ổn định phụ thuộc trực tiếp vào phương pháp hơn là phụ thuộc vào hệ đang xét. Vì vậy chúng thường được đo theo cách giống nhau. Tính ổn định

của phương pháp thường được mô tả bằng một vùng trên mặt phẳng phức, được gọi là vùng ổn định. Vùng ổn định của phương pháp được xác định từ bài toán giá trị ban đầu:

˙

x = zx z ∈ C, t ≥ 0 x0 = 1 (1.4.1) Dễ thấy bài toán này có nghiệm giải tích

x(z, t) = ezt (1.4.2)

Ta có định nghĩa sau:

Định nghĩa 1.4.1. Vùng ổn định là tập hợp các giá trị z mà hành vi bị chặn của nghiệm thực tế cũng thể hiện trong nghiệm số. Tập hợp này đảm bảo cho nghiệm số xˆn(z, t) của phương trình (1.4.1) thỏa mãn:

lim

n→∞xˆn(z, t) = 0 (1.4.3) Với z ∈ C có phần thực âm, giới hạn của nghiệm (1.4.2) bằng 0 khi t→ ∞. Nếu z có phần thực dương, giới hạn bằng ∞. Vì vậy số phức z với phần thực âm nằm trong vùng ổn định.

Các phương pháp số mong muốn chứa toàn bộ nửa trái của mặt phẳng phức trong miền ổn định vì trong miền này giới hạn của nghiệm giải tích bằng 0 [17], [1]. Nếu điều này thỏa mãn, phương pháp được gọi là ổn định tuyệt đối. Tuy nhiên chỉ những phương pháp ẩn mới có thể ổn định tuyệt đối.

Định nghĩa 1.4.2. Gọi λi là giá trị riêng của ma trận Jacobian của

hệ ODEs. Nghiệm số là ổn định nếu λih nằm trong vùng ổn định của

phương pháp, với h là bước lưới.

Tính ổn định của nghiệm số phụ thuộc cả phương pháp số và hệ phương trình bởi vì vùng ổn định phụ thuộc vào phương pháp số còn

các giá trị riêng của ma trận Jacobian lại phụ thuộc vào hệ ODEs. Trong thực tế, nghiệm số được cho là ổn định nếu còn bị chặn và không ổn định nếu nó biểu hiện tính không bị chặn.

Cần chú ý rằng, ý tưởng về tính ổn định được dựa trên hệ tuyến tính. Và việc chuyển từ hệ tuyến tính với nghiệm chính xác sang hệ phi tuyến với nghiệm không chính xác là không hoàn hảo [17]. Mặc dù vậy, tính ổn định tuyến tính là một tiêu chuẩn tổng quát được sử dụng để mô tả độ tin cậy của một phương pháp số. Hình 1.7 thể hiện vùng ổn định của phương pháp Runge-Kutta bậc 4 (RK4). Dễ thấy rằng RK4 không ổn định tuyệt đối.

Hình 1.7: Vùng ổn định của phương pháp Runge-Kutta bậc 4. Với những giá trị ban đầu trong vùng này, nghiệm số của (1.4.1) bị chặn.

1.4.2. Độ khó

Độ khó thể hiện đặc tính của hệ phương trình hơn là của phương pháp giải số. Tuy nhiên do nó có ảnh hưởng lớn đến nghiệm số khi lựa chọn phương pháp giải số cho bài toán nên được trình bày ở đây. Độ khó

là tính chất mô tả sự khó khăn của việc tìm nghiệm số của hệ. Thông thường nghiệm ổn định của hệ khó thường yêu cầu bước lưới h nhỏ hơn. Độ khó thường được đo bởi tỷ số khó (stiffness ratio) - là tỷ số giữa giá trị riêng lớn nhất và nhỏ nhất của ma trận Jacobian. Việc tính toán bao gồm cả số lần rất lớn và rất nhỏ cũng như lỗi chứa dấu phẩy động. Bảng 1.1 cung cấp các tỷ số khó của các hệ phương trình nghiên cứu trong luận văn. Với hệ Lorenz, Rossler và Rabinovich - Fabrikant tác giả sử dụng phương pháp Runge - Kutta bậc 4 với lưới đều h = 0.01, thời giantend = 1000và tính trung bình kết quả từ 1000 tập giá trị ban đầu ngẫu nhiên. Ta nhận thấy mặc dù hệ Rossler đơn giản hơn hệ Lorenz nhưng tỷ số khó lại cao. Mạch Chua có thể có hai ma trận Jacobian với các hệ số hằng số nên dẫn tới kết quả tỷ số khó chỉ bằng 2.4861.

Bảng 1.1: Tỷ số khó trung bình của các hệ nghiên cứu trong luận văn Hệ phương trình Các tham số t0 h tend Trials Tỷ số khó

Lorenz σ= 10, β= 83 ρ= 28 0 0.01 1000 1000 837530 Rossler a= 0.1 b= 0.2 c= 5.7 0 0.01 1000 1000 2094804 RF a= 0.1 b= 0.5 0 0.01 1000 1000 220912 Chua α= 9 β= 1007 a=−8 7 b=−5 7 2.4861 1.4.3. Độ chính xác

Độ chính xác của một phương pháp giải số được mô tả bởi bậc của nó. Một phương pháp số được gọi là có độ chính xác bậcρ nếu sai số của nghiệm số xˆ tỷ lệ với hρ, hay nói cách khác độ lệch x(tn+1)−xˆ(x(tn))

thỏa mãn:

x(tn+1)−xˆ(x(tn)) = O(hρ) (1.4.4) Rõ ràng với bước lưới h càng nhỏ thì độ lệch nghiệm là một vô cùng bé tương đương với hρ sẽ càng nhỏ. Nhưng độ chính xác phụ thuộc vào phương pháp. Với hai phương pháp Euler và RK4, với cùng bước lưới h = 10−2 ta có độ chính xác tương ứng lần lượt là 10−2 và 10−8. Và với phương pháp IRK8 độ chính xác còn cao hơn nữa.

Tuy nhiên độ chính xác càng cao thì chi phí tính toán bao gồm thời gian, chi phí bộ nhớ, độ khó trong việc lập trình thực hiện... cũng sẽ tăng cao tương ứng. Vì vậy ta phải cân nhắc giữa độ chính xác chấp nhận được và chi phí tính toán.

Để cung cấp hình ảnh trực quan về sự xác minh thực nghiệm của bậc, ta thường sử dụng biểu đồ hội tụ. Biểu đồ này mô tả sự sai khác giữa nghiệm số của phương trình x˙ = −x và nghiệm thựce−t dưới dạng hàm của bước lưới:

x(tn+1)−xˆ(x(tn)) ≈ Chρ (1.4.5) Lấy logarit hai vế ta có:

log(x(tn+1)−xˆ(x(tn)))≈ ρlogh+ logC (1.4.6) Trên hệ trục với hai trục thang logarit, biểu đồ này là một đường thẳng. Ví dụ về biểu đồ hội tụ của phương pháp Euler và RK4 được cho trong hình 1.8, có được theo cách như sau: Bắt đầu bởi tập hợp các số mũ đầu vào n = 10,20,40,80,160,320,640,1280,2560,5120, với n điểm đặt cách đều nhau giữa0 và1. Sau đó xác định bước lướih = n−11. Tính toán độ lệch giữa nghiệm số và nghiệm giải tích tại t = 1 với mỗi n và vẽ độ lệch đối với bước lưới trên trục logarit. Độ dốc của đường thẳng nối các điểm trên đồ thị sẽ là bậc của phương pháp. Trong hình 1.8, độ

dốc của phương pháp Euler và RK4 được thể hiện như mong đợi.

CHƯƠNG 2

PHƯƠNG PHÁP RUNGE-KUTTA VÀ THUẬT TOÁN TÍNH SỐ MŨ LYAPUNOV

Nội dung chương 2 tập trung vào hai vấn đề sau: Phương pháp Runge- Kutta giải hệ phương trình vi phân thường và hai thuật toán tính số mũ Lyapunov.

2.1. Phương pháp Runge-Kutta

2.1.1. Tổng quát về phương pháp

Phương pháp Runge-Kutta tìm nghiệm của hệ phương trình vi phân là tổng quát hóa của phương pháp Euler.

yn+1 = yn+hf (yn, tn) (2.1.1)

Nó chính xác hơn vì sử dụng nhiều hàm đánh giá trong mỗi bước, tuy nhiên nó cũng sẽ yêu cầu thời gian tính toán lâu hơn. Các bước thời gian được chia thành các giai đoạn ν và các phương trình được đánh giá trong mỗi bước đó. Các giai đoạn được gán trọng số và thêm vào các giá trị trước đó để có được lời giải số của một bước thời gian. Chi tiết có thể tham khảo trong [1], [7], tóm tắt phương pháp như sau:

Nghiệm xấp xỉ tại bước thời gian n+ 1 là

yn+1 = yn+ h

ν

X

i=1

biki (2.1.2)

Với yn là nghiệm số của bước trước, bi là các hệ số trọng số của giai đoạn ki, ki là các số gia, được tính như sau:

ki = f  yn +h ν X j=1 aijki   (2.1.3)

Nếu các giá trị số gia k của phương pháp được cho bằng các phương trình hiện, nó được gọi là phương pháp hiện. Nếu được cho bằng các phương trình ẩn thì nó được gọi là phương pháp ẩn. Với các phương pháp hiện, giá trị các số gia ở (2.1.3) được tính trực tiếp và (2.1.2) có thể giải được ngay. Phương pháp ẩn yêu cầu sử dụng phương pháp Neuton:

yn+1 = yn− f (yn)

f0(yn), (2.1.4) để giải hệ phi tuyến các số gia ki.

Một cách quen thuộc để liệt kê các hệ số của phương pháp Runge Kutta là sử dụng bảng Butcher [1], [8]. Dạng tổng quát của bảng Butcher như bảng 2.1 Trong đó ci là trọng số thời gian t trong giai đoạn k. Các

Bảng 2.1: Bảng Butcher dạng tổng quát. c1 a11 . . . a1ν c2 a21 · · · a2ν .. . ... ... ... cν aν1 · · · aνν b1 · · · bν

hệ phương trình vi phân được sử dụng trong luận văn là otonom (không phụ thuộc trực tiếptở vế phải) nên không sử dụng đến tham số này. Lưu ý rằng, với mọi phương pháp hiện các phần tử đường chéo chính và phía trên đường chéo chính aii đều bằng không. Phương pháp Runge-kutta đơn giản nhất- Phương pháp Euler – có bảng butcher như sau

Bảng 2.2: Bảng butcher của phương pháp Euler. 0 0

2.1.2. Phương pháp Runger – Kuttar hiện bậc 4

Phương pháp Runge-Kutta hiện bậc 4 phổ biến (RK4) như sau:

yn+1 = yn+ h6 (k1 + 2k2 + 2k3 +k4) k1 = f (yn) k2 = f yn+ 12hk1 k3 = f yn+ 12hk2 k4 = f (yn +hk3) (2.1.5)

Bảng Butcher của RK4 được cho trong bảng 2.3. Sự phổ biến của RK4 là vì ngoài độ chính xác bậc 4 trong 4 giai đoạn, nó còn dễ mô tả và thực hiện. Như đã nêu trong [1], [8], các phương pháp hiện bậc n > 4 không thể thực hiện với số giai đoạn bằngn. Từ đó nó phải sử dụng cấu trúc cây phân nhánh, vì vậy sẽ được bỏ qua ở đây.

Bảng 2.3: Bảng Butcher của phương pháp RK4 0 1 2 1 2 1 2 0 12 1 0 0 1 1 6 1 3 1 3 1 6

Chươgn trình Matlab cài đặt thuật toán này như sau: Hàm RK4 function v = rk4(V,t,k,F) s1 = feval(F,V,t); s2 = feval(F,V+k*s1/2,t+k/2); s3 = feval(F,V+k*s2/2,t+k/2); s4 = feval(F,V+k*s3,t+k); v = V+k*(s1+2*s2+2*s3+s4)/6;

2.1.3. Ví dụ về phương pháp Runge-Kutta ẩn 2 giai đoạn

Nếu các hệ số aij không đồng nhất bằng không khi i ≤ j như đã nói thì phương phương trình số gia ki là phương trình ẩn. Trong trường hợp này, phương pháp được gọi là Phương pháp Runge – Kutta ẩn. Thực hiện cài đặt phương pháp ẩn khó hơn phương pháp hiện vì đòi hỏi tìm nghiệm phi tuyến của các phương trình ẩn. Hệ phi tuyến này có số chiều ν ×d, trong đó ν là số giai đoạn và d là số chiều của hệ phương trình vi phân. Phương pháp Runge – Kutta ẩn bậc O > 4 không cần đến số giai đoạn lớn như phương pháp hiện mà vẫn có thể đạt được độ chính xác lớn hơn số giai đoạn. Các ví dụ về phương pháp ẩn với số giai đoạn ν với bậc lớn hơn ν có thể tham khảo thêm trong [4].

Chúng ta sẽ mô tả cách cài đặt phương pháp Neuton để sử dụng với phương pháp Runge-Kutta ẩn 2 giai đoạn. Áp dụng phương pháp RK ẩn cho như bảng sau cho hệ phương trình (2.1.6):

Bảng 2.4: Bảng Butcher của phương pháp RK ẩn hai giai đoạn

c1 a11 a12 a12 a21 a22 b1 b2   ˙ x ˙ y   =   x− 1 3xy 1 2x+ 23xy   (2.1.6)

Bởi vì phương pháp có hai giai đoạn, để đánh giá từ tn đến tn+1, việc đánh giá số gia ki =   ki(1) ki(2)   (2.1.7)

cần để chuyển từ (xn, yn) đến (xn+1, yn+1) được cho bởi phương trình         k1(1) k1(2) k2(1) k2(2)         =          xn +ha11k1(1) − 13k1(1)k1(2) +ha12k2(1)− 13k2(1)k2(2) yn+ha11 1 2k1(2) + 23k1(1)k1(2) +ha12 1 2k2(2) + 23k2(1)k2(2) xn +ha21k1(1) − 13k1(1)k1(2) +ha22k2(1)− 13k2(1)k2(2) yn+ha2112k1(2) + 23k1(1)k1(2) +ha2212k2(2) + 23k2(1)k2(2)          (2.1.8) Trong đó ký hiệuki(j) chỉ thành phần thứ j củaki. Chuyển sang vế trái, viết dưới dạng phương trình vế phải bằng 0 và sử dụng phương pháp Neuton để tìm giá trị k. Để làm việc này, ta phải tìm ma trận M các đạo hàm bậc nhất của phương trình nhận được. Bởi vì phương trình

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp runge kutta và thuật toán tính số mũ luyapunov của hệ động lực (Trang 26)

Tải bản đầy đủ (PDF)

(72 trang)