LỜI NÓI ĐẦU Trong thời đại công nghệ thông tin ngày nay, việc ứng dụng công nghệ thông tin vào cuộc sống, cũng như các ngành khoa học ngày càng trở nên quan trọng và cần thiết, các ứng d
Trang 1TRƯỜNG ĐẠI HỌC VINH
Trang 2Xác suất Thống kê và Toán ứng dụng
Cán bộ hướng dân: PGS.TS Trần Xuôn Sinh Sinh viên thực hiện: Nguyễn Thị Nhung
Lớp: 47Toán-Tin ứng dụng
Vinh, 5/2010
Trang 3Lời nói đầu
Các kiến thức cơ SỞ -¿¿-52225cz222cSveescvrverrrrrrrrrrrrrev
Giải gần đúng phương trình một ẩn - -
„000
Phương pháp lặp đơn ‹‹ - << ++
Phương pháp dây cung -. - << +
Phương pháp Newton cccc 22211111 222xxzrverrrrree
Tính gần đúng tích phân - -+++++++++52
Công thức hình thang «+ <<<<<<++
Công thức Parbol (Simpson) -‹ ¿+ + << 55s
Công thức Newton - COotes -¿s.-55-5cc5c+2cc+cecxssxcsrvsrxee
Thiết kế chương trình bằng ngôn ngữ C#
kÙIo c9 010 -“dA Ô
Chức năng của C# -.- c6 c+ 2 x2 vsExvsrrvsrrrrrrrrer
Cấu trúc và giao diện của chương trình -
Trang 5LỜI NÓI ĐẦU
Trong thời đại công nghệ thông tin ngày nay, việc ứng dụng công nghệ thông tin vào cuộc sống, cũng như các ngành khoa học ngày càng trở nên quan trọng và
cần thiết, các ứng dụng của phần mềm như Pascal, C, C# vào khoa học kỹ thuật ngày càng đóng vai trò quan trọng Trước đây khi công nghệ thông tin chưa phát triển thì việc giải các loại bài toán thuộc bộ môn Giải tích số như Phương trình hay tính Tích phân, thật khó khăn, dẫn đến kết quả không cao
Giờ đây khi máy tính được sử dụng rộng rãi thì những yêu cầu đó có thể được
giải quyết một cách đơn giản hơn Việc giải các loại bài toán Phương trình hay tính Tích phân bằng các phần mềm ứng dụng là nhanh và hiệu quả hơn rất nhiều Chỉ cần một thuật toán và chỉ cần thay các giá trị khác nhau thì sẽ cho ra các bài
toán khác nhau Việc tìm hiểu, học hỏi, ứng dụng và lập trình các phần mềm giải
quyết vấn đề này ngày nay là quan trọng và cần thiết
Đề tài khóa luận “Sử dụng ngôn ngữ lập trình C† giải gần đúng phương
trình một ẩn và tính tích phán” là một cách tập dượt nghiên cứu khoa học, ứng
dụng những thành tựu mới của công nghệ thông tin vào giải quyết các bài toán thuộc Giải tích số
Khóa luận được chia làm 2 chương:
Chương 1 trình bày một số phương pháp giải gần đúng phương trình một ẩn
và tính gần đúng tích phân, với mỗi phương pháp chúng tôi trình bày yêu các bài toán khác nhau tương ứng với các lược đồ thuật toán giải Các kiến thức chủ yếu được trích dẫn từ tài liệu tham khảo [1]
Chương 2 trình bày các đoạn code và các giao diện mô tả cách nhập và các
kết quả của các phương pháp
Khoá luận này được thực hiện và hoàn thành tại Khoa Toán - Trường Đại học
Vinh, dưới sự hướng dẫn của thầy giáo PGS.TS Trần Xuân Sinh Tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy, người đã dành cho tôi nhiều thời gian, sự quan tâm
nhiệt tình giúp đỡ tôi hoàn thành khóa luận
Trang 62 Nhân dịp này tôi cũng xin được cảm ơn các thầy cô giáo trong Tổ Xác suất Thống kê và Toán ứng dụng Khoa Toán, đặc biệt là các thầy giáo PGS.TS Nguyễn
Văn Quảng, đã tạo điều kiện giúp đỡ em hoàn thành Khoá luận này
Mặc dù đã có rất nhiều cố gắng nhưng vì năng lực và thời gian còn hạn chế nên Khoá luận không thể tránh khỏi những thiếu sót cả về nội dung và hình thức
Vì vậy, tôi rất mong lời chỉ bảo và sự góp ý của quý thầy cô và bạn đọc
Tôi xin chân thành cảm ơn!
Vĩnh, tháng 05 năm 2010
Tác giả
Trang 7trong đó /(x) là hàm số (đại số hay siêu việt)
Phương trình (1.1), trừ một số trường hợp đặc biệt có công thức giải đúng,
nói chung rất phức tạp, do đó ta phải tìm cách giải gần đúng Ngoài ra, các hệ số của f(x) trong thực tế chỉ biết gần đúng, vì thế việc giải đúng (1.1) chẳng những
không thực hiện nổi mà nhiều khi không có ý nghĩa
Thông thường, quá trình giải phương trình (1.1) bao gồm hai bước:
1) Bước giải sơ bộ: ở giai đoạn này, ta tìm một khoảng đủ bé chứa duy nhất một nghiệm của /(x) Để xác định khoảng (ø, b) đủ bé như vậy, người ta thường
sử dụng các phương pháp như: Phương pháp Đồ thị, Phương pháp Đại số, phương pháp Giải tích Chẳng hạn phương pháp Giải tích ta sử dụng mệnh đề: Nếu trên khoảng (a, b) phương trình (1.1) thoả mãn:
+) liên tục,
+ /()/@b) <0
+f (x) không đổi dấu,
thì (a, b) chứa duy nhất một nghiệm
2) Bước giải kiện toàn: Tìm nghiệm với độ chính xác cần thiết
Để giải phương trình (1.1) trong luận văn này, chúng tôi trình bày 3 phương pháp, đó là: Phương pháp lặp đơn, Phương pháp Newton và Phương pháp Dây cung 1.2 Phương pháp lặp đơn
Giả sử phương trình (1.1) tương ứng với phương trình sau:
Trang 84
Chọn x, c(ø,b) bất kỳ và tính các xấp xỉ tiếp theo nhờ công thức
Định lý 2.1 Giả sử @ e C'[a.b] sao cho:
a) Vxe [a,b], es) <q<I1, trong đó q là một số thực nào đó xác định
b vxela,b| ø(x) e [a,b]
Khi đó
i) Phuong trinh (1.2) có nghiệm £ duy nhất trên [a,b]
1) Phép lặp (1.3) hội tụ, hơn nữa ta có ước lượng
Vậy ø là ánh xạ co Không gian X =[a,b] v6i metric d(x, y):=|x—y| 1& khong gian
metric đủ Áp dụng nguyên lí ánh xạ co Banach ta suy ra điều phải chứng minh
Chú ý
1) Công thức (1.4) thường dùng làm ước lượng tiên nghiệm
Thật vậy, muốn x, -é|<e, ta chi cần:
4"q~4) | |x, -x9|< hay n >| nf 02 mu lạ =No
x1 ~ Xo
Như vậy, từ công thức (1.4), ta có thể chỉ ra số phép lặp cần thực hiện để
nghiệm gần đúng x„ xấp xỉ £ với độ chính xác « Mặt khác công thức (1.3) tiện lợi
trong quá trình tính toán vì nó cho ta ước lượng hậu nghiém (a- posteriori estimate)
Nếu sai số giữa hai xấp xỉ liên tiếp |x„ - x„_¡|< e—4)/4 thì |x„ —¿|<£
2) Nếu a= xạ —r;b= xạ +r thì để ø đưa đoạn [a,ø] vào [a,b] chỉ cần
\o(%o) x9] $-9)r.
Trang 95
3) Nếu ø đơn điệu tăng (giảm) thì để ø đưa đoạn [z,;] vào trong nó thì chỉ cần
a< ø(a); ø(b) <b (a< ø(0);ø(a) < b)
4) Nếu ø(x) >0 (vx e[a,5]) thì dấy {x„} hội tụ đến £ từ một phía
Thật vậy, ta có
X„a ~§ = Pn) — 9S) = Ø (ế„)Œx„ — Ê)-
Do đó
sgn(x,.1 —$) = sgn(x, — $)
trong đó sgn(z) là hàm dấu của a
Néu g (x) <0 thi dãy {x„} hội tụ đến ¿ từ hai phía, dao động xung quanh é
Thật vậy, cũng từ hệ thức x„., - ý = ø (ế,)(x„ —£) suy ra
sgn(x,,1 —$) = —sgn(x, — é)
Hình vẽ dưới đây minh hoạ cho nhận xét 4):
Trang 10
Sơ đồ khối của phép lặp đơn như sau:
Trang 11Rõ ràng phép lặp a) và b) cho trường hợp ø,.ø, là phân kỳ còn cho ø, thì hội
Ví dụ, nếu /(£)=0, còn f'(é) #0 ta cé thể lấy p(x) = FO
x
Khi đó ø=x- 4 i va oth Vì ø{)=0 và ø'@)liên tục nên tìm được : ;
ø >0 khá bé, sao cho Vx e(£—=ø,£+ø_ |ø@(+)|<4<1
Phương pháp lặp đơn có những ưu điểm sau:
1 Xấp xỉ ban đầu x„ không nhất thiết phải thật gần nghiệm đúng ý
2 Phép lặp đơn có khả năng tự sửa sai Nếu xấp xỉ thứ *,x, mắc sai số thì coi như xấp xỉ ban đầu mới
3 Có các đánh giá sai số (tiên nghiệm, hậu nghiệm)
4 Dễ lập trình trên máy tính (xem sơ đồ khối)
5 Dễ song song hoá trên các máy siéu tinh (supe computer)
Nhược điểm của phương pháp lặp là khi hệ số ¿ gần 1, phép lặp hội tụ rất
chậm
1.3 Phương pháp dây cung
Trong mục này, ta luôn giả thiết các điều kiện sau thoả mãn:
h1) Phương trình (1.1) có nghiệm ¿ duy nhất trên [z,b]
h2) / eC?[a,b| và ƒ'tx),ƒ”(x) không đổi dấu trên [a,»]
Định nghia Diém x < [a,b] được gọi là điểm Fourier, nếu ƒ”(x)./(x) > 0.
Trang 12Không giảm tổng quát, hàm f(x) trong phương trình (1.1) có thể coi có đạo
hàm /”(+) >0, nếu không ta xét phương trình g(x)=0 với g:=-—ƒ
Để xác định, ta gid sit f’<0 Diém x =a 1a diém Fourier, vi f(a) > f(6) =0
và /”(a)>0 Gọi x, là xấp xỉ thứ & >0 của nghiệm é (x„ = là xấp xỉ ban đầu)
Để tìm hoành độ của giao điểm của cung MN¿ với trục hoành, trong đó toạ độ của các điểm M,X, tương ứng là A⁄(z,ƒ(ø)), N,(x,,ƒ(zx,)), ta thay cung MN: bang
dây cung MN, và tìm hoành độ giao điểm của đoạn thẳng MA, với trục hoành
Phương trình đường thẳng đi qua hai điểm AM va N, 1a:
Mere “Fe - fia Go,
Theo công thức số gia hữu hạn, ta có
Hình 1.2 Như vậy dãy {x„ } đơn điệu giảm đến ý
Tương tự như vậy, nếu ƒ”(x)>0; /“(x)>0 thì ø là điểm Fourier Xấp xỉ ban dau x, =a va ta c6é phép lặp
SQ)
———*— (x, -b) 1.6
Xk =X
Trang 139
Ta có thể đánh giá sai số của phương pháp dây cung
theo hai cách sau:
Sau đây là sơ đồ khối của thuật toán (1.6) với quy tắc dừng (1.7)
Trang 14Dễ thấy ƒf(x)=3x”—0.4x—-0.2>0 và /ƒ”(x)=6x-0.4>0 với mọi xe(11.5)
Xap xi ban dau x, =1
Trang 1511 1.4 Phuong phap Newton
Chọn x4p xi ban dau x, là điểm Fourier: f(x,)f"(x,) > 0
Phuong trinh tiép tuyén ctia dudng cong y= f(x) tai diém M,(x%,.f(%)) có
dang
y= ƒ(%ạ)x~xạ)+ ƒŒạ)
Hoành độ giao điểm của tiếp tuyến này với trục hoành là:
0= ƒ(x)x—xạ)+ FX) hay x, =x) —f(%)/ f’%)-
Trang 16Cho n> ta duoc f(¢)=0 Tir gia thiét (hl, muc 1.3) suy ra =€
Để đánh giá giá sai số phương pháp Newton ta giả thiết rằng |ƒ"(x)|< M, và
'(x)|> M; với mọi x e[a,b| Một mặt ta có:
S Gn) = fC) - LE) = f' Onna — §)-
Tir day suy ra
⁄ FÁO DI
Khác với phương pháp lặp đơn, có bậc hội tụ 1 vì |x„, -¿|=0(|x„„, —x, 3),
phương pháp Newton có bậc hội tụ bằng 2
Phương pháp Newton hội tụ rất nhanh và do đó thường được sử dụng trên bước giải kiện toàn phương trình (1.1)
Sơ đồ khối mô tả phương pháp Newton gồm 2 phần Phần 1 là các thủ tục (ham) tinh f(x) va dao ham 7ƒ(x)= /(+) Phần 2 tìm nghiệm gần đúng theo
phương pháp Newton
Trang 1713
Begin
x
procedure f(x) procedure Df (x)
II TINH GAN ĐÚNG TÍCH PHÂN
Trong thực tế, nhiều khi ta phải tính tích phân xác định của hàm số mà không
n=l
biết nguyên hàm của nó Nếu định nghĩa tích phân 7 =lim > f(x,)Ax, thì tổng n0
Darboux hội tụ rất chậm, do đó để đạt được độ chính xác không cao, ta vẫn phải
Trang 1814 thực hiện một khối lượng tính toán rất lớn Ngoài ra, trong nhiều trường hợp, hàm
#Œ&) chỉ được cho dưới dạng bảng, vì vậy khái niệm nguyên hàm trở nên vô nghĩa Phương pháp đơn giản nhất để tính gần đúng tích phân xác định là thay f(x)
bằng đa thức nội suy P(x), sau đó đặt
Hinh 1.4 Nhu vay
a) Sai số địa phương Thực chất của việc thay [rac ~ “ là xấp xỉ hàm
f(x) trên đoạn [xạ,x, | bằng đa thức nội suy bậc nhất:
Trang 19Vì f"(x) =2x nên |ƒ”(x)|<2(Vx €[L5) và như vậy r= ee P= ; = 0.66
2.2 Công thức Parbol (Simpson)
Chia [a,b] thành 2z phân bằng nhau với bước ¡= (b— ø)/2w Trên mỗi đoạn
[xz;;.xz¡ || =1,n) ta thấy f(x) bằng đa thức nội suy bậc hai (parabol) với các mốc
x i=l
nên ta có công thức sau
b-a
{ft ==" 09 +49, +292 Ft AY on + Yan): (1.12)
Trang 2016 Sai số phương pháp
Sai số địa phương
Ap dụng định lí Rolle va vi F(0)=F(A)=0, nén tim được /e(0,) để
F'(t,)=0 Tiép theo F'(0) = F'(t,) =0, ta tim dugc ¿, e(0,,) để Ƒ”(,) =0 Cuối cùng,
do F"(0)=F"(t,)=0, nén t6n tai ¿; e(0,/,)sao cho #®)(,) =0 Từ (1.13) ta suy ra
Trang 22Phương pháp Runge trình bày dưới đây cho phép ta nhận được các ước lượng
hậu nghiệm (a- posteriori) khá hiệu quả của sai số
Gọi ® là sai số của phương pháp Simpson, theo (2.5) ® có dạng R~Cñ”,
trong đó C= cøns¿ >0 Tính tích phân 7 hai lần theo công thức (2.2) với bước h và h/2, ta được
h= , ta duoc x, =a+ih va G5 (i=0,n)
trong đó P(¢) là đa thức nội suy Lagrange của hàm ®(đ) với các số liệu
,0¢,)} -{ re} Đặt y= f(x,), ta có i
—*»
n
Trang 23ta nhận thấy các hệ số ?'_ (¡=0,n) không phụ thuộc vào hàm f(x) va đoạn lấy tích
phân [z,;], do đó chúng có thể được tính sẵn, lập bảng va sử dụng lâu dài
Trong biểu thức P/¿ nếu đổi biến ¿ =1-£ ta có thể chứng minh được rằng
Trang 241=>y,Pi => DvP = edt yP
Tiến toán được kết quả như sau:
1/6 6/7 216 185.142857 1/3 3/4 27 20.25 1/2 2/3 272 181.333333 2/3 3/5 27 16.2 5/6 6/11 216 117.818182
1 1/2 41 20.25
X = 581.994372
1 [z= — = 0.6933
8402”
Trong khi đó giá trị đúng của 7 là 7 = In2 = 0.69315
Trang 2521 Chương 2
THIẾT LẬP CHƯƠNG TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH C#
1 Giới thiệu về C#
1.1 Sơ lược về C#
C# 1a 1 ngôn ngữ lập trình đa năng và khá toàn diện hiện nay C# được phát
triển bở Microsoft và cũng chính là I phần của NET Phù hợp với nhiều tiêu chuẩn
nhu ECMA (ECMA-334) va ISO (ISO/IEC 23270) C# là I trong 44 ngôn ngữ được
hỗ trợ bởi Common Language Runtime của NET Framework
Tháng I năm 1999, Ander Hejlsberg đã xây dựng thành công 1 ngôn ngữ mới
gọi là "Cool" Cùng thời điểm này, dự ánh NET được phát hành ra thị trường tại cuộc họp của các chuyên gia lập trình vào tháng 7 năm 2000 và cũng chính từ đây
"cool" chính thức chuyển tên thành C# Các thư viện ASP.NET runtime cũng được tích hợp vào
C# là ngôn ngữ lập trình đơn giản, hiện đại, có tính tổng quát và dễ dàng định hướng cho dự án Gói C# gần đây nhất chính là bản 3.0 và bản này chỉ có thể chạy với >NET Framework 3.5 Phiên bản 4.0 đang được hoàn tất
C# có khoảng 80 từ khóa và hơn 10 kiểu dữ liệu dựng sẵn, những C# có tính
diễn đạt cao C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần
(component oriented)
Trọng tâm của ngôn ngữ hướng đối tượng là lớp Lớp định nghĩa kiểu dữ liệu mới, cho phép mở rộng ngôn ngữ theo hướng cần giải quyết C# có những từ khóa dành cho việc khai báo lớp, phương thức, thuộc tính (property) mới C# hỗ trợ đầy
đủ các khái niệm trụ cột trong lập trình hướng đối tượng: đóng gói, kế thừa, đa hình
Định nghĩa lớp trong C# không đòi hỏi tách rời các tập tin tiêu đề với tập tin cài đặt như C++ Hơn thế, C# hỗ trợ sưu liệu mới cho phép sưu liệu trực tiếp trong
tập tin mã nguồn Đến khi tập tin biên dịch sẽ tạo tập tin sưu liệu theo định dạng
XLM