intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Đinh Trường Gấu | Ngày: | Loại File: DOC | Số trang:8

108
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 6: Tính gần đúng đạo hàm và tích phân xác định giới thiệu đến bạn đọc những nội dung về đạo hàm Romberg, khái niệm về tích phân số, phương pháp hình thang, công thưc Simpson. Mời các bạn tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Chương 6: Tính gần đúng đạo hàm và tích phân xác định

  1. 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 h 4 ( 4) f( x h ) f( x) h f ( x) f ( x) f ( x) f ( x)   (1) 2 3! 4! h2 h3 h 4 ( 4) f( x h ) f( x) h f ( x) f (x) f (x) f ( x)   (2) 2 3! 4! Trừ  (1) cho (2) ta có: 2h 3 2h 5 ( 5) f( x h ) f( x h ) 2h f ( 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) 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 (h ) f( x h ) f( x 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) 2 4 6 h h h h D( 2 ,1) f (x) a 2 a4 a6 (8) 2 4 16 64 và tổ ng quát  với h i = h/2 i­1 ta có : D(i ,1) ( h i ) f ( x) a 2 h i2 a 4 h i4 a 6 h 6i (9) Ta tạo ra sai phân  D(1,1) ­ 4D(2,1) và có: h 3 15 (h ) 4 3f ( x) a 4h 4 a 6h 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 4h 4 a 6h 6 (11) 4 4 16 Trong  khi D(1, 1) và 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 và nhậ n  được: 4 6 1 h 5 h D( 3,2) f ( x ) a4 a6 (12) 4 2 16 2 160
  2. và khử  số hạng  có h 4 bằng cách tạo ra: 15 D( 2 ,3) 16 D( 3,2) 15f ( x) a 6h 6 (13) 64 Chia hai vế  của (13) cho ­15 ta có: 16 D( 3,2) D( 2 ,2) 1 D( 3,3) f ( x) a6h 6 (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  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ó: 4 j 1 D(i , j 1) D(i 1, j 1) D(i , j) 4j 1 1 và giá trị  khởi đầ u  là: 1 D(i , j) (h i ) f( x h i ) f( x h i ) 2h i 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 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) D( 2 ,2) 4.19995935 4 1 4 D( 3,1) D( 2 ,1) D( 3,2) 4.200458976 4 1 4 2 D( 3,2) D( 2 ,2) D( 3,3) 4.200492284 42 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. 161
  3. Chương trình 6­1 / / D aoham_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); 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)); 162
  4. 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 J f ( x )dx y a B trong  đó  f(x) là hàm  liên  tục trong  kho ảng  [a,b]   và   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  SABba ,  A giới  hạn  bởi  đườ ng  cong  f(x), trục  hoành,  các   đườ ng  thẳ ng  x = a và  x = b. Nế u  ta  chia  đoạ n   [a, b] thành  n  ph ầ n  bởi các điể m   xi thì J là giới  b x a hạ n  của tổng  di ệ n  tích  các hình  chữ  nhật  f(x i).(xi+1 ­ xi) khi  số  điể m  chia b  tiế n   tới  , nghĩa  là: n J lim f ( x i )( x i 1 xi ) 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 fi 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 = 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: ti = [f(xi) + f(xi­1)]/  (2h)    = h(f i ­ fi­1) /  2 Nh ư  vậy: S3 = h[(f o + f1) + (f1 + f2) + (f2 + f3)] /  2     = h[f o  + 2f1 + 2f2 + f3] /  2 163
  5. Một cách tổng quát  chúng  ta có: b a Sn f0 2f2 2fn 1 fn n b a n 1 hay:  S n f0 fn 2 fi n i 1 Một cách khác ta có thể  viết: b n 1 a ( 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 6­2 / / t i nh  tich phan  bang  phuong  phap  hinh_thang; #include   #include   #include   float f(float x)   { float a=exp(­x)*sin(x); return(a);   }; 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.   { 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 xi:  a = xo  
  7. Cộng các tích phân  trên  ta có: b h f( x)dx y0 4 y1 y3 y 2n 1 2 y 2 y4 y 2n 2 y 2n a 3 Chươ ng  trình  dùng  thu ậ t  toán  Simpson  nh ư  sau: Chương trình 6­3 / / P h uong  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
  8.   } 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. 167
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2