Tải bản đầy đủ (.pdf) (15 trang)

các phương pháp adam giải bài toán cauchy cho phương trình vi phân thường cấp 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.57 MB, 15 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN TỐN ỨNG DỤNG VÀ TIN HỌC</b>

<b>BÁO CÁO MƠN HỌCPHƯƠNG PHÁP SỐ</b>

<b>ĐỀ TÀI</b>

<b>CÁC PHƯƠNG PHÁP ADAM GIẢI BÀI TOÁN CAUCHYCHO PHƯƠNG TRÌNH VI PHÂN THƯỜNG CẤP 1</b>

<b>GV hướng dẫn : HÀ THỊ NGỌC YẾNSinh viên thực hiện:</b>

Phạm Hồng Đức20185336Phan Thanh Tùng20185422

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Chủ đề 16: CÁC PHƯƠNG PHÁP ADAM GIẢI BÀI TỐN CAUCHY CHOPHƯƠNG TRÌNH VI PHÂN THƯỜNG CẤP 1</b>

<b>I.Phương pháp ngoại suy Adam :1. Ý tưởng phương pháp :</b>

− Nội dung của phương pháp Adam là tranh thủ các giá trị của nghiệm đã tìmđược ở bước trước để tính cho giá trị của nghiệm ở bước tiếp theo− Trở lại bài toán Cauchy :

<b>2. Xây dựng công thức ngoại suy Adam(Adam-Bashford)</b>

nội suy Newton lùi tại mốc x :<small>i</small>

(3) với

Thay (3) vào (2) :

(4)

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

ta được :

,Khi đó (5) trở thành :

(6)

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

− Từ cơng thức (6) ta muốn tìm y ta cần có s giá trị từ y , y<small>s01,…,</small>y mà<small>s-1</small>

và y , y<small>12, …,</small>y<small>s-1</small> chưa có

− Muốn tính y , y<small>12, …,</small>y<small>s-1</small> thì ta dùng cơng thức R-K bậc 4 :

<b>3. Thuật toán Adam ngoại suy :</b>

- Input : f, x0, y0, X, h, s (hàm f, khoảng của x :[x0,X], y(x0), bước nhảy, sốbước của phương pháp)

- Output : bảng giá trị x[i],y[i] tương ứng. Bước 1 : Nhập input và tính n = (X – x0)/h Bước 2 : Khởi tạo mảng lưu các giá trị x

 Bước 3 : Sử dụng công thức R-K bậc 4 để tính s giá trị khởi đầuK1 = hf(x, y)

K2 = hf(x + <sup>ℎ</sup><sub>2</sub>, y + <small>𝐾1</small>)<small>2</small>K3 = hf(x + <sup>ℎ</sup><sub>2</sub>, y + <small>𝐾2</small>)

<small>2</small>K4 = hf(x + h, y + K3)

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

 Bước 5 :Sử dụng bộ hệ số y’ đã xây dựng ở trên để tính các giá trị y tiếp<small>i</small>

<b>4. Ví dụ và kết quả chạy chương trình :</b>

− VD1:

Nghiệm đúng : y = g(x) = 3x<small>3</small>

● Kết quả chạy chương trình với số bước là 4 :

● Kết quả chạy chương trình với số bước là 7 :

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

● Kết quả chạy với số bước là 7 nhưng h là 0.1

− VD2 :

Nghiệm đúng : y = g(x) = (x+1) – 0.5e<small>2x</small>

● Kết quả chạy chương trình với 4 bước :

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

● Kết quả chạy với số bước bằng 7 :

● Kết quả chạy với số bước bằng 7 nhưng bước nhảy là 0.1 :

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Tương tự phần ngoại suy ta được công thức:

(7)Công thức (7) gọi là công thức nội suy Adam do tính y<small>i+1</small>tại điểm x thuộc đoạn [x<small>i+1i-s+2</small>,x ].<small>i+1</small>

Tuy vậy trong công thức nội suy (7) do y’<small>i+1</small>=f(x ,y<small>i+1i+1</small>) nên có chứa ẩn hàm y và (7) là<small>i+1</small>

phương trình phi tuyến đối với y . Giải (7), để tìm y ta sử dụng phương pháp lặp:<small>i+1i+1</small>

Với:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Có y<small>1</small>,y ,…,y<small>2s-1</small>ta tính được y<small>s</small>

<b>2. Thuật tốn :</b>

<b>Input: Thay đổi hàm f, nhập vào x , X, y , sai số ε, bước h, bậc S.</b><small>00</small>

• B1 : Tính các giá trị y<small>1</small>,y ,…,y<small>2s-1</small>

• B2 : Tính tích phân rồi suy ra hệ số của phép tốn

• B3 : Sử dụng vịng lặp để tính các giá trị y cịn lại rồi hiệu chỉnh bằng sai số

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

● Kết quả chạy chương trình với số bước bằng 7, sai số = 0.00001 :

● Kết quả chạy chương trình với số bước bằng 7 nhưng h = 0.1, sai số= 0.00001 :

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

− VD2 :

Nghiệm đúng : y = g(x) = (x+1) – 0.5e<small>2x</small>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

● Kết quả chạy chương trình với số bước là 7, sai số = 0.00001

<b>− Nhận xét :</b>

Thực hiện thêm nhiều ví dụ khác ta có các nhận xét sau:

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

+ Với bước h càng nhỏ, s càng lớn thì sai số nhận đc càng nhỏ do như đã nói ở trên sai sốnhận đc là 0(h )<small>s</small>

+ Sai số của nội suy Adam bé hơn sai số của ngoại suy Adam

<b>III.Phương pháp dự đoán – hiệu chỉnh(Predictor – Corrector)1. Ý tưởng phương pháp :</b>

rồi sử dụng Adam nội suy để hiệu chỉnh giá trị y . Cụ thể là như sau<small>s</small>

<b>2. Ví dụ và kết quả chạy chương trình :</b>

− VD1 :

Nghiệm đúng : y = g(x) = 3x<small>3</small>

● Kết quả chạy chương trình với số bước là 4 :

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

− VD2 :

Nghiệm đúng : y = g(x) = (x+1) – 0.5e<small>2x</small>

● Kết quả chạy chương trình với số bước là 4 :

<b>− Nhận xét : Sử dụng phương pháp kết hợp làm giảm thời gian chạy chương</b>

trình và sai số cũng nhỏ đi đáng kể.

</div>

×