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


204
Chơng 12 : 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) :
++

+

+

+=+ )x(f
!4
h
)x(f
!3
h
)x(f
2
h
)x(fh)x(f)hx(f
)4(
432
(1)
+




Nh vậy rút ra :



+
=

)x(f
!5
h
)x(f
!3
h
h2
)hx(f)hx(f
)x(f
)5(
42
(4)
hay ta có thể viết lại :
[]
+++++=

6
6
4
4
2
2
hahaha)hx(f)hx(f







=
64
h
a
16
h
a
4
h
a)x(f
2
h
)1,2(D
6
6
4
4
2
2
(8)
và tổng quát với h
i
= h/2
i-1

4
3
)x(f3
2
h
4)h( (10)
Chia hai vế của (10) cho -3 ta nhận đợc :
+++

=

=
6
6
4
4
ha
16
5
ha
4
1
)x(f
4
)1,1(D)1,2(D4
)2,2(D (11)
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

21632 15
15
64
6
6


=+++
(13)
Chia hai vế của (13) cho -15 ta có :
D
DD
fx
ah
(3, )
(3, ) (2, )
()

3
16 2 2
15
1
64
6
6
==


(14)





1
1
4
111
41

và giá trị khởi đầu là :
D
h
h
fx h fx h
i
i
ii
(i, )
(
)[()()]1
1
2
==
+


với h
i
= h/2
i-1

14
)2,2(D)2,3(D
4
)3,3(D
200458976.4
14
)1,2(D)1,3(D
4
)2,3(D
19995935.4
14
)1,1(D)1,2(D
4
)2,2(D
21
2
1
1
1
1
==
==
==








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 )
{
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));
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ố


y
x

207

J
fx x
x
n
i
i
n
i
i
=

=
+

lim
()( )
0
1

Nếu các điểm chia x
i
cách đều , thì ( x
i+1
- x
i

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ì :
S
3
= 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 :
t
i
= [f(x
i
) + f(x
i-1
)]/ (2h)
= h(f
i
- f
i-1
) / 2
Nh vậy :
S
3
= h[(f

o
n
++++=



hay :

}
f
2
f
f{
n
ab
S
n
1i
i
o
n
n

+
+

=
=

Một cách khác ta có thể viết :

a
b
()dx {()/ ( ) [ ( )] ()/}= + + ++ + +

212

Chơng trình tính tích phân theo phơng pháp hình thang nh sau :

Chơng trình 12-2

//tinh tich phan bang phuong phap hinh_thang;
#include <conio.h>
#include <stdio.h>
#include <math.h>

float f(float x)
{
float a=exp(-x)*sin(x);
return(a);
};

208
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 = ");

1
< x
2
< < x
2n
= b
x
i
= a+ih ; h = (b - a)/ 2n với i =0 , . . , 2n
Do y
i
= f(x
i
) nên ta có :


+++=
x
x
fdx
x
x
fdx
b
a
x
x
fdxdx)x(f
n2
2n2

x
2
0
2
0
2

=

Đổi biến x = x
0
+th thì dx = hdt , với x
0
thì t =0 và với x
2
thì t = 2 nên :

209
|]
y
)
2
t
3
t
(
2
1
y
2

=
=





∫∫
−++=
++=]
yy4y[
3
h
]
y
)
2
4
3
8
(
2
1
y2y2[h
210
0
2

yyy(4y[
3
h
dx)x(f
n22n2421n231o
b
a
++⋅⋅⋅++++⋅⋅⋅+++=
−−


Ch−¬ng tr×nh dïng thuËt to¸n Simpson nh− sau :

Ch−¬ng tr×nh 12-3

//Phuong phap Simpson;
#include <conio.h>
#include <stdio.h>
#include <math.h>

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;

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.


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status