Phương pháp tính với C++ - Chương 6
Số trang: 0
Loại file: pdf
Dung lượng: 235.13 KB
Lượt xem: 19
Lượt tải: 0
Xem trước 0 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tài liệu tham khảo giáo trình Phương pháp tính với C++ - Chương 6 Tính gần đúng đạo hàm và tích phân xác định
Nội dung trích xuất từ tài liệu:
Phương pháp tính với C++ - Chương 6 CHƯƠNG 6: TÍNH GẦN ĐÚNG ĐẠO HÀM VÀ TÍCH PHÂN XÁC ĐỊNH §1. ĐẠO HÀM ROMBERG Đạo hàm theo phương pháp Romberg là một phương pháp ngoại suy để xác định đạo hàm với một độ chính xác cao. Ta xét khai triển Taylor của hàm f(x) tại (x + h) và (x ‐ h): h2 h3 h4 ( 4) f( x + h) = f( x) + hf ′( x) + f ′′( x) + f ′′′( x) + f ( x) + ⋅ ⋅ ⋅ (1) 2 3! 4! h2 h3 h4 f( x − h) = f( x) − hf ′( x) + f ′′( x) − f ′′′( x) + f ( 4 ) ( x) − ⋅ ⋅ ⋅ (2) 2 3! 4! Trừ (1) cho (2) ta có: 2h 3 2h 5 ( 5) f( x + h ) − f( x − h) = 2 hf ′( x) + f ′′′( x) + f ( x) + ⋅ ⋅ ⋅ (3) 3! 5! Như vậy rút ra: f( x + h) − f( x − h) h 2 h 4 ( 5) f ′( x) = − f ′′′( x) − f ( x) − ⋅ ⋅ ⋅ (4) 2h 3! 5! hay ta có thể viết lại: 1 [f( x + h) − f( x − h)] + a 2 h 2 + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ f ′( x) = (5) 2h trong đó các hệ số ai phụ thuộc f và x. Ta đặt: 1 [f( x + h) − f( x − h)] ϕ( h) = (6) 2h Như vậy từ (5) và (6) ta có: D(1,1) = ϕ( h) = f ′( x) − a 2 h 2 − a 4 h 4 − a 6 h 6 − ⋅ ⋅ ⋅ (7) D( 2 ,1) = ϕ⎛ ⎞ = f ′( x) − a 2 2 4 6 h h h h − a4 − a6 − ⋅ ⋅ ⋅ ⎜⎟ (8) ⎝2⎠ 4 16 64 và tổng quát với hi = h/2i‐1 ta có : D(i ,1) = ϕ( h i ) = f ′( x) − a 2 h i2 − a 4 h i4 − a 6 h 6 − ⋅ ⋅ ⋅ (9) i Ta tạo ra sai phân D(1,1) ‐ 4D(2,1) và có: ϕ( h) − 4ϕ⎛ ⎞ = −3f ′( x) − a 4 h 4 − a 6 h 6 − ⋅ ⋅ ⋅ h 3 15 ⎜⎟ (10) ⎝2⎠ 4 16 Chia hai vế của (10) cho ‐3 ta nhận được: 4 D( 2 ,1) − D(1,1) 1 5 = f ′( x) + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ D( 2 ,2) = (11) 4 4 16 Trong khi D(1, 1) và D(2, 1) sai khác f′(x) phụ thuộc vào h2 thì D(2, 2) sai khác f′(x) phụ thuộc vào h4 . Bây giờ ta lại chia đôi bước h và nhận được: 158 4 6 D( 3 ,2) = f ′( x) + a 4 ⎛ ⎞ + a 6 ⎛ ⎞ + ⋅ ⋅ ⋅ 1 h 5 h ⎜⎟ ⎜⎟ (12) 4 ⎝ 2 ⎠ 16 ⎝ 2 ⎠ và khử số hạng có h4 bằng cách tạo ra: 15 D( 2 ,3) − 16 D( 3 ,2) = −15f ′( x) + ⋅ ⋅ ⋅ + a 6 h 6 (13) 64 Chia hai vế của (13) cho ‐15 ta có: 16 D( 3,2) − D( 2 ,2) 1 = f ′( x) − a 6 h 6 − ⋅ ⋅ ⋅ D( 3 ,3) = (14) 15 64 Với lần tính này sai số của đạo hàm chỉ còn phụ thuộc vào h6. Lại tiếp tục chia đôi bước h và tính D(4, 4) thì sai số phụ thuộc h8. Sơ đồ tính đạo hàm theo phương pháp Romberg là : D(1, 1) D(2, 1) D(2, 2) D(3, 1) D(3, 2) D(3, 3) D(4, 1) D(4, 2) D(4, 3) D(4, 4) . . . . . . . . . . . . trong đó mỗi giá trị sau là giá trị ngoại suy của giá trị trước đó ở hàng trên . Với 2 ≤ j ≤ i ≤ n ta có: 4 j−1 D(i , j − 1) − D(i − 1, j − 1) D(i , j) = 4 j−1 − 1 và giá trị khởi đầu là: 1 [f( x + h i ) − f( x − h i )] D(i , j) = ϕ( h i ) = 2h i với hi = h/2i‐1 . Chúng ta ngừng lại ...
Nội dung trích xuất từ tài liệu:
Phương pháp tính với C++ - Chương 6 CHƯƠNG 6: TÍNH GẦN ĐÚNG ĐẠO HÀM VÀ TÍCH PHÂN XÁC ĐỊNH §1. ĐẠO HÀM ROMBERG Đạo hàm theo phương pháp Romberg là một phương pháp ngoại suy để xác định đạo hàm với một độ chính xác cao. Ta xét khai triển Taylor của hàm f(x) tại (x + h) và (x ‐ h): h2 h3 h4 ( 4) f( x + h) = f( x) + hf ′( x) + f ′′( x) + f ′′′( x) + f ( x) + ⋅ ⋅ ⋅ (1) 2 3! 4! h2 h3 h4 f( x − h) = f( x) − hf ′( x) + f ′′( x) − f ′′′( x) + f ( 4 ) ( x) − ⋅ ⋅ ⋅ (2) 2 3! 4! Trừ (1) cho (2) ta có: 2h 3 2h 5 ( 5) f( x + h ) − f( x − h) = 2 hf ′( x) + f ′′′( x) + f ( x) + ⋅ ⋅ ⋅ (3) 3! 5! Như vậy rút ra: f( x + h) − f( x − h) h 2 h 4 ( 5) f ′( x) = − f ′′′( x) − f ( x) − ⋅ ⋅ ⋅ (4) 2h 3! 5! hay ta có thể viết lại: 1 [f( x + h) − f( x − h)] + a 2 h 2 + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ f ′( x) = (5) 2h trong đó các hệ số ai phụ thuộc f và x. Ta đặt: 1 [f( x + h) − f( x − h)] ϕ( h) = (6) 2h Như vậy từ (5) và (6) ta có: D(1,1) = ϕ( h) = f ′( x) − a 2 h 2 − a 4 h 4 − a 6 h 6 − ⋅ ⋅ ⋅ (7) D( 2 ,1) = ϕ⎛ ⎞ = f ′( x) − a 2 2 4 6 h h h h − a4 − a6 − ⋅ ⋅ ⋅ ⎜⎟ (8) ⎝2⎠ 4 16 64 và tổng quát với hi = h/2i‐1 ta có : D(i ,1) = ϕ( h i ) = f ′( x) − a 2 h i2 − a 4 h i4 − a 6 h 6 − ⋅ ⋅ ⋅ (9) i Ta tạo ra sai phân D(1,1) ‐ 4D(2,1) và có: ϕ( h) − 4ϕ⎛ ⎞ = −3f ′( x) − a 4 h 4 − a 6 h 6 − ⋅ ⋅ ⋅ h 3 15 ⎜⎟ (10) ⎝2⎠ 4 16 Chia hai vế của (10) cho ‐3 ta nhận được: 4 D( 2 ,1) − D(1,1) 1 5 = f ′( x) + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ D( 2 ,2) = (11) 4 4 16 Trong khi D(1, 1) và D(2, 1) sai khác f′(x) phụ thuộc vào h2 thì D(2, 2) sai khác f′(x) phụ thuộc vào h4 . Bây giờ ta lại chia đôi bước h và nhận được: 158 4 6 D( 3 ,2) = f ′( x) + a 4 ⎛ ⎞ + a 6 ⎛ ⎞ + ⋅ ⋅ ⋅ 1 h 5 h ⎜⎟ ⎜⎟ (12) 4 ⎝ 2 ⎠ 16 ⎝ 2 ⎠ và khử số hạng có h4 bằng cách tạo ra: 15 D( 2 ,3) − 16 D( 3 ,2) = −15f ′( x) + ⋅ ⋅ ⋅ + a 6 h 6 (13) 64 Chia hai vế của (13) cho ‐15 ta có: 16 D( 3,2) − D( 2 ,2) 1 = f ′( x) − a 6 h 6 − ⋅ ⋅ ⋅ D( 3 ,3) = (14) 15 64 Với lần tính này sai số của đạo hàm chỉ còn phụ thuộc vào h6. Lại tiếp tục chia đôi bước h và tính D(4, 4) thì sai số phụ thuộc h8. Sơ đồ tính đạo hàm theo phương pháp Romberg là : D(1, 1) D(2, 1) D(2, 2) D(3, 1) D(3, 2) D(3, 3) D(4, 1) D(4, 2) D(4, 3) D(4, 4) . . . . . . . . . . . . trong đó mỗi giá trị sau là giá trị ngoại suy của giá trị trước đó ở hàng trên . Với 2 ≤ j ≤ i ≤ n ta có: 4 j−1 D(i , j − 1) − D(i − 1, j − 1) D(i , j) = 4 j−1 − 1 và giá trị khởi đầu là: 1 [f( x + h i ) − f( x − h i )] D(i , j) = ϕ( h i ) = 2h i với hi = h/2i‐1 . Chúng ta ngừng lại ...
Tìm kiếm theo từ khóa liên quan:
phương trình đại số ma trận lập trình C đại số tuyến tính ngôn ngữ lập trìnhTài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
Cách tính nhanh giá trị riêng của ma trận vuông cấp 2 và cấp 3
4 trang 274 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 268 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
1 trang 240 0 0
-
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Hướng dẫn giải bài tập Đại số tuyến tính: Phần 1
106 trang 231 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 226 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
27 trang 213 0 0