1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giáo Trình Phương Pháp Tính (chương 6)

8 241 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

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

Nội dung

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.

Trang 1

CH NG 6: TÍNH G N ĐÚNG Đ O HÀM VÀ TÍCH

Đ 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):

⋅ + +

′′′

+

′′

+

′ +

=

! 4

h ) x ( f

! 3

h ) x ( f 2

h ) x ( f h ) x ( ) h x

4 3

2

(1)

− +

′′′

′′

+

=

! 4

h ) x ( f

! 3

h ) x ( f 2

h ) x ( f h ) x ( ) h x

4 3

2

(2)

Tr (1) cho (2) ta có:

⋅⋅

⋅ + +

′′′

+

=

! 5

h 2 ) x ( f

! 3

h 2 ) x ( f h 2 ) h x ( ) h x

5 3

(3)

Nh v y rút ra:

′′′

− +

=

! 5

h ) x ( f

! 3

h h

2

) h x ( ) h x ( )

x

(

4 2

(4) hay ta có th vi t l i:

=

6

4 4

2

2h a h a h a

) h x ( ) h x ( h 2

1 )

x

(

Ta đ t:

[ (x h) (x h) h

2

1 )

h

Nh v y t (5) và (6) ta có:

⋅⋅

= ϕ

6

4 4

2

2h a h a h a

) x ( f ) h ( ) 1

,

1

(

=

⎛ ϕ

=

64

h a 16

h a 4

h a ) x ( f 2

h )

1

,

2

(

D

6 6

4 4

2

và t ng quát v i hi= h/2i 1 ta có :

= ϕ

i 6

4 i 4

2 i 2

i) f(x) a h a h a h h

( ) 1

,

i

(

Ta t o ra sai phân D(1,1) 4D(2,1) và có:

=

⎛ ϕ

6

4

4 a h 16

15 h

a 4

3 ) x ( f 3 2

h 4 )

h

Chia hai v c a (10) cho 3 ta nh n đ c:

⋅⋅

⋅ + +

+

=

6

4

4 a h 16

5 h a 4

1 ) x ( f 4

) 1 , 1 ( D ) 1 , 2 ( D 4 ) 2

,

2

(

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

Trang 2

⋅ +

⎛ +

⎛ +

2

h a 16

5 2

h a 4

1 ) x ( f ) 2

,

3

(

và kh s h ng có h4 b ng cách t o ra:

6

6h a 64

15 )

x ( f 15 )

2 , 3 ( D 16 ) 3

,

2

(

Chia hai v c a (13) cho 15 ta có:

⋅⋅

=

6h a 64

1 ) x ( f 15

) 2 , 2 ( D ) 2 , 3 ( D 16 ) 3

,

3

(

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)

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ó:

1 4

) 1 j 1 i ( D ) 1 j i ( D 4 ) j

i

(

1 j

và giá tr kh iđ u là:

[ (x h ) (x h )]

h 2

1 ) h ( ) j

i

(

i

i = + − − ϕ

=

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

201843569

4 )]

75 1 ( ) 25 2 ( [ 25 0 2

1 )

1

,

2

(

D

207496266

4 )]

5 1 ( ) 5 2 ( [ 5 0 2

1 )

1

,

1

(

D

=

×

=

=

×

=

200458976

4 )]

875 1 ( ) 125 2 ( [ 125 0 2

1 )

1

,

3

(

×

=

19995935

4 1

4

) 1 , 1 ( D ) 1 , 2 ( D 4 ) 2

,

2

(

=

200458976

4 1

4

) 1 , 2 ( D ) 1 , 3 ( D 4 ) 2

,

3

(

=

Trang 3

200492284

4 1

4

) 2 , 2 ( D ) 2 , 3 ( D 4 ) 3

,

3

(

2

=

=

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ình 6 1

//Daoham_Romberg;

#include <conio.h>

#include <stdio.h>

#include <math.h>

#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<=n;k++)

{

h=h/2;

d[k]=dy(x);

p=1.0;

for (j=k 1;j>=1;j ) {

Trang 4

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

a

dx ) x ( J

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, 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 xithì J là gi 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à:

y

B A

x b a

) x x

)(

x ( lim

J

n 0

i i i 1 i

n ∑

=

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

0 i i

n h f

S

Trang 5

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

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 đó tilà 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ó:

n f 2f 2f f

n

a b

S = − + +⋅ ⋅⋅+ − +

=

1 n 1 i i n

0

n f f 2 f

n

a b S

M t cách khác ta có th vi t:

} 2 / h ) 1 k ( a [ 2 / kh a ( hf { dx ) x ( dx

)

x

(

1 n

0 k

1 n

1 k

h ) 1 k ( a

kh a

b

a

+ + + +

=

=

+ +

+

hay:

} 2 / b ( ] h ) 1 n ( a [ )

h a ( 2 / ) a ( { h dx )

x

(

b

a

+

− + +

⋅ + + +

=

Ch ng trình 6 2

//tinh tich phan bang phuong phap hinh_thang;

#include <conio.h>

#include <stdio.h>

#include <math.h>

float f(float x)

{

Trang 6

};

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<=n;i++)

{

x=x+h;

s=s+f(x);

}

tp=s*h;

printf( Gia tri cua tich phan la : %10.6f\n ,tp);

getch();

}

trong kho ng [0 , 1] v i 20 đi m chia ta có J = 0.261084

§4 CÔNG TH C SIMPSON

đ u nhau b i các đi m chia xi:

a = xo< x1 < x2< < x2n= b

xi= a + ih ; h = (b a)/ 2n v i i = 0 , , 2n

Do yi= f(xi) nên ta có:

Trang 7

+ + +

x

x

x

b

a

x

x

n 2

2 n 2

4

2

2

0

fdx

fdx fdx

dx ) x (

Đ tính tích phân này ta thay hàm f(x) v ph i b ng đa th c n i suy Newton ti n b c 2:

0

2 0

0

! 2

) 1 t t y t y

và v i tích phân th nh t ta có :

0

2

0

x

x 2 x

x

dx ) x ( P dx )

x

(

Đ i bi n x = x0+ th thì dx = hdt, v i x0 thì t = 0 và v i x2thì t = 2 nên:

0

2 0

0

2 t

0 t 0 2 2 3 0

2 0

2 0

0

2 0

0 x

x

2

y y 4 y 3 h

y 2

4 3

8 2

1 y 2 y 2 h

y 2

t 3

t 2

1 y 2

t t y h

dt y

! 2

) 1 t t y t y h dx ) x

(

P

2

0

+ +

=

⎥⎦

⎢⎣

⎛ − +

∆ +

=

+

∆ +

=

⎥⎦

⎢⎣

=

=

=

Đ i v i các tích phân sau ta cũng có k t qu t ng t :

[ 2i 2i 1 2i 2]

x

x

y y

4 y 3

h dx ) x

(

2

i

2

i

2

+ + + +

=

∫+

C ng các tích phân trên ta có:

b

a

y y

y y 2 y

y y 4 y 3

h dx )

x

Ch ng trình dùng thu t toán Simpson nh sau:

Ch ng trình 6 3

//Phuong phap Simpson;

#include <conio.h>

#include <stdio.h>

#include <math.h>

float y(float x)

{

Trang 8

}

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<=n 2;i++)

{

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

Ngày đăng: 17/06/2015, 14:01

TỪ KHÓA LIÊN QUAN

w