TẠ THỊ HOÀNPHƯƠNG PHÁP MONTE CARLO SINH BIẾN NGẪU NHIÊN Chuyên ngành: Toán ứng dụng KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS... Em xin bày tỏ lòngbiết ơn, lòng kính trọn
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
TẠ THỊ HOÀN
PHƯƠNG PHÁP MONTE CARLO SINH BIẾN NGẪU NHIÊN
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
Hà Nội – Năm 2015
Trang 2TẠ THỊ HOÀN
PHƯƠNG PHÁP MONTE CARLO SINH BIẾN NGẪU NHIÊN
Chuyên ngành: Toán ứng dụng
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS HÀ BÌNH MINH
Hà Nội – Năm 2015
Trang 3Mục lục
1.1 Tổng quan về MATLAB 5
1.2 Giao diện phần mềm và cách sử dụng 6
1.2.1 Cửa sổ lệnh 7
1.2.2 Lịch sử lệnh 8
1.2.3 Không gian làm việc workspace 8
1.2.4 Công cụ biên tập lệnh 9
1.3 Dữ liệu 10
1.3.1 Khai báo và sử dụng biến 10
1.3.2 Hằng số 10
1.3.3 Nhập, xuất dữ liệu 11
1.4 Đồ họa 12
1.5 Lập trình với MATLAB 12
1.5.1 Thư viện các hàm sẵn có 12
1.5.2 Xây dựng hàm 13
1.5.3 Các lệnh rẽ nhánh 14
1.6 Một số lưu ý 16
2 Các kỹ thuật cơ bản sinh biến ngẫu nhiên 17 2.1 Các định nghĩa cơ bản về biến ngẫu nhiên 17
2.1.1 Biến ngẫu nhiên rời rạc 17
2.1.2 Biến ngẫu nhiên liên tục 18
2.1.3 Hàm phân phối 19
Trang 42.2 Sinh biến ngẫu nhiên có phân phối đều 21
2.3 Phương pháp biến đổi ngược 24
2.4 Phương pháp chấp nhận-loại bỏ 26
2.5 Sinh biến ngẫu nhiên liên tục 29
2.5.1 Sinh biến ngẫu nhiên liên tục tuân theo phân phối chuẩn 29
2.5.2 Sinh biến ngẫu nhiên liên tục tuân theo phân phối mũ 30
2.5.3 Sinh biến ngẫu nhiên liên tục tuân theo phân phối Gamma 31
2.5.4 Sinh biến ngẫu nhiên liên tục tuân theo phân phối Chi-Square 33 2.6 Sinh biến ngẫu nhiên rời rạc 35
2.6.1 Sinh biến ngẫu nhiên rời rạc tuân theo phân phối nhị thức 35
2.6.2 Sinh biến ngẫu nhiên rời rạc tuân theo phân phối Poisson 35
2.6.3 Sinh biến ngẫu nhiên rời rạc tuân theo phân phối đều 38
Trang 5LỜI CẢM ƠNKhóa luận được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới sựhướng dẫn của thầy giáo TS Hà Bình Minh Sự giúp đỡ và hướng dẫn tậntình, nghiêm túc của thầy trong suốt quá trình thực hiện khóa luận này đã giúp emtrưởng thành hơn rất nhiều trong cách tiếp cận một vấn đề mới Em xin bày tỏ lòngbiết ơn, lòng kính trọng sâu sắc nhất đối với thầy.
Em xin trân trọng cảm ơn Ban giám hiệu trường Đại học Sư phạm Hà Nội 2,các thầy cô giáo trong khoa Toán, đặc biệt là thầy cô trong tổ Toán ứng dụng đãtận tình giúp đỡ, đóng góp ý kiến, tạo điều kiện thuận lợi cho em trong suốt quátrình học tập và hoàn thành khóa luận này!
Em xin gửi lời cảm ơn tới gia đình, các bạn sinh viên cùng nhóm đã luôn ởbên cổ vũ động viên tạo điều và giúp đỡ em trong suốt quá trình thực hiện và hoànthành khóa luận này
Hà Nội, tháng 5 năm 2015Sinh viên
Tạ Thị Hoàn
Trang 6Khóa luận được hoàn thành tại trường Đại học Sư phạm Hà Nội 2 dưới sựhướng dẫn của TS Hà Bình Minh.
Tôi xin cam đoan khóa luận "Phương pháp Monte Carlo sinh biến ngẫu nhiên"
là công trình nghiên cứu của riêng tôi không có sự trùng lặp với các kết quả của các
đề tài khác
Trong quá trình nghiên cứu và hoàn thành khóa luận tôi đã kế thừa nhữngthành quả khoa học của các nhà khoa học với sự trân trọng và biết ơn Tôi xin camđoan rằng các thông tin trích dẫn trong khóa luận đã được chỉ rõ nguồn gốc
Hà Nội, tháng 5 năm 2015Sinh viên
Tạ Thị Hoàn
Trang 7Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
LỜI MỞ ĐẦU
1 Lí do chọn đề tài
Toán ứng dụng là bộ môn rất quan trọng và có nhiều ứng dụng trong thực tế, giúpcon người rút ra thông tin từ dữ liệu quan sát, nhằm giải quyết các bài toán trongcuộc sống Phương pháp Monte Carlo ra đời cùng với thế hệ máy tính điện tử đầutiên ở Mỹ từ những năm 1943-1944 Tuy nhiên tên gọi phương pháp Monte Carlohay còn gọi là phương pháp thử thống kê xuất hiện trong từ điển Toán học từnhững năm 1949-1950 Đến năm 1961 cuốn chuyên khảo đầu tiên về phương phápMonte Carlo của nhà Toán học người Nga N.P.Buslenko và J.A.Srejder ra đời vàđược nhiều nhà Toán học quan tâm Ở nước ta phương pháp Monte Carlo được ápdụng và giảng dạy vào thực tế từ những năm 1963, mà công đầu tiên phải kể đến
là giáo sư Nguyễn Quý Hỷ, trường đại học KHTN-ĐHQG Hà Nội
Phương pháp Monte Carlo đã và đang được nhiều nhà Toán học quan tâm.Phương pháp này được ứng dụng rộng rãi trong các lĩnh vực như kỹ thuật tài chính,kinh tế vĩ mô và vật lí tính toán Để hiểu hơn về phương pháp này, tôi lựa chon đềtài "phương pháp Monte Carlo sinh biến ngẫu nhiên” để nghiên cứu
2 Mục đích nghiên cứu
Nghiên cứu phương pháp Monte Carlo sinh biến ngẫu nhiên
3 Phương pháp nghiên cứu
Nghiên cứu nhằm đưa ra nội dung và tìm hiểu rõ hơn về phương pháp Monte Carlo
4 Phạm vi nghiên cứu
Do thời gian không nhiều nên bài báo cáo chỉ tìm hiểu được một số vấn đề củaphương pháp Monte Carlo
5 Bố cục đề tài
Khóa luận này gồm hai chương:
Chương 1: Cơ sở MATLAB
Chương 2: Các kỹ thuật cơ bản sinh biến ngẫu nhiên
Tuy đã có nhiều cố gắng nhưng do thời gian và điều kiện nghiên cứu còn hạn chếnên khóa luận của em không tránh khỏi những sai sót,em rất mong được sự góp ýchỉ bảo của các Thầy, các Cô và các bạn đọc để khóa luận được hoàn thiện hơn
Em xin chân thành cảm ơn thầy Hà Bình Minh, đã tận tình giảng dạy, hướng dẫn
Trang 8em trong quá trình nghiên cứu và hoàn thành khóa luận Em xin chân thành cảm
ơn các thầy cô trong khoa Toán , đặc biệt là các thầy cô trong tổ Toán ứng dụng,trường Đại học sư phạm Hà Nội 2, đã dạy dỗ, chỉ bảo em trong suốt quá trình họctập, nghiên cứu, hoàn thành khóa luận này
Hà Nội, tháng 5 năm 2015
Sinh viên
Tạ Thị Hoàn
Trang 9mẽ với thư viện các chương trình lớn mà người dùng có thể ứng dụng trong nhiềulĩnh vực khác nhau, cụ thể:
• Giải quyết các tính toán số học căn bản
• Lập trình các ứng dụng mới với cấu trúc đơn giản, dễ tiếp cận
• Khảo sát, phân tích, khai phá dữ liệu
• Mô hình hóa, mô phỏng hóa với công cụ đồ họa mạnh mẽ
• Phát triển ứng dụng, giao tiếp với các phần mềm thông dụng như C++, Fortran,Excel
Hệ thống MATLAB gồm các thành phần cơ bản:
Trang 10Công cụ tính toán và môi trường phát triển
Thành phần này của MATLAB là tập hợp các công cụ và phương tiện giúpngười dùng sử dụng và giao tiếp với các chức năng và dữ liệu Phần nhiều cáccông cụ này có giao diện đồ họa Chúng bao gồm: Màn hình làm việc và cửa
sổ lệnh, công cụ biên tập và sửa lỗi, công cụ phân tích mã nguồn, trình duyệt
hỗ trợ, không gian làm việc, các tệp và công cụ khác
Thư viện các hàm toán học
MATLAB có một tập hợp lớn các giải thuật tính toán trải từ các hàm sơ cấpnhư hàm cộng, trừ, sin, cosin, đến các hàm phức tạp như nghịch đảo ma trận,tính trị riêng ma trận, các hàm Bessel, biến đổi Fourier
Ngôn ngữ lập trình
MATLAB có thể sử dụng như một ngôn ngữ lập trình cấp cao với các câu lệnh
rẽ nhánh, hàm,dữ liệu có cấu trúc, các lệnh nhập, xuất dữ liệu, và mang cácđặc điểm của ngôn ngữ lập trình hướng đối tượng Nó cho phép chúng ta tạonhanh một chương trình đơn giản, không có đặc tính tái sử dụng đồng thờichúng ta có thể sử dụng MATLAB như một công cụ tạo các ứng dụng phứctạp, sử dụng nhiều lần
1.2 Giao diện phần mềm và cách sử dụng
Để khởi động MATLAB, chúng ta kích đúp vào biểu tượng MATLAB, trên mànhình xuất hiện giao diện làm việc của MATLAB như hình 1.1 Giao diện cửa sổ
Trang 11Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Hình 1.1: Giao diện làm việc của MATLAB
lệnh bao gồm các thành phần có thể tùy biến: cửa sổ lệnh (command window),thư mục hiện tại (current directory), không gian làm việc (workspace), lịch sử lệnh(command history), các thanh công cụ và lối tắt Chúng ta lần lượt tìm hiểu chứcnăng và cách sử dụng trong phần tiếp theo
1.2.1 Cửa sổ lệnh
Cửa sổ lệnh (Command window), minh họa qua hình 1.2, là nơi giao tiếp chính củangười sử dụng và phần mềm Đây là nơi nhận, hiển thị các giá trị nhập vào, thểhiện trạng thái chương trình, các lệnh gọi hàm trong thư viện, hiển thị thông báo,kết quả làm việc Các lệnh nhập vào sau dấu ’»’ và nhấn Enter để xác nhận.Lệnhnhập vào có thể đơn giản như một phép cộng hai số, một lời gọi hàm toán học cósẵn như hàm sin hoặc một tập hợp các lệnh được viết sẵn trong M-file (một tệpvăn bản dạng đơn giản lưu dưới dạng tentep.m)
Ví dụ 1.2.1 Minh họa đơn giản về cửa sổ lệnh
a Gõ 1+2 và nhấn Enter, ta được ans=3
b Tạo M-file với nội dung
Trang 12%Minh hoa M-file don gian
1+2
3+4
%file luu ten tinhtoan.m
Gõ tinhtoan và nhấn Enter, ta được ans=3 và ans=7
c Gõ sin(pi/2) và nhấn Enter, ta được ans=1
d Gõ 4+5; và nhấn Enter, dấu nhắc chuyển xuống dưới
Hình 1.2: Cửa sổ lệnh
1.2.2 Lịch sử lệnh
Từ cửa sổ lịch sử lệnh (command history), hình 1.3, chúng ta xem lại các lệnh đãnhập Chúng ta cũng có thể chọn, xóa, gọi lại các lệnh cũ bằng cách mở chuột phảitại lệnh
1.2.3 Không gian làm việc workspace
Không gian làm việc workspace, hình 1.4, là nơi giúp người dùng quan sát được cácbiến đã được khai báo, sử dụng, các thuộc tính của biến như độ chiếm dụng bộ nhớ,
Trang 13Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Hình 1.3: Cửa sổ lịch sử lệnh đã gọi
kiểu dữ liệu Các giá trị này được xóa khi đóng phiên làm việc hoặc nhận lệnh xóa.Chúng ta có thể thực hiện các tác động xóa, sửa, lưu biến bằng cách mở chuộtphải tại tên biến
Hình 1.4: Không gian làm việc workspace
1.2.4 Công cụ biên tập lệnh
Công cụ biên tập lệnh Editor, hình 1.5, giúp người dùng tạo mới, thay đổi M-file.M-file hay tệp script là một file văn bản dạng đơn giản giúp chúng ta lưu một loạtlệnh MATLAB kế tiếp nhau Khi tệp này được chạy, MATLAB đọc và thực thi các
Trang 14lệnh hoàn toàn chính xác như khi người dùng gõ từng lệnh theo thứ tự trong cửa sổlệnh command window Trên bộ nhớ lưu trữ M-file lưu dưới tệp m M-file giúp việctính toán một loạt các lệnh được đơn giản và nhanh chóng, đồng thời giúp ngườidùng lưu trữ các lệnh để dùng lại khi cần Để chạy M-file, từ công cụ biên tập lệnhEditor ta nhấn phím nút run màu xanh hoặc từ cửa sổ lệnh gõ tên M-file.
Hình 1.5: Công cụ biên tập lệnh Editor
1.3 Dữ liệu
1.3.1 Khai báo và sử dụng biến
Dữ liệu của MATLAB được lưu dưới dạng ma trận MATLAB yêu cầu chúng ta khaibáo biến trước khi sử dụng Cú pháp khai báo biến có dạng tenbien=giatribandau.MATLAB phân biệt chữ hoa và chữ thường cho tên biến.Tên biến bắt đầu bằng chữcái và dài tối đa 31 ký tự bao gồm chữ cái, số và dấu gạch dưới Tên biến khai báokhông được trùng với các biến mặc định của MATLAB, bao gồm: ans, pi, eps,flops, inf, NaN or nan, i , j, nargin, nargout, realmin, realmax Nếu chúng
ta không khai báo tên, giá trị được lưu vào biến mặc định ans Chúng ta theo dõicác biến được khai báo, sử dụng thông qua không gian làm việc workspace Để xóabiến dùng lệnh clear tenbien
1.3.2 Hằng số
Trong MATLAB, hằng số là các biến có giá trị không thay đổi MATLAB khai báosẵn một số các biến dành cho hằng số, chúng ta không nên thay đổi giá trị củachúng Một số ví dụ như inf là đại lượng ∞, pi là hằng số π
Trang 15Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Hình 1.6: Khai báo và sử dụng biến
1.3.3 Nhập, xuất dữ liệu
MATLAB cho phép lưu trữ biến và sử dụng các biến đã lưu trữ thông qua tệp mat.Lệnh save tentep sẽ lưu toàn bộ các biến trong workspace vào tệp tentep trongthư mục hiện tại Tương tự lệnh load tentep tải lên workspace các biến đã lưutrong tệp tentep Người sử dụng có thể sử dụng các kiểu lưu trữ, đối tượng lưu trữphức tạp hơn thông qua các tùy chọn của hàm save,load
Hình 1.7: Lưu trữ dữ liệu và sử dụng dữ liệu đã lưu trữ
Trang 161.4 Đồ họa
Đồ họa là một trong những điểm mạnh nhất của MATLAB Với các công cụ sẵn cócủa MATLAB, người dùng có thể vẽ các đối tượng đồ họa từ đơn giản đến phức tạptrong không gian hai chiều, ba chiều MATLAB còn hỗ trợ người dùng xây dựngcác giao diện đồ họa GUI (graphical user interface) cho ứng dụng Hình 1.8 minhhọa cho khả năng đồ họa của MATLAB
Hình 1.8: Đồ thị một hàm đơn giản
1.5 Lập trình với MATLAB
Một hàm (function) là một tập hợp các lệnh nhằm thực hiện một công việc cụ thể.Trong MATLAB, mỗi hàm được lưu trữ trong một tệp riêng biệt Tên hàm và têntệp chứa hàm nên được đặt trùng nhau Các hàm tác động lên các biến trong bảnthân chúng, độc lập với các biến bên ngoài hàm Mỗi hàm có thể nhận một hainhiều đầu vào và trả lại nhiều hơn một đầu ra Trong MATLAB có hai loại hàm,hàm sẵn có và hàm do người dùng tự xây dựng
Trang 17Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Hình 1.9: Sử dụng hàm sẵn có
1.5.2 Xây dựng hàm
Ngoài các hàm sẵn có trong MATLAB, chúng ta cần xây dựng các hàm mới dànhcho các mục đích cụ thể Một hàm mới không nên đặt trùng với các hàm sẵn có củaMATLAB Cấu trúc chung của một function trong MATLAB:
function [daura1 daura2]=tenham(dauvao1 dauvao2)
%Mo ta ham
Noidungfunction
Lưu ý là danh sách đối số vào, đối số ra của hàm là không hạn chế và function đượclưu trong M-file có tên trùng với tên function Hình 1.10 minh họa cho việc tạo và
sử dụng hàm tong(a,b) để tính tổng hai số a,b
Hình 1.10: Xây dựng và sử dụng function tong
Trang 181.5.3 Các lệnh rẽ nhánh
Tương tự các ngôn ngữ lập trình khác, MATLAB cũng sử dụng các câu lệnh rẽnhánh Cấu trúc cụ thể như sau:
1 Các phát biểu điều kiện
if <biểu thức điều kiện> <phát biểu>
end
Nếu \textbf{<biểu thức điều kiện>} cho kết quả
đúng thực hiện thì thực hiện \textbf{<phát biểu>}
Tương tự với else và ifelse
Trang 19Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Hình 1.12: Minh họa hàm switch
Trang 20Hình 1.14: Minh họa hàm for
1.6 Một số lưu ý
• Nhấn ctrl+C để thoát một chương trình đang chạy
• Lệnh clc xóa cửa sổ lệnh command window, không xóa biến trong bộ nhớ
• Phím mũi tên lên xuống trên bàn phím được dùng để gọi lại các lệnh đã thựchiện trước đó
• Lệnh help name giúp hiển thị các trợ giúp về name khi name là tên một hàm,một toán tử
Trang 212.1 Các định nghĩa cơ bản về biến ngẫu nhiên
2.1.1 Biến ngẫu nhiên rời rạc
Nếu tập các giá trị mà biến ngẫu nhiên nhận là một tập gồm một số hữu hạn điểmhoặc vô hạn nhưng đếm được, khi đó biến ngẫu nhiên gọi là biến ngẫu nhiên rời rạc.Giả sử biến ngẫu nhiên ξ nhận các giá trị x1, x2, , xn, và p {ξ = xi} = pi, i =
Trang 22Trong trường hợp các giá trị xi, pi có tính quy luật, thay cho việc lập bảng trên ta
có thể mô tả bởi đắng thức dạng sau:
P {ξ = xi} = pi, i = 1, 2,
Ví dụ: gieo một con xúc xắc cân đối đồng chất 100 lần Gọi X là biến ngẫu nhiênchỉ số lần xuất hiện mặt lục trong 100 lần gieo trên Khi đó ta có phân phối xácsuất của X là
P {X = m} = C100m × (1/6)m× (5/6)100−m; m = 0, 1, 2, , 100
trong đó p = P xuất hiện mặt lục = 1/6
2.1.2 Biến ngẫu nhiên liên tục
Nếu tập các giá trị biến ngẫu nhiên nhận lấp đầy một khoảng nào đó, khi đó biếnngẫu nhiên được gọi là biến ngẫu nhiên liên tục
Để mô tả (hoặc xác định) biến ngẫu nhiên liên tục ta dùng khái niệm hàm mật độ.Hàm p(x) được gọi là hàm mật độ của biến ngẫu nhiên nào đó nếu thỏa mãn haiđiều kiện sau:
1 p(x) ≥ 0, ∀x ∈ (−∞, +∞)
2 R∞
−∞p(x)dx = 1
Trang 23Khóa luận tốt nghiệp Đại học Tạ Thị Hoàn
Trong trường hợp này, xác suất để ξ thuộc vào khoảng (x0, x1) được tính như sau:
Trong khoảng [0, π/2] thì sin2x ≤ 0 nên a ≤ 0
asin2xdx = −a
2 cos2x
đê chỉ hàm phân phối của biến ngẫu nhiên ξ
Một số phân phối một chiều quen thuộc
a Phân phối nhị thức
Xét n phép thử Bernoulli với xác xuất thành công P (A) = p Gọi ξ là số lần xuất
Trang 24hiện biến cố A trong n phép thử trên Phân phối của ξ được gọi là phân phối nhịthức và ký hiệu ξ = B(n, p).
P (ξ = m) = Cmnpm(1 − p)n−m, m = 0, 1, 2, , n
Dãy phép thử Bernoulli thường gặp nhiều trong thực tế do đó biến ngẫu nhiên tuântheo phân phối nhị thức cũng thường gặp trong các ứng dụng
b Phân phối Poisson
Phân phối này được Simeon Denis Poisson mô tả lần đầu tiên vào năm 1837 Phânphối này đã có nhiều ứng dụng đối với nhiều quá trình có kiên quan đến số quansát đối với một đơn vị thời gian hoặc không gian Chẳng hạn số cuốc điện thoạinhận được ở một trạm điện thoại trong một phút, số khách hàng đến nhà băng đốivới một chu kỳ 30 phút Số máy bị hỏng trong một ngày Nói chung là dòng vàocủa một hệ phục vụ (quán bia, hiệu cắt tóc, hiệu chữa xe, trạm điện thoại, ) làcác biến ngẫu nhiên tuân theo luật Poisson Hoặc giả sử có n điểm phân phối đềutrên [a, b] Khi đó số các điểm rơi vào một đoạn có độ dài đơn vị là biến ngẫu nhiênPoisson
c Phân phối đều
Hàm mật độ và hàm phân phối đã được đưa ra ở trên Từ biến ngẫu nhiên phânphối đều người ta nhận được bằng các số ngẫu nhiên
d Phân phối chuẩn N(µ, σ2)
Hàm mật độ chuẩn tổng quát p(x) = 1
σ√2πe−12σ2 (x−µ) 2
với −∞ < x < +∞
Đường cong mật độ này đối xứng qua đường x = µ, nhận trục Ox làm tiệm cậnngang và có giá trị cức đại tại x = µ với tung độ cực đại là 1
σ√2π Trường hợp đặcbiệt ξ ≃ N(0, 1) Khi đó hàm mật độ được ký hiệu là ϕ(x)
... trạm điện thoại, ) làcác biến ngẫu nhiên tuân theo luật Poisson Hoặc giả sử có n điểm phân phối đềutrên [a, b] Khi số điểm rơi vào đoạn có độ dài đơn vị biến ngẫu nhiênPoissonc Phân phối... nhiênPoisson
c Phân phối
Hàm mật độ hàm phân phối đưa Từ biến ngẫu nhiên phânphối người ta nhận số ngẫu nhiên
d Phân phối chuẩn N(µ, σ2)
Hàm mật độ chuẩn...
đê hàm phân phối biến ngẫu nhiên ξ
Một số phân phối chiều quen thuộc
a Phân phối nhị thức
Xét n phép