Tải bản đầy đủ (.pdf) (13 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (535.91 KB, 13 trang )

Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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
ii
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
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

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.
b1
2
1
1 0 0 0 0 0
a0
t
f(x)dx (x)= ( )(b-a)dt=(b-a)(y t+ y )
2
b
t
t
a
P y t y


   
  

Trong đó : y
0
=f(a);

y
0
=y

1
-y
0
=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ố:
R=
( ) ( ( ) ( ))
2
b
a
ba
f x dx f a f b




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
ah

a
h
f x dx f a f a h

  


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

' ' '
11
( ) ( ) [ ( ) ( )] ( ) [ ( ) ( )] ( )
2 2 2 2
hh
R h f a h f a f b f a h f a h f a f a h          

'' ' ' '' ''
11
( ) ( ) ( ) ( ) ( )
2 2 2 2
hh
R h f a h f a h f a h f a h        

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
' ' '' '' '' ''
1 1 1
0 0 0

11
( ) (0) ( ) ( ) ( ) ( ); ( , )
2 2 4
h h h
h
R h R R t dt tf a t dt f c tdt f c c a a h          
  


3
' 2 '' '' 2 ''
1 1 1 1
0 0 0
11
( ) (0) ( ) ( ) ( ) ( ); ( , )
4 4 12
h h h
h
R h R R t dt t f c dt f c t dt f c c a a h         
  

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
''
( ) [ ( ) ( )] ( )( )
2 12
b
a
hh

f x dx f a f b f c II  


Với h=b-a và c thuộc(a,b)
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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: x
0
= a < x
1
= a + h < x
2
= a + 2h < … < x
n
= b

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


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

,x
1
]
P(x) = y
0
L
0
(x) + y
1
L
1
(x) = y
0
0
1
1
0 1 1 0
xx
xx
y
x x x x





f(x)

P(x)


11
00
x
01
x
y +y
f(x)dx ( )dx =h[ ]
2
x
x
Px


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

0 1 2 3 2 1 1
12
y +y y +y
y +y
f(x)dx h[ ] [ ] [ ] [ ] [ ]
2 2 2 2 2
b
n n n n
a
y y y y
h h h h
  

     



Nhƣ vậy
0n
1 n-1
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ố:

01
3
"
1 i 1
1 1 1
h
f(x)dx (y y ) ( ( ) ( )) ( )
2 2 2
ni
i
xx
n n n
i i i i
i i i
xx

hh
R f x dx y y f c


  
       
  


(IV)
Với c
i

(x
i-1
,x
i
)
Xét trung bình cộng:
"
1
1
()
n
i
i
fc
n








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





M
2
Do đó tìm đƣợc điểm c

[a,b] sao cho

=f”(c) hay:
""
1

( ) ( )
n
i
i
f c n nf c





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

x
x
0

x
1

y
y
0

y
1

Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 4


R(h)=
3
2
'' "
()
( ) ( )
12 12
nh b a h
f c f c

  

Vậy công thức tổng quát hình thang tổng quát và sai số:
2
"
0n
1 n-1
y +y ( )
f(x)dx h( y y ) ( )
2 12
b
a
b a h
I f c

     


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 =
10
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à :

()fx
=
1
1 x


(1+x)
-1
'( )fx
- (1+x)
-2
i
x
i

Y
2j-i

Y
2j

0
0.0

Yo =1,00000
1
0.1
0.90909

2

0.2

0,83333
3
0.3
0.76923

4
0.4

0,71429
5
0.5
0.66667

6
0.6

0,62500
7
0.7
0.58824

8
0.8

0,55556
9
0.9
0.52623


10
1.0

Y
10
=0,50000



1

=3.45955
2

=2.72818
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 5

''( ) ( 1)( 2)fx  
(1+x)
-3
=
3
2
(1 )x

2
""

2
()
max ( ) 2 à max ( )
12
2.(0,1)
(1 0) 0,00167 0,002
12
b a h
f x v R f x
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
s
1
=s
1
+s
2


Và tổng xấp xỉ của tích phân là
I
n
= h(s
0
+s
1
)
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 s
0
,s
1
,s
2
,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);
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

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
ba
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 x
2i
, x
2i+1
, x
2i+2
, và trong mỗi đoạn con ta dùng đa thức nội suy
bậc 2 p
2
(x).
Giả sử các điểm của một đoạn con là x
0
, x
1
, x
2
và các giá trị f(x) tƣơng ứng là y
0
, y
1
, y
2
, ta có:

22
00
2
( ) ( )
xx
xx
f x dx p x dx


Trong đó:
22
2 1 1
22
( ) ( ) ( )( ) ( )( )
22
o o o o
o o o o o o
y y x x y
p x y x x x x x x y y x x x x
h h h h
   
           

Đặt
; ay x
o
o
xx
t h x th
h


  
ta có: dx = hdt,
Nếu x = xo thì t =0, x = x
2
thì t = 2.
Nhƣ vậy
 
 
   
2
0
22
2 2 3 2 2
2
00
2
0 1 2
2
1
11
( ) ( ) / 3 / 2
0
2 2 2
1
2 2 8/3 4 / 2 4 ( )
23
x
o o o o o o
x

o o o
t
tt
f x dx p x dx h y t y y dt h ty t y t t y
t
h
h y y y y y y I





           








        


  

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

Xác định sai số
0 1 2

( ) ( 4 )
3
b
a
h
R f x dx y y y   


Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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 x
1
và xem R là hàm
số của h
 
0h 

       
1
1
1 1 1
( ) 4
3
xh
xh
h
R R h f x dx f x h f x f x h




      


Đạo hàm 3 lần theo h đẳng thức trên, ta có:
               
         
             
   
1 1 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
11
1
' 4 ' '
33
24
' ' '
3 3 3
21
'' ' ' ' ' '' ''
3 3 3
1
' ' ''
33
h
R h f x h f x h f x h f x f x h f x h f x h
h
f x h f x h f x f x h f x h

h
R h f x h f x h f x h f x h f x h f x h
h
f x h f x h f
   
             
   
   
         
   
     
             
     

     

   
             
   
11
1 1 1 1 1 1
11
''
11
''' '' '' '' '' ''' '''
3 3 3
''' '''
3
x h f x h
h

R h f x h f x h f x h f x h f x h f x h
h
f x h f x 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ó
 
 
   
2
4
3 3 1 1
''' 2 , ,
3
h
R h f C C x h x h    

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:
   
 
 

 
 
 
   
   
 
 
 
 
 
   
   
 
 
 
 
 
4 4 4
2 2 3
3 2 2 2 1 1
0 0 0
4 4 4
3 3 4
2 1 1 1 1 1
0 0 0
4 4 4
4 4 5
1
0 0 0
2 2 2

'' '' 0 '''(t) ;C ,
3 3 9
2 2 1
' '(0) '' ; ,
9 9 18
1 1 1
(0) '
18 18 90
h h h
h h h
h h h
R h R R dt t f C f C t dt h f C x h x h
R h R R t dt t f C dt f C t dt h f C C x h x h
R h R R t dt t f C dt f C t h f
          
          
       
  
  
  
   
11
,C C x h x h  

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].


Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 8


Vậy Ta có công thức Simsơn và sai số:
     
 
 
4
5
1
4
3 2 90
b
a
h a b
f x dx f a f f b h f C



   





(IV)
Với
 
,,
2
ba
h c a 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):
0 1 1 2 2 2 2 1 2 1 2
[ , ],[ , ], ,[ ,x ],[ , ]
m m m m
x x x x x x x
  

Có độ dài là :
2
b a b a
h
nm


bởi các điểm chia:

0
2
a, a ih

(i 1,2 1),
i
nm
xx
m x x b
  
   

Ký hiệu:
 
, 0,
ii
y f x i n
khi đó:
         
2
24
02
22

m
x
xx
b
a x x x m
f x dx f x dx f x dx f x dx II

   
   


Đố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 1 2 2 3 4 2 2 2 1 2
( 4 ) ( 4 ( 4 )
3 3 3
b
m m m
a
h h h
f x dx y y y y y y y y y

         


 
( ) 4( ) 2( )
0 2 1 3 2 1 2 4 2 2
3
b
h
f x dx y y y y y y y y
m m m
a

         




Hay:

 
 
0 2 1 3 2 1 2 4 2 2
( ) 4( ) 2( ) (III)
3
b
m m m
a
h
f x dx y y y y y y y y

         


Công thức (III) đƣợc gọi là công thức SimSon tổng quát.
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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à:
 
 
22
0 2 2
5
4
2 2 2 1 2 2 2 2 1 2
1 1 1
( ) 4 ) ( ) 4 ( )

3 3 90
mk
k
xx
m m m
k k k k k k k
k k k
xx
h h h
R f x dx y y y f x dx y y y f c

   
  

         



  


Với
2 2 2
( ; )
k k k
c x x



Lập luận tƣơng tự trƣờng hợp công thức hình thang tổng quát, vì

(4)
()fx
, theo giả thiết, liên tục trên [a;b] nên
tìm đƣợc điểm
[ ; ]c a b
sao cho:
(4) (4)
1
1
( ) ( )
m
k
k
f c f c
m




Thay vào công thức ta đƣợc:
   
54
44
()
( ) ( ), [ , ]
90 180
mh b a h
R f c f c c a 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
b a b a
h
nm



Vậy Ta có công thức SimSon tổng quát và sai số:
 
4
(4)
2 1 3 2 1 2 4 2 2
()
( ) 4( ) 2( ) ( ), [ ; ]
3 180
b
o m m m
a
h b a h
f x dx y y y y y y y y f c c a b


           






c.Ví dụ :
1
1
0
dx
x
I




Giải
Ta có : h =
10
10

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



Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

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à :
()fx
=
1
1 x


(1+x)
-1
'( )fx
- (1+x)
-2
''( ) ( 1)( 2)fx  
(1+x)
-3
=
3
2
(1 )x

'''( ) ( 1)( 2)( 3)fx   
(1 + x )-4

(4) 5
( )( 1)( 2)( 3)( 4)(1 )f x x

    
=
5
24
(1 )x

4
(4) (4)
[0,1] [0,1]
4
5
()
( ) 24 à ( )
180
24(0,1)
(1 0) 1,3.10 0,00002
180
max max
xx
b a h
f x v R f x
R




   


Vậy I=0,69315

0,00002



i
x
i

Y
2j-i

Y
2j

0
0.0

Yo =1,00000
1
0.1
0.90909

2
0.2

0,83333
3

0.3
0.76923

4
0.4

0,71429
5
0.5
0.66667

6
0.6

0,62500
7
0.7
0.58824

8
0.8

0,55556
9
0.9
0.52623

10
1.0


Y
10
=0,50000



1

=3.45955
2

=2.72818
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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>
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

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));
Nhóm 11 – lớp VB2 TOÁN K1 GVHD: TS. Trịnh Công Diệu

Page 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;
}
}


×