Chương 12 - Tính gần đúng đạo hàm và tích phân xác định pdf

7 2K 10
Chương 12 - Tính gần đúng đạo hàm và tích phân xác định pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

204 Chơng 12 : Tính gần đúng đạo hàm 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) (x-h) : ++ + + +=+ )x(f !4 h )x(f !3 h )x(f 2 h )x(fh)x(f)hx(f )4( 432 (1) + + = )x(f !4 h )x(f !3 h )x(f 2 h )x(fh)x(f)hx(f )4( 432 (2) Trừ (1) cho (2) ta có : ++ + =+ )x(f !5 h2 )x(f !3 h2 )x(fh2)hx(f)hx(f )5( 53 (3) Nh vậy rút ra : + = )x(f !5 h )x(f !3 h h2 )hx(f)hx(f )x(f )5( 42 (4) hay ta có thể viết lại : [] +++++= 6 6 4 4 2 2 hahaha)hx(f)hx(f h2 1 )x(f (5) trong đó các hệ số a i phụ thuộc f x . Ta đặt : )]hx(f)hx(f[ h2 1 )h( + = (6) Nh vậy từ (5) (6) ta có : == 6 6 4 4 2 2 hahaha)x(f)h()1,1(D (7) = = 64 h a 16 h a 4 h a)x(f 2 h )1,2(D 6 6 4 4 2 2 (8) và tổng quát với h i = h/2 i-1 ta có : == 6 i6 4 i4 2 i2i hahaha)x(f)h()1,i(D (9) Ta tạo ra sai phân D(1,1) - 4D(2,1) có : = 6 6 4 4 ha 16 15 ha 4 3 )x(f3 2 h 4)h( (10) Chia hai vế của (10) cho -3 ta nhận đợc : +++ = = 6 6 4 4 ha 16 5 ha 4 1 )x(f 4 )1,1(D)1,2(D4 )2,2(D (11) Trong khi D(1,1) D(2,1) sai khác f(x) phụ thuộc vào h 2 thì D(2,2) sai khác f(x) phụ thuộc vào h 4 . Bây giờ ta lại chia đôi bớc h nhận đợc : Dfx a h a h(2, ) ( ) ( / ) ( / ) 2 1 4 2 5 16 2 4 4 6 6 =+ + + (12) và khử số hạng có h 4 bằng cách tạo ra : DD fx a h(2, ) ( , ) ( ) ( ) 21632 15 15 64 6 6 =+++ (13) Chia hai vế của (13) cho -15 ta có : D DD fx ah (3, ) (3, ) (2, ) () 3 16 2 2 15 1 64 6 6 == (14) 205 Với lần tính này sai số của đạo hàm chỉ còn phụ thuộc vào h 6 . Lại tiếp tục chia đôi bớc h và tính D(4,4) thì sai số phụ thuộc h 8 . 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ó : Dj Dj D j j j (i, ) (i,)(i,) = 1 1 4 111 41 và giá trị khởi đầu là : D h h fx h fx h i i ii (i, ) ( )[()()]1 1 2 == + với h i = h/2 i-1 . Chúng ta ngừng lại khi hiệu giữa hai lần ngoại suy đạt độ chính xác yêu cầu. Ví dụ : Tìm đạo hàm của hàm f(x) = x 2 + arctan(x) tại x = 2 với bớc tính h = 0.5 . Trị chính xác của đạo hàm là 4.2 201843569.4)]75.1(f)25.2(f[ 25.02 1 )1,2(D 207496266.4)]5.1(f)5.2(f[ 5.02 1 )1,1(D = ì = = ì = 200458976.4)]875.1(f)125.2(f[ 125.02 1 )1,3(D = ì = 200492284.4 14 )2,2(D)2,3(D 4 )3,3(D 200458976.4 14 )1,2(D)1,3(D 4 )2,3(D 19995935.4 14 )1,1(D)1,2(D 4 )2,2(D 21 2 1 1 1 1 == == == Chơng trình tính đạo hàm nh dới đây . Dùng chơng trình tính đạo hàm của hàm cho trong function với bớc h = 0.25 tại x o = 0 ta nhận đợc giá trị đạo hàm là 1.000000001. Chơng trình12 1 //Daoham_Romberg; #include <conio.h> #include <stdio.h> #include <math.h> #define max 11 float h; void main() { float d[max]; int j,k,n; float x,p; float y(float),dy(float); 206 clrscr(); printf("Cho diem can tim dao ham x = "); scanf("%f",&x); printf("Tinh dao ham theo phuong phap Romberg\n"); printf("cua ham f(x) = th(x) tai x = %4.2f\n",x); n=10; h=0.2; d[0]=dy(x); for (k=2;k<=n;k++) { h=h/2; d[k]=dy(x); p=1.0; for (j=k-1;j>=1;j ) { p=4*p; d[j]=(p*d[j+1]-d[j])/(p-1); } } printf("y'= %10.5f\n",d[1]); getch(); } float y(float x) { float a=(exp(x)-exp(-x))/(exp(x)+exp(-x)); return(a); } float dy(float x) { float b=(y(x+h)-y(x-h))/(2*h); return(b); } Đ2. Khái niệm về tích phân số Mục đích của tính tích phân xác định là đánh giá định lợng biểu thức : Jfx a b = ()dx trong đó f(x) là hàm liên tục trong khoảng [a,b] có thể biểu diễn bởi đờng cong y= f(x). Nh vậy tích phân xác định J là diện tích S ABba , giới hạn bởi đờng cong f(x) , trục hoành , các đờng thẳng x = a x = b . Nếu ta chia đoạn [a,b] thành n phần bởi các điểm x i thì J là gới hạn của tổng diện tích các hình chữ nhật f(x i ).(x i+1 - x i ) khi số điểm chia tiến tới , nghĩa là : a a b A B y x 207 J fx x x n i i n i i = = + lim ()( ) 0 1 Nếu các điểm chia x i cách đều , thì ( x i+1 - x i ) = h . Khi đặt f(x o ) = f o , f(x 1 ) = f 1 , ta có tổng : ni i n Sh f = = 0 Khi n rất lớn , S n tiến tới J . Tuy nhiên sai số làm tròn lại đợc tích luỹ . Do vậy cần phải tìm phơng pháp tính chính xác hơn . Do đó ngời ta ít khi dùng phơng pháp hình chữ nhật nh vừa nêu . Đ3. Phơng pháp hình thang Trong phơng pháp hình thang , thay vì chia diện tích S ABba thành các hình chữ nhật , ta lại dùng hình thang . Ví dụ nếu chia thành 3 đoạn nh hình vẽ thì : S 3 = t 1 + t 2 + t 3 trong đó t i là các diện tích nguyên tố . Mỗi diện tích này là một hình thang : t i = [f(x i ) + f(x i-1 )]/ (2h) = h(f i - f i-1 ) / 2 Nh vậy : S 3 = h[(f o +f 1 )+(f 1 +f 2 )+(f 2 +f 3 )] / 2 = h[f o +2f 1 +2f 2 +f 3 ] / 2 Một cách tổng quát chúng ta có : ) f2f2f2 f( n ab S n1n1 o n ++++= hay : } f 2 f f{ n ab S n 1i i o n n + + = = Một cách khác ta có thể viết : fxdx fx hfa kh fa k h a b akh ak h k n k n () ()dx { ( )/ [ ( )]/} () =++++ + ++ = = 1 1 1 0 1 212 hay : fx hfa fa h fa n h fb a b ()dx {()/ ( ) [ ( )] ()/}= + + ++ + + 212 Chơng trình tính tích phân theo phơng pháp hình thang nh sau : Chơng trình 12-2 //tinh tich phan bang phuong phap hinh_thang; #include <conio.h> #include <stdio.h> #include <math.h> float f(float x) { float a=exp(-x)*sin(x); return(a); }; 208 void main() { int i,n; float a,b,x,y,h,s,tp; clrscr(); printf("Tinh tich phan theo phuong phap hinh thang\n"); printf("Cho can duoi a = "); scanf("%f",&a); printf("Cho can tren b = "); scanf("%f",&b); printf("Cho so buoc n = "); scanf("%d",&n); h=(b-a)/n; x=a; s=(f(a)+f(b))/2; for (i=1;i<=n;i++) { x=x+h; s=s+f(x); } tp=s*h; printf("Gia tri cua tich phan la : %10.6f\n",tp); getch(); } Dùng chơng trình này tính tích phân của hàm cho trong function trong khoảng [0 , 1] với 20 điểm chia ta có J = 0.261084. Đ4. Công thức Simpson Khác với phơng pháp hình thang , ta chia đoạn [a,b] thành 2n phần đều nhau bởi các điểm chia x i : a = x o < x 1 < x 2 < < x 2n = b x i = a+ih ; h = (b - a)/ 2n với i =0 , . . , 2n Do y i = f(x i ) nên ta có : +++= x x fdx x x fdx b a x x fdxdx)x(f n2 2n2 4 2 2 0 Để tính tích phân này ta thay hàm f(x) ở vế phải bằng đa thức nội suy Newton tiến bậc 2 : y t2 )1t(t yty )x( P 0 2 00 2 ++= và với tích phân thứ nhất ta có : dx)x( P dx)x(f x x x x 2 0 2 0 2 = Đổi biến x = x 0 +th thì dx = hdt , với x 0 thì t =0 với x 2 thì t = 2 nên : 209 |] y ) 2 t 3 t ( 2 1 y 2 t t y[h dt) y 2 )1t(1 yty( h dx)x( P 2t 0t 0 2 23 0 2 0 0 2 0 2 0 0 2 x x 2 0 = = ∆ ∆ ∆ − ∆ ∫∫ −++= ++= ] yy4y[ 3 h ] y ) 2 4 3 8 ( 2 1 y2y2[h 210 0 2 00 ++= −++= ∆ ∆ §èi víi c¸c tÝch ph©n sau ta còng cã kÕt qu¶ t−¬ng tù : ] yy4y[ 3 h dx)x(f 2i21i2i2 x x 2i2 i2 ++ ++= ∫ + Céng c¸c tÝch ph©n trªn ta cã : ] y ) yyy(2 ) yyy(4y[ 3 h dx)x(f n22n2421n231o b a ++⋅⋅⋅++++⋅⋅⋅+++= −− ∫ Ch−¬ng tr×nh dïng thuËt to¸n Simpson nh− sau : Ch−¬ng tr×nh 12-3 //Phuong phap Simpson; #include <conio.h> #include <stdio.h> #include <math.h> float y(float x) { float a=4/(1+x*x); return(a); } void main() { int i,n; float a,b,e,x,h,x2,y2,x4,y4,tp; clrscr(); printf("Tinh tich phan theo phuong phap Simpson\n"); printf("Cho can duoi a = "); scanf("%f",&a); printf("Cho can tren b = "); scanf("%f",&b); printf("Cho so diem tinh n = "); scanf("%d",&n); h=(b-a)/n; x2=a+h; x4=a+h/2; y4=y(x4); y2=y(x2); for (i=1;i<=n-2;i++) { 210 x2+=h; x4+=h; y4+=y(x4); y2+=y(x2); } y2=2*y2; y4=4*(y4+y(x4+h)); tp=h*(y4+y2+y(a)+y(b))/6; printf("Gia tri cua tich phan la : %10.8f\n",tp); getch(); } Dïng ch−¬ng tr×nh nµy tÝnh tÝch ph©n cña hµm trong function trong ®o¹n [0,1] víi 20 kho¶ng chia cho ta kÕt qu¶ J = 3.14159265. . 204 Chơng 12 : 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. trình tính đạo hàm nh dới đây . Dùng chơng trình tính đạo hàm của hàm cho trong function với bớc h = 0.25 tại x o = 0 ta nhận đợc giá trị đạo hàm là

Ngày đăng: 10/03/2014, 05:20

Hình ảnh liên quan

Đ3. Ph−ơng pháp hình thang - Chương 12 - Tính gần đúng đạo hàm và tích phân xác định pdf

3..

Ph−ơng pháp hình thang Xem tại trang 4 của tài liệu.
Khác với ph−ơng pháp hình thang , ta chia đoạn [a,b] thành 2n phần đều nhau bởi các điểm chia x i :   - Chương 12 - Tính gần đúng đạo hàm và tích phân xác định pdf

h.

ác với ph−ơng pháp hình thang , ta chia đoạn [a,b] thành 2n phần đều nhau bởi các điểm chia x i : Xem tại trang 5 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan