Turbo C nâng cao P12

Chia sẻ: Lac Tran | Ngày: | Loại File: PDF | Số trang:7

0
86
lượt xem
28
download

Turbo C nâng cao P12

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tính gần đúng đạo hàm và tích phân xác định

Chủ đề:
Lưu

Nội dung Text: Turbo C nâng cao P12

  1. 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 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 h 4 ( 4) f (x + h) = f (x) + hf ′(x) + f ′′(x) + f ′′′(x) + f (x ) + ⋅ ⋅ ⋅ (1) 2 3! 4! h2 h3 h 4 (4) f (x − h) = f (x) − hf ′(x) + f ′′(x) − f ′′′(x) + f (x ) − ⋅ ⋅ ⋅ (2) 2 3! 4! Trõ (1) cho (2) ta cã : 2h 3 2 h 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 : f ′(x) = 1 [f (x + h) − f (x − h)] + a 2 h 2 + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ (5) 2h trong ®ã c¸c hÖ sè ai phô thuéc f vµ x . Ta ®Æt : 1 (6) ϕ(h) = [f (x + h) − f (x − h)] 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) ⎛h⎞ 2 4 6 h h h D(2,1) = ϕ⎜ ⎟ = f ′(x) − a 2 − 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 2 − a 4 h i4 − a 6 h 6 − ⋅ ⋅ ⋅ i i (9) Ta t¹o ra sai ph©n D(1,1) - 4D(2,1) vµ cã : ⎛h⎞ 3 15 ϕ(h) − 4ϕ⎜ ⎟ = −3f ′(x) − a 4 h 4 − a 6 h 6 − ⋅ ⋅ ⋅ (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 D(2,2) = = f ′(x) + a 4 h 4 + a 6 h 6 + ⋅ ⋅ ⋅ (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 : 1 5 (12) D(2,2) f ′(x) = + 4 + 6 (h / 2)+... (h / 2) 4 a4 16 a 6 vµ khö sè h¹ng cã h4 b»ng c¸ch t¹o ra : 15 (13) D(2,2) −16D(32) = −15f ′(x) , ++ (h)6 +... 64 a 6 Chia hai vÕ cña (13) cho -15 ta cã : 16D(3,2) − D(2,2) 1 (14) = f ′( x) − 6 D(3,3) = − . ... 15 64 a 6 h 204
  2. 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 D(i,1) = ϕ( hi ) = [ f ( x + h i ) − f ( x − h i )] 2 hi víi hi = h/2i-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) = x2 + 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 1 D(1,1) = [f (2.5) − f (1.5)] = 4.207496266 2 × 0.5 1 D(2,1) = [f (2.25) − f (1.75)] = 4.201843569 2 × 0.25 1 D(3,1) = [f (2.125) − f (1.875)] = 4.200458976 2 × 0.125 4 D(2,1) − D(1,1) = 1 D(2,2) = 4.19995935 4 −1 1 4 D(3,1) − D(2,1) = 1 D(3,2) = 4.200458976 4 −1 1 4 D(3,2) − D(2,2) = 2 D(3,3) = 4.200492284 4 −1 21 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 xo = 0 ta nhËn ®−îc gi¸ trÞ ®¹o hµm lµ 1.000000001. Ch−¬ng tr×nh12-.1 //Daoham_Romberg; #include #include #include #define max 11 float h; void main() { float d[max]; int j,k,n; float x,p; float y(float),dy(float); 205
  3. 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=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 : b y J = ∫ f ( x)dx a trong ®ã f(x) lµ hµm liªn tôc trong kho¶ng [a,b] vµ cã B 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 SABba , giíi h¹n bëi ®−êng cong f(x) , trôc hoµnh , c¸c ®−êng th¼ng x = a vµ x = b A . NÕu ta chia ®o¹n [a,b] thµnh n phÇn bëi c¸c ®iÓm xi th× J lµ gíi h¹n cña tæng diÖn tÝch c¸c h×nh ch÷ nhËt f(xi).(xi+1 - xi) khi sè ®iÓm chia tiÕn tíi ∝, nghÜa lµ : a a x b 206
  4. n J = lim ∑ f ( x )( x i +1 − x i ) i n→∞ i=0 NÕu c¸c ®iÓm chia xi c¸ch ®Òu , th× ( xi+1- xi ) = h . Khi ®Æt f(xo) = fo , f(x1) = f1 ,... ta cã tæng : n Sn = h ∑f i i=0 Khi n rÊt lín , Sn 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 SABba 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× : S3 = t1 + t2 + t3 trong ®ã ti lµ c¸c diÖn tÝch nguyªn tè . Mçi diÖn tÝch nµy lµ mét h×nh thang : ti = [f(xi) + f(xi-1)]/ (2h) = h(fi - fi-1) / 2 Nh− vËy : S3 = h[(fo+f1)+(f1+f2)+(f2+f3)] / 2 = h[fo+2f1+2f2+f3] / 2 Mét c¸ch tæng qu¸t chóng ta cã : b−a Sn = (f o + 2f 1 + ⋅ ⋅ ⋅ + 2f n −1 + 2f n ) n hay : b−a n Sn = {f o +f n + 2 ∑ f i} n i =1 Mét c¸ch kh¸c ta cã thÓ viÕt : b n −1a + ( k +1) h n −1 ∫ f ( x)dx = ∑ ∫ f ( x)dx ≈ ∑{hf (a + kh ) / 2 + f [a + ( k + 1)h ] / 2} a k =1 a + kh k =0 hay : b ∫ f ( x)dx = h{f (a) / 2 + f (a + h ) + ⋅ ⋅ ⋅ + f [a + ( n − 1)h] + f ( b) / 2} a 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 #include #include float f(float x) { float a=exp(-x)*sin(x); return(a); }; 207
  5. 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
  6. x2 2 1(t −1) 2 ∫ P 2 (x)dx = h ∫ (y0 + t∆y0 + ∆ y0 )dt x0 0 2 2 = h[y t + t ∆y + 1 t − t 2 2 t =2 3 ( )∆ y0 ]|t =0 0 2 0 2 3 2 1 8 −4 2 = h[2y0 + 2∆y0 + ( )∆ y0 ] 2 3 2 = h [y + 4y1 + y2 ] 3 0 §èi víi c¸c tÝch ph©n sau ta còng cã kÕt qu¶ t−¬ng tù : x 2i +2 h ∫ f (x)dx = [y2i + 4y2i +1 + y2i + 2 ] x 2i 3 Céng c¸c tÝch ph©n trªn ta cã : b h ∫ f (x)dx = [y + 4(y1 + y3 + ⋅ ⋅ ⋅ + y2 n −1 ) + 2(y2 + y 4 + ⋅ ⋅ ⋅ + y2 n − 2 ) + y2 n ] a 3 o Ch−¬ng tr×nh dïng thuËt to¸n Simpson nh− sau : Ch−¬ng tr×nh 12-3 //Phuong phap Simpson; #include #include #include 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
  7. 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. 210
Đồng bộ tài khoản