1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

37 3,8K 17

Đ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 37
Dung lượng 1,22 MB

Nội dung

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

Trang 1

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

Hà Nội - 11/2009

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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,…

Trang 6

ƒ 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

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

Trang 7

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à

Trang 8

3 Câu điều kiện If

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

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:

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

Trang 9

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

Trang 10

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

Trang 11

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ỏ đó

Trang 12

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

Trang 13

Do các mốc cách đều nhau bước là h = và x = + ht , nên

• Trường hợp (2.7) khi n = 2 thì ta có

= ·

= − ·

Trang 14

= ·

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

Trang 15

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:

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)

Trang 17

od;

print("The solution is:",y);

end;

>

Trang 18

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

ApproximateInt(f(x), x=0 1, method = trapezoid);

ApproximateInt(f(x), x=0 1, method = trapezoid,

Trang 20

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

Trang 21

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

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

Trang 23

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

Trang 24

Ví dụ 3: Bài 6 trang 195 – Giáo trình Giải tích số - Lê Trọng Vinh

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

Trang 25

ApproximateInt(f(x), 0 1, method = simpson, output

= animation);

Trang 27

ApproximateInt(f(x), x=0 1, method = trapezoid);

ApproximateInt(f(x), x=0 1, method = trapezoid, output = plot);

ApproximateInt(f(x), x=0 1, method = trapezoid, output = plot, partition = 50);

ApproximateInt(f, 0 1, method = trapezoid, output = animation);

Ngày đăng: 21/07/2015, 16:16

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w