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

Tính gần đúng tích phân xác định bằng công thức hình thang và công thức simpson tổng quát

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 (1.22 MB, 37 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA TOÁN - TIN ỨNG DỤNG



BÀI TẬP LỚN
MÔN: LẬP TRÌNH TÍNH TOÁN
Đề tài:
Tính gần đúng tích phân xác định bằng công thức hình
thang và công thức Simpson tổng quát.

Giáo viên hướng dẫn : TS. Nguyễn Hữu Điển
Sinh viên thực hiện : Doãn Thu Anh
Phạm Thị Quỳnh Ngân
Lớp : Toán Tin 2 – K51

Hà Nội - 11/2009
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

MỤC LỤC

Lời mở đầu 3
Chương I Lý thuyết cơ sở 4
I. Giới thiệu tổng quan về Maple 4
II. Một số lệnh sử dụng trong chương trình 5
1. Vòng lặp while 5
2. Vòng lặp for 6
3. Câu điều kiện If 7
4. Lệnh Break 8
5. Lệnh Next 8


6. Sử dụng hàm Return, Error 9
Chương II Tính gần đúng tích phân xác định nhờ công thức hình
thang và Simpson tổng quát 10
I. Giới thiệu chủ đề bài toán 10
1. Mô tả bài toán 10
2. Yêu cầu và mục
đích của bài toán 11
3. Giới hạn việc thực hiện bài toán 11
II. Xây dựng công thức hình thang và Simpson tổng quát 12
1. Công thức hình thang và Simpson 12

2
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
2. Công thức hình thang và Simpson tổng quát 14
III. Chương trình minh họa 15
IV. Ví dụ cụ thể 18
Chương III Kết luận 35
I. Kết quả đã đạt được của đề tài 35
II. Tài liệu tham khảo 36
II. Kết luận 37

















3
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
LỜI MỞ ĐẦU
Ngày nay việc áp dụng các công nghệ khoa học kỹ thuật vào lĩnh vực đời
sống của con người ngày càng tăng và không ngừng can thiệp vào hầu hết các
công việc trong đời sống. Công nghệ thông tin là một trong số những ngành
khoa học đó. Đi đôi với sự phát triển của công nghệ chế tạo các thiết bị máy
tính thì việc các sản phẩm phần mềm ứng dụng ra đời có tính chất quyết định
đối với việc áp dụng ngành khoa học này. Trên thế giới cũng như ở Việt Nam,
công nghệ thông tin đã trở thành một ngành công nghiệp mũi nhọn, đó là một
ngành khoa học kỹ thuật không thể thiếu trong việc áp dụng vào các hoạt động
xã hội như : quản lý, kinh tế, thông tin …Yêu cầu tin học hóa đang trở nên
ngày một cấp thiết hơn đặc biệt là khi nước ta gia nhập WTO (Tổ Chức
Thương M
ại Thế Giới). Đối với các trường Đại hoc, Cao đẳng hay trung cấp
và dạy nghề hay các trường học bậc phổ thông cũng như tiểu học thì việc áp
dụng công nghệ thông tin là không thể thiếu. Maple là một chương trình hiện
nay được sử dụng rất rộng rãi trong các bộ môn khoa học, nhất là sinh viên

các trường Đại học.
Sau khi tìm hiểu các thuật toán đã được học trong Giáo trình Giải tích
số của thầ
y GS Lê Trọng Vinh kết hợp với những kiến thức đã học tại nhà
trường chúng em xin được chọn đề tài “
Tính gần đúng tích phân xác định
bằng công thức hình thang và công thức Simpson tổng quát
” với mong
muốn có thể nắm bắt và có khả năng tiếp thu các môn khoa học khác phục vụ
cho đào tạo ngành, đồng thời hiểu được mối quan hệ giữa toán học và thực
tiễn kỹ thuật của các ngành kỹ thuật mà trường đang đào tạo.
Chúng em xin chân thành cảm ơn PTS. Nguyễn Hữu Điển đã hướng dẫn
và giúp đỡ chúng em trong quá trình thực hiện đề tài. Bên cạnh nhữ
ng kiến
thức mà thầy truyền thụ cho chúng em thì chính kinh nghiệm và phương pháp
làm việc của thầy sẽ trở thành những bài học quý báu cho bản thân chúng
em
Hà Nội ngày 11 tháng 11 năm 2009
Sinh viên
Doãn Thu Anh – Phạm Thị Quỳnh Ngân

4
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

CHƯƠNG I: LÝ THUYẾT CƠ SỞ

I. Giới thiệu tổng quan về Maple:

Maple là một hệ thống tính toán trên các biểu thức đại số và minh họa
toán học mạnh mẽ. Từ khi ra đời đến nay Maple đã phát triển qua rất nhiều
phiên bản, Maple có cách cài đặt đơn giản, chạy được trên nhiều hệ điều hành,
có cấu trúc linh hoạt để sử dụng một cách tối ưu cấu hình máy và có trình trợ
giúp rất dễ sử dụng.
Trải qua nhiều phiên bản, Maple cung cấp ngày càng nhiều các công cụ
trực quan, các gói lệnh giúp tính toán toán học phổ thông và đại học. Ưu điểm
đó làm cho nhiều người lựa chọn và sử dụng Maple cùng với các phần mềm
toán học khác áp dụng trong dạy toán và các công việc tính toán đòi hỏi thực
tiễn và sự phát triển của giáo dục.
Ngôn ngữ lập trình Maple là một ngôn ngữ kiểu động. Cũng giống như
các hệ thố
ng đại số máy tính, các biểu thức hình thức đuợc lưu trữ trong bộ
nhớ theo đồ thị không chu trình có huớng (DAG). Ngôn ngữ cho phép các
biến có phạm vi nhất định (lexical scoping). Ngôn ngữ có hình thức lập trình
hàm, nhưng cũng có hỗ trợ đầy đủ cho lập trình truyền thống, theo kiểu mệnh
lệnh.

Các tính năng cơ bản của Maple
 Người dùng có thể nhập biểu thức toán học theo các ký hiệu toán họ
c
truyền thống.
 Có thể dễ dàng tạo ra những giao diện người dùng tùy chọn.
 Maple hỗ trợ cho cả tính toán số và tính toán hình thức, cũng như hiển
thị. Nhiều phép tính số học được thực hiện dựa trên thư viện số học NAG;
trong Maple, các chương trình con NAG đã được mở rộng để cho phép độ
chính xác ngẫu nhiên lớn.
 Cho phép triết xuất ra các định dạng khác nhau như LaTex, Word,
HTML,…


5
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

 Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ. Cũng có giao
diện cho những ngôn ngữ khác (C, Fortran, Java, MatLab, và Visual Basic).
Cũng có một giao diện dành cho Excel.
 Đáp ứng nhu cầu tính toán của nhiều đối tuợng: nguời dùng có thể
nhập biểu thức toán học theo các ký hiệu toán học truyền thống và thực hiện
đuợc hầu hết các phép toán cơ bản trong chương trình đại học và sau đại học.
 Là m
ột công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với
các lớp học tương tác trực tiếp; là một trợ giáo hữu ích cho học sinh sinh viên
trong việc tự học.

II. Một số lệnh sử dụng trong chương trình
1. Vòng lặp while

Cấu trúc cú pháp:

While <điều kiện> do <dãy lệnh> od;


Chức năng:
Vòng lặp while cho phép lặp chuỗi các câu lệnh giữa do và od khi mà
điều kiện condition vẫn còn đúng (tức là biểu thức điều kiện cho giá trị true).
Điều kiện condition được kiểm tra ngay tại đầu mỗi vòng lặp, nếu nó thỏa
mãn (giá trị của nó là đúng) thì các câu lệnh bên trong được thực hiện, sau đó

lại tiếp tục kiểm tra điều kiệ
n condition cho đến khi điều kiện không còn thỏa
mãn nữa. Vòng lặp while thường được sử dụng khi số lần lặp một hay một
chuỗi biểu thức là không xác định rõ, đồng thời ta muốn các biểu thức đó cần
được lặp trong khi một điều kiện nào đó còn được thỏa mãn.
Điều kiện condition trong vòng lặp phải là một biểu thức boolean, tức là
giá trị
của nó chỉ có thể là đúng hoặc sai, nếu không thì sẽ sinh ra lỗi.
Chú ý rằng vòng lặp while- do- od; không bắt buộc phải nằm trên nhiều
dòng lệnh nhưng người ta thường viết trên nhiều dòng để câu lệnh dễ đọc và
dễ hiểu hơn.
Vòng lặp While cho phép lặp chuỗi các câu lệnh nằm giữa do và od khi
mà điều kiện vẫn còn đúng.

2. Vòng lặp for

6
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

Cấu trúc cú pháp:


for name from start by change to finish
do
statement sequence
od;
Hoặc dạng phát biểu khác:


for name in expression
do
statement sequence
od;


Chức năng:
Vòng lặp for được dùng để lặp một chuỗi các biểu thức được đặt giữa do
và od, mỗi lần lặp tương ứng với một giá trị phân biệt của biến chỉ số name
đứng sau từ khoá for. Ban đầu, giá trị start được gán cho biến chỉ số. Nếu giá
trị của biến name nhỏ hơn hay bằng giá trị finish thì chuỗi l
ệnh nằm giữa do
và od được thực hiện, sau đó biến name được gán giá trị tiếp theo bằng cách
cộng thêm vào nó giá trị change (name:=name+change). Sau đó, biến name
được so sánh với finish để quyết định xem việc thực hiện chuỗi lệnh có được
tiếp tục nữa không. Quá trình so sánh biến chỉ số name và thực hiện chuỗi
lệnh được lặp liên tiếp cho đến khi giá tr
ị của biến name lớn hơn giá trị finish.
Giá trị cuối cùng của biến name sẽ là giá trị vượt quá finish đầu tiên. Chú ý,
nếu các từ khóa from start hoặc by change bị bỏ qua thì mặc định from 1 và
by 1 được dùng.
Vòng lặp for- in- do- od thực hiện việc lặp với mỗi giá trị mà biến chỉ số
name lấy từ biểu thức expression đ
ã cho. Chẳng hạn vòng lặp này được sử
dụng hiệu quả khi mà giá trị của biến name là một phần tử của một tập hợp
hoặc danh sách.


7

Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
3. Câu điều kiện If
Cấu trúc cú pháp:
if condition then
statement sequence
| elif condition then statement sequence |
|
else statement sequence |
fi;
Ghi chú: Các câu lệnh trong cặp dấu ngoặc đứng là các lệnh tuỳ chọn. Thí dụ:
biểu thức | statement | cho biết rằng statement là một câu lệnh tuỳ chọn.
Chức năng:
Nếu muốn một dãy biểu thức được thực hiện khi điều kiện nào đó được
thoả mãn và một dãy biểu thức khác được thực hiện nếu trái lại thì có thể dùng
câu lệnh if- then- else- fi. Trong câu lệnh trên, nếu điều kiện condition là
đúng thì chuỗi biểu thức đứng sau then được thực hiện, nếu trái lại thì điều
kiện condition sau từ khoá elif s
ẽ được kiểm tra, nếu nó đúng thì chuỗi lệnh
tương ứng sau then được thực hiện, cứ tiếp tục cho đến khi các điều kiện
condition đều không thỏa mãn, thì các biểu thức sau lệnh else được thực hiện.
Lưu ý rằng cấu trúc lệnh (tuỳ chọn) elif then được lặp lại với số lần
tuỳ ý. Từ khoá elif là dạng viết tắt c
ủa else if.
Các biểu thức điều kiện condition được sử dụng trong câu lệnh if phải
được tạo thành từ các bất đẳng thức, các đẳng thức (các phép toán quan hệ),
các biến số, các phép toán logic, các hàm có giá trị trả lại là giá trị logic. Nếu
trái lại thì sẽ gây ra lỗi.

4. Lệnh Break
Cấu trúc cú pháp: break
Chức năng:

8
Trong lúc vòng lặp while/for đang được thực hiện, nếu lệnh break được
gọi thì chương trình sẽ thoát ngay lập tức ra khỏi vòng lặp while/for tận trong
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
cùng nhất mà có chứa lệnh break (vì cũng có thể có nhiều vòng lặp while/for
được lồng nhau). Một ví dụ khá điển hình trong việc sử dụng lệnh break là
trong quá trình tìm kiếm search, rõ ràng là chúng ta sẽ muốn dừng quá trình
quét lại ngay khi tìm thấy đối tượng cần tìm. Khi đó, ngay tại thời điểm tìm
thấy, dùng lệnh break để nhảy ra khỏi vòng lặp tìm kiếm. Trước lệnh break
thường có một câu lệ
nh điều kiện if then
Nếu lệnh break dùng ngoài các vòng lặp while/for thì sẽ sinh ra lỗi. Chú
ý: break không phải là từ khoá (từ dành riêng cho Maple), vì vậy ta có thể gán
giá trị cho biến có tên là break mà không hề sinh ra lỗi (mặc dù điều này là
không nên).

5. Lệnh Next
Cấu trúc cú pháp: next
Chức năng:
Cũng giống như câu lệnh break, lệnh next được thực hiện trong vòng lặp
while/for với mục đích bỏ qua một số lệnh bên trong vòng lặp để nhảy qua lần
lặp tiếp theo. Khi gặp lệnh next trong vòng lặp, chương trình bỏ qua các lệnh
tiếp theo của vòng lặp tận cùng nhất chứa next cho đến khi gặp từ khoá xác

định kết thúc vòng lặp (ở đây là lệnh
od). Đến đây vòng lặp tiếp tục nhảy qua
lần lặp tiếp theo (nếu có thể) bằng cách tăng chỉ số hoặc kiểm tra điều kiện để
quyết định xem có nên thực hiện vòng lặp tiếp theo.
Lệnh next sinh ra lỗi nếu nó được gọi ngoài vòng lặp while/for. Tương
tự như break, next cũng không phải là từ khóa, do đó ta hoàn toàn có thể gán
cho next một giá trị (xem nh
ư next là một biến). Ngay trước lệnh next cũng
thường là một câu lệnh điều kiện if then

6. Sử dụng các hàm RETURN, ERROR
Hàm RETURN được sử dụng để cho giá trị hàm trước khi thoát khỏi chu
trình. Nếu không có lệnh RETURN, chu trình tự động cho kết quả của phép
tính cuối cùng trong chu trình. Hàm ERROR được sử dụng để đưa thông điệp
lỗi ra màn hình từ bên trong chu trình.

9
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

CHƯƠNG II:
TÍNH GẦN ĐÚNG TÍCH PHÂN XÁC ĐỊNH NHỜ
CÔNG THỨC HÌNH THANG VÀ CÔNG THỨC
SIMPSON TỔNG QUÁT

I. Giới thiệu chủ đề bài toán
1. Mô tả bài toá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 =
(2.1)
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 =
= F(a) - F(b) (2.2)
Tuy nhiên trong thực tế thì chúng ta thường gặp trường hợp hàm f(x)
không có 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 (2.1). 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 =
(2.3)
Nhưng 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. Nên trong thực tế người ta hầu như
không dùng (2.3) để tính xấp xỉ tích phân.
Trường hợp hàm số cho trong dạng bảng số, khái niệm nguyên hàm
không còn ý nghĩa gì nữa.

10
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Bài toán tìm giá trị của tích phân xác định trong toán học tính toán nghĩa
là giá trị đó được tìm thông qua giá trị hàm số dưới dấu tích phân tại một số
điểm thuộc đoạn [a,b].
Phương pháp đơn giản nhất để giải quyết bài toán trên là tính các giá trị
của hàm f(x) tại một số điểm
 [a,b] i = .

Từ bảng số đó ta xây dựng đa thức nội suy φ(x) thì
I =

Sau đây là một vài phương pháp tính gần đúng tích phân hay được dùng.
Ý tưởng cơ bản của các 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
mỗi đ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ể.
2. Yêu cầu và mục đích của bài toán
• Hiểu và nắm được thế nào là bài toán tính gần đúng tích phân xác
định.
• Nắm được phương pháp tính gần đúng tích phân xác định, qua đó biết
cách tính giá trị gần đúng tích phân xác định của một hàm bất kỳ.
• Biết cách áp dụng phương pháp tính gần đúng trên vào việc giải các
bài toán ngoài thực tế. Cụ thể ở đây ta giải bài toán trên Maple.

3. Giới hạn việc thực hiện bài toán
Giả
sử cần tính gần đúng tích phân trên đoạn [a,b] lớn, thì h = b – a theo công
thức hình thang
; h =
theo công thức Simpson với độ sai số xấp xỉ tương
ứng 0(
) ; hoặc 0( ) còn quá lớn.
Để khắc phục được h bé (0 < h < 1) mà vẫn sử dụng được các công thức
trên, người ta dựa vào tính chất khả tổng của tích phân xác định, nghĩa là chia
đoạn [a,b] thành các đoạn nhỏ rồi áp dụng công thức hình thang hay Simpson
trên đoạn nhỏ đó.

11

Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Có được h nhỏ mà công thức tính toán không phức tạp, thuận lợi cho tính
toán và thường sử dụng trong thực tế người ta đã xây dựng nên công thức hình
thang và Simpson tổng quát dựa trên công thức hình thang và Simpson.

II. Xây dựng công thức hình thang và Simpson tổng quát
1. Công thức hình thang và công thức Simpson
Giả sử biết giá trị
= f( ) i = ;
trong đó a ≡
< < < < ≡ b.
Hãy tính gần đúng giá trị của tích phân
I =
= (2.4)
Chia đoạn [a,b] thành n phần bằng nhau có bước h =
bởi các điểm
chia:

= a, = b, = + ih i = ;
đồng thời tại các điểm đó ta có bảng số

= f( ) i = (2.5)
Từ bảng số (2.5), theo công thức cầu phương gần đúng ta có:
I =
≈ (2.6)
trong đó
là số không đổi nào đó.

Ta đi tìm biểu thức hiện của các trong công thức (2.6). Nếu sử dụng đa
thức nội suy Lagrange thì

= dx

12
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Do các mốc cách đều nhau bước là h = và x = + ht , nên

= d( + ht)
hay
= h dt (i = )
hay
= (b-a)
trong đó
= dt (i = )
Vì h =
. gọi là hệ số Côtét
Vậy I =
≈ ( b-a ) (2.7)
trong đó
= f( ) = f( a + ih ) (i = )
• Trường hợp (2.7) khi n = 1 thì ta có

=

=

Vậy I = ≈ ( + )
(2.8)
Công thức (2.8) gọi là công thức hình thang.
• Trường hợp (2.7) khi n = 2 thì ta có

= ·

=
− ·

13
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
=
·

Do h =
, nên theo công thức (2.7) ta được
I =


( + + ) (2.9)
Công thức (2.9) gọi là công thức Simpson hay công thức Parabol.
2. Công thức hình thang và công thức Simpson tổng quát
Việc dùng công thức hình thang và Simpson tổng quát thay vì công thức
hình thang và Simpson đơn thuần sẽ đem lại kết quả tính với độ chính xác cao
hơn.
a) Công thức hình thang tổng quát

Chia đoạn [a,b] thành m phần bằng nhau có độ dài h
=
bởi các điểm
chia:

≡ a, = a + ih , ≡ b
Ký hiệu
= f( ) i = . Áp dụng công thức hình thang (2.8) cho từng
đoạn [
, ] i = và cộng lại ta có
I =
= + + +



[ + ] + [ + ] + + [ + ]

[( + ) + 2( + + + ) ]
hay I =
≈ [( + ) + 2( + + + )] (2.10)
với h =


14
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Công thức (2.10) được gọi là công thức hình thang tổng quát.


b) Công thức Simpson tổng quát
Chia đoạn [a,b] thành 2n phần bằng nhau có độ dài h =

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

≡ a, = a + ih i = , ≡ b
Áp dụng công thức Simpson (2.9) đối với từng đoạn [
, , [ , ],
, [
, ] và cộng lại ta có
I =


( + + ) + ( + + ) +
+

( + +
hay I =
≈ [( + ) + 4( + + + ) +
2(
+ + + )] (2.11)
Với h =

Công thức (2.11) được gọi là công thức Simpson tổng quát.
Nhận xét: Nói chung công thức Simpson tổng quát có độ chính xác cao hơn
công thức hình thang tổng quát tuy nhiên độ chênh lệch là không đáng kể.
III. Chương trình minh họa
Sau đây là đoạn chương trình chính thể hiện ( mô tả) thuật toán:


1. Công thức Simpson:

> simpson:=proc(f,a,b,n)

15
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
local y1,h,y2,i;
y1:=0;
y2:=0;
h:=evalf((b-a)/(2*n));
for i from 1 to n-1 do
y1:=evalf(y1+f(a+2*i*h));
od;
for i from 1 to n do
y2:=evalf(y2+f(a+(2*i-1)*h));
od;
print("The solution
is:",evalf((h/3)*(2*y1+4*y2+f(a)+f(b))));
end ;
>

16
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________



2. Công thức Hình thang:

> trapezium:=proc(f,a,b,m)
local y,h,i;
h:=(b-a)/m;
y:=evalf(h*(f(a)+f(b))/2);
for i from 1 to m-1 do
y:=evalf(y+h*f(a+i*h));
od;
print("The solution is:",y);
end;
>

17
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________

IV. Ví dụ cụ thể
Ví dụ 1: Bài 3 trang 195 – Giáo trình Giải tích số - Lê Trọng Vinh
Tính gần đúng tích phân I =
dx bằng công thức hình thang tổng quát,
lấy m = 10.
Giải:
Dùng Maple để tính gần đúng tích phân I =
dx bằng công thức hình
thang tổng quát rồi so sánh với đáp số trong Giáo trình Giải tích số.
Sau khi nhập số liệu, ta thu được kết quả như sau:

> f:=x->sqrt(x);

> trapezium(f,1,2,10);
The solution is;1.21882942

> with(Student[Calculus1]):
ApproximateInt(f(x), x=0 1, method = trapezoid);
ApproximateInt(f(x), x=0 1, method = trapezoid,

18
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
output = plot);
ApproximateInt(f(x), x=0 1, method = trapezoid,
output = plot, partition = 50);
ApproximateInt(f, 0 1, method = trapezoid, output =
animation);




19
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________




Kết luận : Kết quả của ví dụ trên hòan toàn đúng với đáp án đã cho.

20
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Ví dụ 2: Bài 4 trang 195 – Giáo trình Giải tích số - Lê Trọng Vinh
Tính gần đúng tích phân I =
dx bằng công thức Simpson tổng
quát với n = 10.
Giải:
Dùng Maple để tính gần đúng tích phân I =
dx bằng công thức
Simpson tổng quát rồi so sánh với đáp số trong Giáo trình Giải tích số.

Sau khi nhập số liệu, ta thu được kết quả như sau:
> f:=x->sqrt(1+(x)^(2));

> simpson(f,0,1,10);
The solution is;1.14779355

> with(Student[Calculus1]):
ApproximateInt(f(x), x=0 1, method = simpson);
ApproximateInt(f(x), x=0 1, method = simpson,
output = plot);
ApproximateInt(f(x), x=0 1, method = simpson,
output = plot, partition = 50);
ApproximateInt(f(x), 0 1, method = simpson, output

= animation);

21
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________



22
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________


Kết luận : Kết quả của ví dụ trên hòan toàn đúng với đáp án đã cho.

23
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
Ví dụ 3: Bài 6 trang 195 – Giáo trình Giải tích số - Lê Trọng Vinh
Cho I =
dx
a) Tính gần đúng tích phân trên bằng công thức Simpson tổng quát bằng
cách chia [2,2 ; 3,4] thành 10 đoạn bằng nhau.
b) Tính gần đúng tích phân trên bằng công thức hình thang tổng quát,

lấy m = 11.
Giải:
a) Dùng Maple để tính gần đúng tích phân I =

dx bằng công thức Simpson tổng quát rồi so sánh với đáp số trong
Giáo trình Giải tích số.
Sau khi nhập số liệu, ta thu được kết quả như sau:
> f:=x->(3.5*(x)^(2)+0.1*x-2.8)/(x-0.4);

> simpson(f,2.2,3.4,10);
The solution is;12.4361835

> with(Student[Calculus1]):
ApproximateInt(f(x), x=0 1, method = simpson);
ApproximateInt(f(x), x=0 1, method = simpson,
output = plot);
ApproximateInt(f(x), x=0 1, method = simpson,
output = plot, partition = 50);

24
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân
Đề tài: Tính gần đúng tích phân xác định bằng công thức hình thang và Simpson tổng quát
_________________________________________________________________________
ApproximateInt(f(x), 0 1, method = simpson, output
= animation);






25
Giáo viên hướng dẫn: TS. Nguyễn Hữu Điển
Sinh viên thực hiện: Doãn Thu Anh – Phạm Thị Quỳnh Ngân

×