TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH

Estimated read time 6 min read

Ngày đăng: 23/10/2013, 14:20

xác định được nguyên hàm F(x) ta có công thức tính tích phân: ∫ −= b a )a(F)b(Fdx)x(f Nhưng trong đa số các trường hợp ta không xác định được nguyên hàm của, hoặc không xác định được biểu thức của f(x) mà chỉ nhận được các giá trị của nó tạI nhưng điểm rời rạc. Trong trường hợp như vậy ta có thể sử dụng các công thức gần đúng sau để tính tích phân: – Công thức hình thang. – Công thức Parabol – Công thức Newton _Cotet 8.2. Công thức hình thang Chia [a, b] thành n đoạn bằng nhau với khoảng cách h = (b – a)/n theo các điểm chia: x 0 =a, x 1 =a+h, ., x n = b ∫∫∫∫ =+++= − = b a 2x x x x x ax 1 n 1n 1 0 Sdx)x(f .dx)x(fdx)x(fdx)x(f S là diện tích giới hạn bởi đường cong f(x), x=a, x=b, và trục x Xét trên [x 0, x 1 ], ta xem đường cong f(x) là đường thẳng S f(x) x 0 =a S 1 S n x 1 x n-1 x n = b 58 )yy(h 2 1 SS 10hthang1 +=≈ Tương tự: )yy(h 2 1 S 212 +≈ . … … )yy(h 2 1 S n1nn +≈ − Vậy: ∫ +++++≈ − b a n1n210 )yy2 .y2y2y( 2 h dx)x(f 8.3. Công thức Parabol Chia [a, b] thành 2n đoạn bằng nhau với khoảng cách h = (b – a)/2n theo các điểm chia: x 0 =a, x 1 =a+h, ., x 2n = b ∫∫∫∫ − +++= b a x x x x x x n2 2n2 4 2 2 0 dx)x(f .dx)x(fdx)x(fdx)x(f Xét trên [x 0, x 2 ] xem đường cong f(x) là Parabol (nội suy bậc 2 của 3 điểm x 0, x 1, x 2 ) )xx)(xx( )xx)(xx( y )xx)(xx( )xx)(xx( y )xx)(xx( )xx)(xx( y)x(L)x(f 1202 10 2 2101 20 1 2010 21 02 −− −− + + −− −− + −− −− =≈ ∫∫ ≈ 2 0 2 0 x x x x 2 dx)x(Ldx)x(f Thay x 0 = a, x 1 = a + h, x 2 = a+2h vào, ta có: ∫ ++≈ 2 0 x x 210 )yy4y( 3 h dx)x(f Tương tự: 59 ∫ ++≈ 4 2 x x 432 )yy4y( 3 h dx)x(f ∫ − ++≈ −− n2 2n2 x x 21n22n2 )yy4y( 3 h dx)x(f Vậy: ∫ ++++++≈ −− b a n21n22n2210 )yy4y2 .y2y4y( 3 h dx)x(f Ví dụ. Tính J = ∫ + 5 1 2 x1 dx theo 3 cách Giải Cách 1: 4/5arctgarctgxJ 5 1 Π−== ≈ 0.588 Cách 2: chia [1, 5] thành 4 đoạn bằng nhau (h=1) với các điểm chia x i 1 2 3 4 5 y i 1/2 1/5 1/10 1/17 1/26 Công thức hình thang: J ≈ (1/2 + 2/5 +2/10 +2/17 + 1/26) /2 ≈ 0.628 Cách 3: Công thức Parabol: J ≈ (1/2 + 4/5 +2/10 +4/17 + 1/26) /3 ≈ 0.591 8.4. Công thức Newton-Cotet Chia [a, b] thành n đoạn bằng nhau với khoảng cách h = (b – a)/n với x 0 =a; x 1 = a + h, , x n = b. Đặt x = a + (b – a)t => dx = (b – a) dt x i a a+h a + 2h . b t i 0 1/n 2/n . 1 Khi đó: ∫∫ ∫ Φ−=−+−= b a 1 0 1 0 dt)t()ab(dt)t)ab(a(f)ab(dx)x(f Với φ(t)= f(a + (b – a)t Xem φ(t) là hàm nội suy Lagrange của n + 1 điểm: t 0, t 1, ., t n 60 ) n 1n 1) .( n 1 1)(01( ) n 1n t) .( n 1 t)(0t( y . )1 n 1 ) .( n 2 n 1 )(0 n 1 ( )1t) .( n 2 t)(0t( y )1) .( n 2 )( n 1 ( )1t) .( n 2 t)( n 1 t( y)t(L)t( n 10n − −−− − −−− + + −−− −−− + −−− −−− =≈Φ Khi đó: ∫∫ ≈Φ 1 0 1 0 n dt)t(Ldt)t( Đặt ∫ − + − − −−− − + − − −−− = 1 0 i n dt )1 n i ( .) n 1i n i )( n 1i n i ( .) n 1 n i )(0 n i ( )1t .() n 1i t)( n 1i t( .) n 1 t)(0t( P Vậy: ∫ ∑ = −≈ b a n 0i i ni py)ab(dx)x(f Xét n = 1 ( h = b-a ) ∫ −= − − = 1 0 0 1 2 1 dt 10 1t P ; ∫ = − − = 1 0 1 1 2 1 dt 01 0t P ∫ +=+−= b a 10 1 0 )yy( 2 h ) 2 y 2 y )(ab(dx)x(f → Công thức hình thang Lưu ý: Giá trị của i n P có thể tra trong bảng sau: n i n P 1 1/2 1/2 2 1/6 4/6 1/6 3 1/8 3/8 3/8 1/8 4 9/71 16/45 2/15 16/45 9/70 5 19/288 25/95 25/144 25/144 25/95 19/288 … … … … … … … 61 BÀI TẬP 1. Khai báo (định nghĩa) hàm trong C để Dùng công thức hình thang b. Dùng công thức Parabol c. Dùng công thức Newton-cotet 2. Viết chương trình dụng các hàm đã khai báo trong câu 1). So sánh kết quả, nhận xét. 62 MỘT SỐ CHƯƠNG TRÌNH THAM KHẢO 1. tinh tich phan: “); scanf(“%f%f”,&a,&b); /*printf(“a= “); scanf(“%f”,&a); printf(“b= “); scanf(“%f”,&b);*/ printf(“\nS1=%.3f”,tp(sin,0,PI)); printf(“\nS2=%.3f”,tp(cos,0,PI/2)); printf(“\nS3=%.3f”,tp(g,a,b)); nhap(d,&n); printf(“\nS4=%.3f”,tp(f,a,b)); printf(“\n\n Ban tiep tuc ko(c/k)?”); tt=getch(); if (tt!=’c’) break; } } 2. Tim nghiem gan dung cua phtrinh da thuc bac n bang PP chia doi # include # include “conio.h” # include “math.h” # define eps 1e-3 float f(float); void nhap(float *, int ); float d[10]; int n; void main() { float a,b,c; char tt; while (1) { printf(“\n Nhap bac phuong trinh: “);scanf(“%d”,&n); nhap(d,n); printf(“\n Nhap khoang nghiem: “); scanf(“%f%f”,&a,&b); /* printf(“a= “); scanf(“%f”,&a); printf(“b= “); scanf(“%f”,&b);*/ if (f(a)*f(b)<0) { c=(a+b)/2; while (fabs(a-b) >= 1e-3 && f(c)!=0) { printf(“\n%.3f %.3f %.3f”,a,b,f(c)); if (f(b)*f(c)>0) b=c; else a=c; c=(a+b)/2; 64 } printf(“\n\n Nghiem phtrinh: %.3f”,c); } else if (f(a)*f(b)>0) printf(” ( %f, %f) khong phai la khoang nghiem”,a,b); else if (f(a)==0) printf(” \n Nghiem phtrinh: %.3f”,a); else printf(” \n Nghiem phtrinh: %.3f”,b); printf(“\n\n Ban tiep tuc ko(c/k)?”); tt=getch(); if (tt!=’c’) break;} } void nhap(float *a, int n) { int i; printf(“\n Nhap he so cua phuong trinh:\n”); for (i=0;i<=n; ++i) { printf(" a[%d]=",i); scanf("%f",a+i); } } /* ham tinh gia tri da thuc*/ float f(float x) { float p=d[0]; int i; for(i=1;i<=n;i++) p=p*x+d[i]; return p; } 3. PP tiếp tuyến # include "conio.h" # include "math.h" # define eps 1e-3 float f(float x); float fdh(float x); main() { float a,b; char tt; while (1) { printf("\nNhap xap xi ban dau: "); scanf("%f",&a); /*b=a-f(a)/fdh(a); 65 printf("\n%.3f %.3f %f",a,-f(a)/fdh(a),b);*/ do { b=a; a=b-f(b)/fdh(b); printf("\n%.3f %.3f %f",b,-f(b)/fdh(b),a); } while (fabs(a-b) >= 1e-3 ); printf(“\nNghiem phtrinh: %.3f”,a); printf(“\nTiep tuc ko(c/k)?”); tt=getch(); if (tt==’k’ || tt==’K’) break;} } float f(float x) { return exp(x)-10*x+7; } float fdh(float x) { return exp(x)-10; } 4. Giải hệ phtrình đại số tuyến tính bằng PP Gauss # include # include “conio.h” # include “math.h” void nhap(float *a, int n,int m); void xuatmt(float *a, int n,int m); main() { float a[10][10]; float x[10],m,s; char tt; int n,i,j,k; while (1) { printf(“\n Nhap n= “); scanf(“%d”,&n); printf(“\n Nhap he so cua he phuong trinh:\n”); for (i=1;i<=n; ++i) for (j=1;j<=n+1;++j) { printf(" pt[%d%d]=",i,j); scanf("%f",&m); a[i][j]=m; } 66 for (i=1;i<=n; i++) { printf("\n"); for (j=1;j<=n+1;j++) printf("%.3f ",a[i][j]); } /* bien doi A ve ma tran tam giac tren */ for(i=1;i=1;i–) { s=a[i][n+1]; for(k=i+1;k<=n;k++) s-=a[i][k]*x[k]; x[i]=s/a[i][i]; } printf("\nNghiem he phtrinh:"); for(i=1;i<=n;i++) printf("%.3f ",x[i]); printf("\n\n Ban tiep tuc ko(c/k)?"); tt=getch(); if (tt!='c') break;} } /* Ham nhap mang a(m,n)*/ void nhap(float *a, int n,int m) { int i,j; printf("\n Nhap he so cua he phuong trinh:\n"); for (i=1;i<=m; i++) for (j=1;j<=n;j++) { printf(" pt[%d%d]=",i,j); scanf("%f",a+i*n+j); } } /* Ham xuat mang a(m,n)*/ void xuatmt(float *a, int n,int m) { int i,j; [...]... pháp tính trong kỹ thuật, Nhà xuất bản xây dựng Hà nội, 2001 [2] Phan Văn Hạp, Giáo trình Cơ sở phương pháp tính tập I,II Trường ĐH Tổng hợp Hà nội, 1990 [3] Cao quyết Thắng, Phương pháp tính và Lập trình Turbo Pascal Nhà XB giáo dục, 1998 [4] Tạ Văn Đĩnh, Phương pháp tính Nhà XB giáo dục, 1994 [5] Dương Thủy Vỹ, Phương pháp tính Nhà XB khoa học & kỹ thuật, 2001 [6] Phan Văn Hạp, Bài tập phương pháp tính. .. 1998 [4] Tạ Văn Đĩnh, Phương pháp tính Nhà XB giáo dục, 1994 [5] Dương Thủy Vỹ, Phan Văn Hạp, Bài tập phương pháp tính và lập chương trình cho máy tính điện tử Nhà XB đại học và trung học chuyên nghiệp, 1978 [7] Ralston A, A first course in numberical analysis McGraw – Hill, NewYork, 1965 68 . VIII TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH 8.1. Giới thiệu Xét hàm số f(x) liên tục trên [a,b], nếu xác định được nguyên hàm F(x) ta có công thức tính tích phân:. 25/95 19/288 … … … … … … … 61 BÀI TẬP 1. Khai báo (định nghĩa) hàm trong C để tính gần đúng tích phân xác định của f(x) tr ên [a, b] (đối kiểu con trỏ hàm)

57 CHƯƠNG VIII TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH 8.1. Giới thiệu Xét hàm số f(x) liên tục trên [a,b], nếuđược nguyên hàm F(x) ta có công thứcphân: ∫ −= b a )a(F)b(Fdx)x(f Nhưng trong đa số các trường hợp ta khôngđược nguyên hàm của, hoặc khôngđược biểu thức của f(x) mà chỉ nhận được các giá trị của nó tạI nhưng điểm rời rạc. Trong trường hợp như vậy ta có thể sửcác công thứcsau đểphân: – Công thức hình thang. – Công thức Parabol – Công thức Newton _Cotet 8.2. Công thức hình thang Chia [a, b] thành n đoạn bằng nhau với khoảng cách h = (b – a)/n theo các điểm chia: x 0 =a, x 1 =a+h, ., x n = b ∫∫∫∫ =+++= − = b a 2x x x x x ax 1 n 1n 1 0 Sdx)x(f .dx)x(fdx)x(fdx)x(f S là diệngiới hạn bởi đường cong f(x), x=a, x=b, và trục x Xét trên [x 0, x 1 ], ta xem đường cong f(x) là đường thẳng S f(x) x 0 =a S 1 S n x 1 x n-1 x n = b 58 )yy(h 2 1 SS 10hthang1 +=≈ Tương tự: )yy(h 2 1 S 212 +≈. … … )yy(h 2 1 S n1nn +≈ − Vậy: ∫ +++++≈ − b a n1n210 )yy2 .y2y2y( 2 h dx)x(f 8.3. Công thức Parabol Chia [a, b] thành 2n đoạn bằng nhau với khoảng cách h = (b – a)/2n theo các điểm chia: x 0 =a, x 1 =a+h, ., x 2n = b ∫∫∫∫ − +++= b a x x x x x x n2 2n2 4 2 2 0 dx)x(f .dx)x(fdx)x(fdx)x(f Xét trên [x 0, x 2 ] xem đường cong f(x) là Parabol (nội suy bậc 2 của 3 điểm x 0, x 1, x 2 ) )xx)(xx( )xx)(xx( y )xx)(xx( )xx)(xx( y )xx)(xx( )xx)(xx( y)x(L)x(f 1202 10 2 2101 20 1 2010 21 02 −− −− + + −− −− + −− −− =≈ ∫∫ ≈ 2 0 2 0 x x x x 2 dx)x(Ldx)x(f Thay x 0 = a, x 1 = a + h, x 2 = a+2h vào, ta có: ∫ ++≈ 2 0 x x 210 )yy4y( 3 h dx)x(f Tương tự: 59 ∫ ++≈ 4 2 x x 432 )yy4y( 3 h dx)x(f ∫ − ++≈ −− n2 2n2 x x 21n22n2 )yy4y( 3 h dx)x(f Vậy: ∫ ++++++≈ −− b a n21n22n2210 )yy4y2 .y2y4y( 3 h dx)x(f Ví dụ.J = ∫ + 5 1 2 x1 dx theo 3 cách Giải Cách 1: 4/5arctgarctgxJ 5 1 Π−== ≈ 0.588 Cách 2: chia [1, 5] thành 4 đoạn bằng nhau (h=1) với các điểm chia x i 1 2 3 4 5 y i 1/2 1/5 1/10 1/17 1/26 Công thức hình thang: J ≈ (1/2 + 2/5 +2/10 +2/17 + 1/26) /2 ≈ 0.628 Cách 3: Công thức Parabol: J ≈ (1/2 + 4/5 +2/10 +4/17 + 1/26) /3 ≈ 0.591 8.4. Công thức Newton-Cotet Chia [a, b] thành n đoạn bằng nhau với khoảng cách h = (b – a)/n với x 0 =a; x 1 = a + h, , x n = b. Đặt x = a + (b – a)t => dx = (b – a) dt x i a a+h a + 2h. b t i 0 1/n 2/n. 1 Khi đó: ∫∫ ∫ Φ−=−+−= b a 1 0 1 0 dt)t()ab(dt)t)ab(a(f)ab(dx)x(f Với φ(t)= f(a + (b – a)t Xem φ(t) là hàm nội suy Lagrange của n + 1 điểm: t 0, t 1, ., t n 60 ) n 1n 1) .( n 1 1)(01( ) n 1n t) .( n 1 t)(0t( y. )1 n 1 ) .( n 2 n 1 )(0 n 1 ( )1t) .( n 2 t)(0t( y )1) .( n 2 )( n 1 ( )1t) .( n 2 t)( n 1 t( y)t(L)t( n 10n − −−− − −−− + + −−− −−− + −−− −−− =≈Φ Khi đó: ∫∫ ≈Φ 1 0 1 0 n dt)t(Ldt)t( Đặt ∫ − + − − −−− − + − − −−− = 1 0 i n dt )1 n i ( .) n 1i n i )( n 1i n i ( .) n 1 n i )(0 n i ( )1t .() n 1i t)( n 1i t( .) n 1 t)(0t( P Vậy: ∫ ∑ = −≈ b a n 0i i ni py)ab(dx)x(f Xét n = 1 ( h = b-a ) ∫ −= − − = 1 0 0 1 2 1 dt 10 1t P ; ∫ = − − = 1 0 1 1 2 1 dt 01 0t P ∫ +=+−= b a 10 1 0 )yy( 2 h ) 2 y 2 y )(ab(dx)x(f → Công thức hình thang Lưu ý: Giá trị của i n P có thể tra trong bảng sau: n i n P 1 1/2 1/2 2 1/6 4/6 1/6 3 1/8 3/8 3/8 1/8 4 9/71 16/45 2/15 16/45 9/70 5 19/288 25/95 25/144 25/144 25/95 19/288 … … … … … … … 61 BÀI TẬP 1. Khai báo (định nghĩa) hàm trong C để tính gần đúng tích phân xác định của f(x) tr ên [a, b] (đối kiểu con trỏ hàm) a.công thức hình thang b.công thức Parabol c.công thức Newton-cotet 2. Viết chương trình tính gần đúng tích phân xác định trên [a, b] của 1 hàm f(x) cụ thể (sửcác hàm đã khai báo trong câu 1). So sánh kết quả, nhận xét. 62 MỘT SỐ CHƯƠNG TRÌNH THAM KHẢO 1. Tính gần đúng tích phân xác định # include # include “conio.h” # include “math.h” # define PI 3.14159 float d[10];int n; double g(double x) { return 1/(1+x*x); } double tp(double (*f)(double),float a,float b) { int n=100,i; float s,h=(b-a)/n; s=(f(a)+f(b))/2; for (i=1; i # include “conio.h” # include “math.h” # define eps 1e-3 float f(float); void nhap(float *, int ); float d[10]; int n; void main() { float a,b,c; char tt; while (1) { printf(“\n Nhap bac phuong trinh: “);scanf(“%d”,&n); nhap(d,n); printf(“\n Nhap khoang nghiem: “); scanf(“%f%f”,&a,&b); /* printf(“a= “); scanf(“%f”,&a); printf(“b= “); scanf(“%f”,&b);*/ if (f(a)*f(b)<0) { c=(a+b)/2; while (fabs(a-b) >= 1e-3 && f(c)!=0) { printf(“\n%.3f %.3f %.3f”,a,b,f(c)); if (f(b)*f(c)>0) b=c; else a=c; c=(a+b)/2; 64 } printf(“\n\n Nghiem phtrinh: %.3f”,c); } else if (f(a)*f(b)>0) printf(” ( %f, %f) khong phai la khoang nghiem”,a,b); else if (f(a)==0) printf(” \n Nghiem phtrinh: %.3f”,a); else printf(” \n Nghiem phtrinh: %.3f”,b); printf(“\n\n Ban tiep tuc ko(c/k)?”); tt=getch(); if (tt!=’c’) break;} } void nhap(float *a, int n) { int i; printf(“\n Nhap he so cua phuong trinh:\n”); for (i=0;i<=n; ++i) { printf(" a[%d]=",i); scanf("%f",a+i); } } /* hamgia tri da thuc*/ float f(float x) { float p=d[0]; int i; for(i=1;i<=n;i++) p=p*x+d[i]; return p; } 3. PP tiếp tuyến # include "conio.h" # include "math.h" # define eps 1e-3 float f(float x); float fdh(float x); main() { float a,b; char tt; while (1) { printf("\nNhap xap xi ban dau: "); scanf("%f",&a); /*b=a-f(a)/fdh(a); 65 printf("\n%.3f %.3f %f",a,-f(a)/fdh(a),b);*/ do { b=a; a=b-f(b)/fdh(b); printf("\n%.3f %.3f %f",b,-f(b)/fdh(b),a); } while (fabs(a-b) >= 1e-3 ); printf(“\nNghiem phtrinh: %.3f”,a); printf(“\nTiep tuc ko(c/k)?”); tt=getch(); if (tt==’k’ || tt==’K’) break;} } float f(float x) { return exp(x)-10*x+7; } float fdh(float x) { return exp(x)-10; } 4. Giải hệ phtrình đại số tuyếnbằng PP Gauss # include # include “conio.h” # include “math.h” void nhap(float *a, int n,int m); void xuatmt(float *a, int n,int m); main() { float a[10][10]; float x[10],m,s; char tt; int n,i,j,k; while (1) { printf(“\n Nhap n= “); scanf(“%d”,&n); printf(“\n Nhap he so cua he phuong trinh:\n”); for (i=1;i<=n; ++i) for (j=1;j<=n+1;++j) { printf(" pt[%d%d]=",i,j); scanf("%f",&m); a[i][j]=m; } 66 for (i=1;i<=n; i++) { printf("\n"); for (j=1;j<=n+1;j++) printf("%.3f ",a[i][j]); } /* bien doi A ve ma tran tam giac tren */ for(i=1;i=1;i--) { s=a[i][n+1]; for(k=i+1;k<=n;k++) s-=a[i][k]*x[k]; x[i]=s/a[i][i]; } printf("\nNghiem he phtrinh:"); for(i=1;i<=n;i++) printf("%.3f ",x[i]); printf("\n\n Ban tiep tuc ko(c/k)?"); tt=getch(); if (tt!='c') break;} } /* Ham nhap mang a(m,n)*/ void nhap(float *a, int n,int m) { int i,j; printf("\n Nhap he so cua he phuong trinh:\n"); for (i=1;i<=m; i++) for (j=1;j<=n;j++) { printf(" pt[%d%d]=",i,j); scanf("%f",a+i*n+j); } } /* Ham xuat mang a(m,n)*/ void xuatmt(float *a, int n,int m) { int i,j; [...]... pháptrong kỹ thuật, Nhà xuất bản xâyHà nội, 2001 [2]Văn Hạp, Giáo trình Cơ sở phương pháptập I,II Trường ĐH Tổng hợp Hà nội, 1990 [3] Cao quyết Thắng, Phương phápvà Lập trình Turbo Pascal Nhà XB giáo dục, 1998 [4] Tạ Văn Đĩnh, Phương phápNhà XB giáo dục, 1994 [5] Dương Thủy Vỹ, Phương phápNhà XB khoa học & kỹ thuật, 2001 [6]Văn Hạp, Bài tập phương pháp tính. .. 1998 [4] Tạ Văn Đĩnh, Phương phápNhà XB giáo dục, 1994 [5] Dương Thủy Vỹ, Phương pháp tính Nhà XB khoa học & kỹ thuật, 2001 [6]Văn Hạp, Bài tập phương phápvà lập chương trình cho máyđiện tử Nhà XB đại học và trung học chuyên nghiệp, 1978 [7] Ralston A, A first course in numberical analysis McGraw – Hill, NewYork, 1965 68. VIII TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH 8.1. Giới thiệu Xét hàm số f(x) liên tục trên [a,b], nếu xác định được nguyên hàm F(x) ta có công thức tính tích phân:. 25/95 19/288 … … … … … … … 61 BÀI TẬP 1. Khai báo (định nghĩa) hàm trong C để tính gần đúng tích phân xác định của f(x) tr ên [a, b] (đối kiểu con trỏ hàm)

You May Also Like

More From Author

+ There are no comments

Add yours