1. Trang chủ
  2. » Cao đẳng - Đại học

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

13 913 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 535,91 KB

Nội dung

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

Trang 1

DANH SÁCH THÀNH VIÊN: Phạm Văn Vũ

Phan Long Việt Đoàn Ngọc Thuận Trương Hoàng Nhu

ĐỀ TÀI 9: TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH

I ĐẶT VẤN ĐỀ

-Xét tích phân xác định của một hàm số f(x) trong khoảng [a,b] : I =

b a

f(x)dx

-Nếu hàm f(x) liên tục trên [a,b] và có nguyên hàm F(x), thì I có thể tính một cách đơn giản thông qua

công thức Newton-Leibniz: I =

b a

 f(x)dx = F(b) - F(a) -Thực tế thì chúng ta thường khó khăn khi tìm nguyên hàm hoặc nguyên hàm quá phức tạp không thể xác

định được

-Trong những trường hợp này người ta phải tính gần đúng Có nhiều cách để tính gần đúng tích phân, ví

dụ có thể dùng ngay định nghĩa của tích phân : I =

1

i i 0

f (x ) x lim

n

n i

   -Tuy nhiên tổng Darboux hội tụ rất chậm, do đó để đạt được độ chính xác cao đòi hỏi một khối lượng tính

toán rất lớn

-Sau đây là một số phương pháp tính gần đúng tích phân hay được dùng Ý tưởng cơ bản của phương pháp này

là chia nhỏ khoảng [a,b] cần lấy tích phân, sau đó trên mỗi khoảng nhỏ này ta xấp xỉ hàm số bằng một đa thức

Với các đa thức ta có thể dùng nguyên hàm của chúng để tính tích phân, sau đó ta cộng các tích phân thành

phần để được xấp xỉ của tích phân toàn thể

 Công Thức hình thang

 Công thức parabol

II.GIẢI QUYẾT VẤN ĐỀ:

CƠ SỞ LÝ LUẬN

SƠ ĐỒ TỔNG QUÁT CHO PHƯƠNG PHÁP :

SỐ ĐOẠN CHIA SAI SỐ

H,M 2 ,M 4

Bảng giá trị f(x)

Tích Phân Gần Đúng

Trang 2

Page 2

1 Công thức hình thang

a.Công thức hình thang và sai số

Để tính gần đúng

b

a f(x)dx

 ta thay hàm số dưới dấu tích phân f(x) bằng đa thức nội suy đi qua hai điểm A(a,f(a)) và B(b,f(b)).và ta có:

b

1 a

f(x)dx (x)dx

b a P

Để Tính tích phân xác định ở vế phải ta đổi biến số: dx=(b-a)dt,t biến thiên từ 0 đến 1

1

t f(x)dx (x)= ( )(b-a)dt=(b-a)(y t+ y )

2

b

t t a

  

Trong đó : y0 =f(a); y0=y1-y0=f(b)-f(a)

b-a f(x)dx (f(a)+f(b)) (I)

2

b

a

Vậy (I) gọi là công thức hình thang:

Xác định sai số:

2

b

a

b a

giả thiết y=f(x) có đạo hàm cấp hai liên tục trên[a,b].M là hàm số h=b-a

R=R(h)= ( ) [ ( ) ( )]

2

a h a

h

Đạo hàm theo h 2 lần ta có:

R hf a h f af bf ahf a h f af ah

R hf a h f a h f ah   f ah

Mà: R(0)=0;R’(0)=0

Áp dụng định lý trung bình thứ hai của tích phân xác định:

2

h

R hR R t dt  tf at dt  f ctdt  f c ca ah

3

h

R hR R t dt   t f c dt  f ct dt  f c ca ah Vậy y=f(x) có đạo hàm cấp hai liên tục trên[a,b]

Vây Ta có công thức hình thang sau và sai số:

3 '' ( ) [ ( ) ( )] ( )( )

b

a

f x dxf af bf c II

Với h=b-a và c thuộc(a,b)

Trang 3

b.công thức hình thang tổng quát và sai số:

- Ta chia đoạn [a,b] thành n đoạn con bằng nhau:

Chia [a, b] n đoạn bằng nhau, độ dài h = (b– a)/n

(n+1) điểm chia: x0 = a < x1 = a + h < x2 = a + 2h < … < xn = b

- Xét bảng số liệu sau:

- Xấp xỉ hàm f(x) trên đoạn [x0,x1] bởi đa thức nội suy bậc nhất trên hai mốc nội suy [x0,x1]

P(x) = y0L0(x) + y1L1(x) = y0

0 1

1

y

f(x)  P(x)

x

0 1 x

y +y f(x)dx ( )dx =h[ ]

2

x x

P x

 

- Mặt khác chúng ta làm nhƣ vậy nhiều đoạn sau đó cộng lại ta đƣợc:

b

a

y +y f(x)dx h( y y )

2

b a

I      (III)

Vậy (III) đƣợc gọi là công thức hình thang tổng quát:

Xác định sai số:

3

"

h

i

(IV)

Với ci(xi-1,xi)

Xét trung bình cộng: "

1

1

( )

n i i

f c n

 

Và  gồm gía trị nhỏ nhất m2 và giá trị lớn nhất M2 của đạo hàm cấp hai f”(x) trên [a,b],( m2, M2 giá trị trung gian): m2   M2

Do đó tìm đƣợc điểm c [a,b] sao cho =f”(c) hay: " "

1

n

i i

f c nnf c

Thay vào (IV) ta đƣợc:

Trang 4

Page 4

R(h)=

Vậy công thức tổng quát hình thang tổng quát và sai số:

2

"

0 n

b

a

b a h

c Ví dụ: Dùng công thức hình thang tổng quát và tính gần đúng :

1

1 0

dx x

I   

Giải

Ta có : h = 1 0

10

=0,1 Kết quả tính toán trong bảng sau

Theo công thức hình thang tổng quát ta có :

I  0.1 (1.00000 0.50000

2

+ 0.90909 + 0.83333 + 0.76923 + 0.71429 + 0.66667 + 0.62500 + 0.58824 +0.55556 + 0.52623)  0.69377

Sai số đƣợc xác định là :

( )

f x = 1

1 x

 (1+x)

-1

'( )

f x - (1+x)-2

7 0.7 0.58824

9 0.9 0.52623

Trang 5

''( ) ( 1)( 2)

f x    (1+x)-3 = 2 3

(1x) 2

2

12 2.(0,1)

(1 0) 0, 00167 0, 002 12

b a h

R

Vậy I = 0.694  0.002

d Chương trình minh họa

Thuật toán được thực hiện trong chương trình có khác chút ít so với thuật toán đã trình bày ở trên Xuất phát từ n=1, h=b-a, ta sẽ tăng n lên gấp đôi tại mỗi bước tính toán Quá trình tính toán sẽ dừng lại nếu sự khác biệt của tích phân xấp xỉ ở bước hiện tại so với bước trước đó nhỏ hơn một số epsilon cho trước Ta sẽ phân tổng tích phân thành 3 tổng s0,s1 và s2 Tổng s0 = (f(a)+f(b))/2; mỗi lần tăng n lên gấp đôi thì ta chỉ cần tính lại tổng s2 ở các vị trí 1,3,5, ,n-1 Tổng s1 là tổng của các giá trị hàm tại các điểm không phải là đầu mút Sau khi tính lại s2, ta tính lại s1 bằng phép gán

s1=s1+s2

Và tổng xấp xỉ của tích phân là

I

n = h(s0+s1) Sau đây là đoạn chính của chương trình thể hiện ( mô tả) thuật toán

/*Phương pháp tính xấp xỉ tích phân bằng phương pháp hình thang

trên khỏang [a,b]*/

/*Phương pháp hình thang tính tích phân xác định trong khỏang [a,b]

Biến gttp là giá trị xấp xỉ của tích phân tính được

Trả về giá trị true nếu đã đạt được độ chính xác*/

int hinhthang(double (*f)(double),double a,double b,double &gttp,

Double&err,int &khoangchia)

{clrscr();

Double s0,s1,s2,h,tp,tp1;int k, nkc,i;

Kvecto x;

Nkc=1;

h=b-a

s0=(f(a)+f(b))/2

s1=0;

tp=(s0+s1)*h;

do

{tp1=tp;

nkc=nkc*2;

h=h/2;

s2=0;//bat dau tinh tong tai cac diem moi

for(i=1; i<nkc;i+=2)s2+=f(a+i*h);

s1=s1+s2;

tp=h*(s0+s1);

Trang 6

Page 6

if(nkc>nmax)

{cout<<endl<< “tich phan chua hoi tu voi “<<nmax<<” khoang chia”;

delay(1000);return false;

}

}

While(fabs(tp-tp1)>epsi );

Err=fabs(tp-tp1);khoangchia=nkc;gttp=tp;

Return(true);

}

2.Công thức parabol (Simsơn)

a công thức simsơn và sai số

Ta chia đoạn [a;b] thành 2n đoạn con bằng nhau

a = x0 < x1 <…< x2n = b

xi = a + ih,

2

b a h

n

yi = f(xi)

i = 0; 1; 2; …; 2n

Để tính tích phân coi khoảng nối 3 điểm liên tiếp nhau là 1 đoạn (như vậy qua 2n + 1 điểm ta có n đoạn), đoạn thứ i( i = 0, 1, 2,…,n) gồm các điểm x2i, x2i+1, x2i+2, và trong mỗi đoạn con ta dùng đa thức nội suy bậc 2 p2(x)

Giả sử các điểm của một đoạn con là x0, x1, x2 và các giá trị f(x) tương ứng là y0, y1, y2, ta có:

2

f x dxp x dx

Trong đó:

o

x x

h

   ta có: dx = hdt,

Nếu x = xo thì t =0, x = x2 thì t = 2

Như vậy

2

0

2

2

2

0

1

x

x

t

t t

t h

                  

Vậy (I) được gọi là công thức Simpson:

Xác định sai số

3

b

a

h

R f x dxyyy

Trang 7

Ta giả thiết rằng hàm số y = f(x) có đạo hàm cấp bốn liên tục trên [a, b] cố định điểm giữa x1 và xem R là hàm

số của h h0

1

3

x h

x h

h

Đạo hàm 3 lần theo h đẳng thức trên, ta có:

1

1

h

h

h

h

               

''

3

h

h

               

      

Áp dụng công thức số gia hữu hạn (công thức Lagrăng) đối với f’’’(x) ta có

3

h

R h   f C Cxh xh

Mà: R(0) = 0; R’(0) = 0; R’’(0) = 0

Từ đó áp dụng định lý trung bình thứ hai của tích phân xác định Ta nhận đƣợc:

1

(0) '

Tóm lại, với giả thiết hàm số y = f(x) có đạo hàm cấp bốn liên tục trên [a, b]

Trang 8

Page 8

Vậy Ta có công thức Simsơn và sai số:

4

b

a

     

2

b a

h  ca b

b.Công thức Simsơn tổng quát và sai số

Để tính gần đúng b  

a

f x dx

 ta chia [a,b] thành n = 2m đoạn bằng nhau (nghĩa là n là số nguyên, dương và chẵn):[ , ],[ ,x x0 1 x x1 2], ,[x2m2, x2m1],[x2m1,x2m]

Có độ dài là :

2

h

  bởi các điểm chia:

0

2

a, a ih

(i 1, 2 1),

i

n m

  

Ký hiệu: y if x i ,i0,n khi đó:

m

x

b

Đối với mỗi tích phân xác định ở vế phải của (II) ta tính gần đúng bằng công thức Simsơn (I), ta nhận được:

  ( 0 4 1 2) ( 2 4 3 4 ( 2 2 4 2 1 2 )

b

a

f x dxyyyyyy   y   y  y

3

a

Hay:

  ( 0 2 ) 4( 1 3 2 1) 2( 2 4 2 2) (III)

3

b

a

h

f x dxyyy   y y   yy  y

Công thức (III) được gọi là công thức SimSon tổng quát

Trang 9

Nếu hàm số y = f(x) có đạo hàm cấp bốn liên tục trên [a;b] thì do (IV),

sai số của công thức SimSon tổng quát là:

5 4

( ) 4 ) ( ) 4 ( )

k

Với

2 2 2

cxx

Lập luận tương tự trường hợp công thức hình thang tổng quát, vì f(4)( )x , theo giả thiết, liên tục trên [a;b] nên tìm được điểm c[ ; ]a b sao cho:

1

1

m

k k

m

Thay vào công thức ta được:

R  f c    f c ca b

Tóm lại, với giả thiết hàm số y = f(x) có đạo hàm cấp bốn liên tục trên [a;b] và chia đoạn lấy tích phân [a;b] thành n = 2m đoạn bằng nhau, có độ dài

2

h

Vậy Ta có công thức SimSon tổng quát và sai số:

b

a

f x dx  yyy   y y   yy  y    f c ca b

c.Ví dụ :

1

1 0

dx x

I   

Giải

Ta có : h = 1 0

10

=0,1 Kết quả tính toán trong bảng sau

Trang 10

Page 10

Nếu dung công thức Simson tổng quát, ta có :

I  0.3

1 ( 1.00000 + 0.50000 + 4.3,45955 + 2.2,72818) = 0,69315

Sai số đƣợc xác định là :

( )

f x = 1

1 x

 (1+x)

-1

'( )

f x - (1+x)-2

''( ) ( 1)( 2)

f x    (1+x)-3 = 2 3

(1x) '''( ) ( 1)( 2)( 3)

f x     (1 + x )-4

( )( 1)( 2)( 3)( 4)(1 )

(1x) 4

4

5

180 24(0,1)

(1 0) 1,3.10 0, 00002 180

b a h

R

Vậy I=0,69315 0,00002

7 0.7 0.58824

9 0.9 0.52623

Trang 11

d.Chương trình minh họa

Sau đây là đoạn chương trình thể hiện (mô tả) thuật toán:

//SIMSON.CPP

/*Phuong phap tinh xap xi tich phan bang phuong phap Simson

(pp cau phuong) tren khoang [a;b]

Bien gttp la gia tri xap xi cua tich phan tinh duoc

Tra ve gia tri true neu da dat duoc do chinh xac*/

int simson(double(*f)(double),double a, double b, double &gttp,

double & err,int & khoang chia)

{clrscr();

double s0,s1,s2,h,tp,tp1;int k,nkc,i;

kvecto x;

nkc=1;

h=b-a;

h=b-a;

s0=f(a)+f(b);

s1=0;

s2=0;

tp=(s0+2*s1+4+s2)*h/3;

do

{tp1=tp;

s1=s1+s2

nkc=nkc*2;

h=h/2

s2=0;//bat dau tinh tong tai cac diem moi

for(i=1;i<nkc;i+=2)s2=s2+f(a+i*h);

tp=(s0+2*s1+4*s2)*h/3;

if(nkc>nmax)

{cout<<end<< “tich phan chua hoi tu voi “<<nmax<< “khoang chia”;

delay(1000);return false;

}

}

while(fabs(tp-tp1)>epsi);

err=fabs(tp-tp1);khoangchia = nkc;gttp=tp;

return true;

}

III:Tài Liệu Tham khảo

Thư viện trường đại học sư phạm kỉ thuật

Thư viện trường đại học bách khoa

CHƯƠNG TRÌNH Tính gần đúng tích phân xác định

# include <stdio.h>

Trang 12

Page 12

# 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<n;i++) s+=f(a+i*h);

return s*h;

}

void nhap(float *a, int *n)

{ int i;

printf("\n Nhap bac da thuc: ");scanf("%d",n);

printf("\n Nhap he so cua ham da thuc:\n");

for (i=0;i<=*n; ++i) {

printf(" a[%d]=",i);

scanf("%f",a+i);

}

}

double f(double x)

{

float p=d[0]; int i;

for(i=1;i<=n;i++) p=p*x+d[i];

return p;

}

main()

{ float a,b; char tt;

while (1) {

printf("\n Nhap can de 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));

Trang 13

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;

}

}

Ngày đăng: 25/08/2015, 15:24

TỪ KHÓA LIÊN QUAN

w