Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
676,5 KB
Nội dung
1 Mở ĐầU Phơng pháp Monte Carlo đời thời với hệ máy tính điện tử Mỹ từ năm 1943-1944 Tuy nhiên, tên gọi phơng pháp Monte Carlo hay gọi phơng pháp thử thống kê xuất từ điển Toán học vào năm 1949-1950 Đến năm 1961 chuyên khảo phơng pháp Monte Carlo nhà toán học N.P.Buslenko J.A.Srejder (ngời Nga) đời đợc nhiều nhà toán học quan tâm nớc ta, phơng pháp Monte Carlo đợc giảng dạy áp dụng vào thực tế từ năm 1963, mà công phải kể đến Giáo s Nguyễn Quý Hỷ, trờng Đại học KHTNĐHQG Hà Nội Chuyện kể Thành phố Monte (Monaco), thành phố tiếng với sòng bạc phục vụ nhiều hạng ngời khác Sự may rủi, đỏ đen liên tiếp đợc thể nghiệm phép thử tung đồng tiền chiếu bạc Nếu nói xác suất bắt nguồn từ chuyện ngời say rợu, phơng pháp Monte Carlo lại bắt nguồn từ sòng bạc thành phố có tên Monte MÃi đến năm 1977 phơng pháp đợc đa ứng dụng thời máy tính điện tử lần nớc ta Trớc tiên việc mô trận động đất giải toán thiết kế tối u thí nghiệm cỡ lớn (1977-1978) để bổ sung hệ trạm quan sát lÃnh thổ Việt Nam Năm 1985-1987 phơng pháp đợc dùng để giải toán điều khiển tối u nhà máy thủy điện Hoà Bình xác định trữ lợng thủy điện sông lới điện thống Bắc-Nam Phơng pháp Monte Carlo đà đợc nhiều nhà Toán học ứng dụng quan tâm đến để giải toán quy hoch tối u Để hiểu rõ phơng pháp Monte Carlo cách thức giải toán quy hoạch, lựa chọn đề tài Phơng pháp Monte Carlo thuật toán giải toán quy hoạch Việc sử dụng phần mềm Visual Basic để giải toán quy hoạch phơng pháp Monte Carlo đợc đề cập khóa luận Nội dung khoá luận đợc trình bày thành hai chơng Chơng : Phơng pháp Monte Carlo thuật toán Chơng : Thiết lập chơng trình ngôn ngữ lập trình Visual Basic Khóa luận đợc thực v hon thnh trờng Đại học Vinh, d−íi sù h−íng dÉn khoa häc cđa Th.S Ngun Thị Thanh Hiền Tác giả xin by tỏ lòng biết ơn sâu sắc đến cô, ngời đà dnh cho tác giả nhiều thời gian, quan tâm nhiệt tình hớng dẫn giúp đỡ tác giả hon thnh khóa luận Nhân dịp ny, tác giả xin trân trọng gửi lời cảm ơn chân thnh tới PGS.TS Trần Xuân Sinh, Th.S Lơng Xuân Phú, thầy cô giáo tổ Xác suất Thống kê v Toán ứng dụng, khoa Toán đà nhiệt tình tạo điều kiện giúp đỡ, góp ý cho tác giả trình học tập v nghiên cứu để hon thnh khóa luận Tác giả xin chân thnh cảm ơn tập thể lớp 48B Toán tin ứng dụng, gia đình v bạn bè đà động viên, giúp đỡ v tạo điều kiện tốt cho tác giả trình học tập v nghiên cứu CHƯƠNG Phơng pháp monte carlo thuật toán 1.1 Phơng pháp Monte Carlo 1.1.1 Giới thiệu chung phơng pháp Monte Carlo Ví dụ 1.( Bài toán Buffon- nhà toán học Pháp, TK 18) Trên mặt phẳng bàn, ta kẻ đờng thẳng song song, cách nhau, cự ly chúng ( đơn vị độ dài) Tính xác suất P( ) biến cố để kim AB cắt đờng thẳng đà kẻ mặt bàn Giải Bằng cách tung hú họa nh đà nêu với số lần tung N đủ lớn, ta xác định số lần kim cắt đờng thẳng m, dựa vào luật số lớn ta có đợc P( ) m N (*) Để tính toán hoàn chỉnh hơn, ta ký hiệu: - khoảng cách từ trung điểm O kim AB (đà rơi mặt bàn, sau tung hú họa) đến đờng A thẳng gần đờng đà kẻ - góc A nhỏ góc tạo kim AB với l O hớng trực giao đờng thẳng song song Trên B hình 1, ta thấy η =OA’’, gãc α = A ' OA, Ω = { OA ' ≤ OA '} ( ) V× OA ' = OA.cos α = h cos α nên ta có Hình { ( ) cos α} P(Ω) = P η ≤ h Ta biÕt r»ng ≤ η ≤ ;0 ≤ α kim đợc tung hú họa từ vị trí cao nên , đại lợng ngẫu nhiên độc lập, nhận giá trị đoạn 0, cách đồng khả năng, tức có phân phối đoạn 0, với hàm mật độ , x ∈[ a, b ] f ( x ) = b − a 0, x ∉[ a, b ] thĨ lµ 2 π π , x ∈0, p ( x) = 0, x ∉0, π 2 T¬ng tự, đại lợng có phân phối đoạn 0, với hàm mật độ có dạng 2, y ∈G 0, y ∉G , ψ( x) = Do tính độc lập nên hàm mật độ có dạng f ( x, y ) = p( x ).ψ ( y ) = π , x ∈G 0, x ∉G , ®ã G= { ( x, y ) : ≤ x ≤ π ,0 ≤ y 2} Trên mặt phẳng với hệ toạ độ vuông góc xOy, ta gọi S hình giới hạn trục hoành cung đờng cong ( ) cosx, x ∈ 0,π Khi ®ã S = { ( x, y ) : ≤ x ≤ π ,0 ≤ y ≤ ( h ) cosx} ⊂ G 2 y= h Tõ ®ã ta suy h2 cosx ÷ 2h P(Ω ) = P { ( α ,η ) ∈ S } = ∫ ∫ dy ÷dx = π ÷ π π So sánh với (*), ta tính đợc số theo công thức 2hN m Chẳng hạn với N=500 đợc 3,159 Ví dụ Để giải toán quy ho¹ch tuyÕn tÝnh { CX : X ∈ M }, víi M = { X∈ ℝn: AX = B, X ≥ } ta cã thĨ sư dơng thuật toán sau đây: Bớc Chọn ngẫu nhiên điểm X M Gọi X phơng án kỷ lục Bớc k.(k=0,1, ) Đà biết phơng án kû lơc X k Chän ngÉu nhiªn X k +1 ∈ M + NÕu CX k +1 ≥ CX k , lo¹i bá X k +1 + NÕu CX k +1 < CX k , g¸n X k := X k +1 , trë l¹i bíc k Quá trình lặp lại với k đủ lớn, ta đợc phơng án xấp xỉ phơng án tối u 1.1.2 Các nội dung Phơng pháp Monte Carlo + Nội dung thứ nhất: Một loại đối tợng quan trọng phơng pháp Monte Carlo việc giải số toán tất định, thực việc giải cách gắn yếu tố ngẫu nhiên toán, nghĩa ta đà xây dựng mô hình xác suất tơng ứng với toán đà cho, toán không liên quan đến tính xác suất Để sử dụng phơng pháp Monte Carlo vào toán tất định nói trớc hết ta lập toán xác suất tơng ứng mà lời giải y toán tất định xác định đợc từ lời giải x toán xác suất quan hệ hàm y = f(x) Đây nội dung thứ phơng pháp Monte Carlo Ví dụ Để xác định lời giải y = toán tính số , ta lập mô hình xác suất tơng ứng tung hú họa kim có độ dài AB mặt bàn kẻ có sẵn đờng thẳng song song cách Lời giải x toán xác suất P( ) để kim cắt đờng thẳng song song x =P( Ω ) Khi ®ã 2h 2h y = p(Ω) = = f(x) x + Néi dung thø hai: Sau công việc lập toán xác suất tơng ứng cho toán tất định, ta cần giải gần tập xác suất tơng ứng mô hình thông qua việc tiến hành phép thử ngẫu nhiên Đây trình thể xác suất tơng ứng từ kết phép thử ta thiết lập đại lợng ngẫu nhiên X m với lời giải x m mô hình xác suất Nếu lời giải y n toán tất định đợc xác định từ x quan hệ hàm y=f(x) với f hàm liên tục ta xấp xỉ véctơ ngẫu nhiên Y=f(x) n, nghÜa lµ X ≈ x ∈ ℝm ; Y=f(X) ≈ f(x) = y n Trong Y X đợc gọi ớc lợng hay ớc lợng Monte-Carlo (ULMC) lời giải y x lần lợt toán tất định xác suất tơng ứng Khi thể mô hình xác suất tơng ứng với toán tất định, cần giải phơng pháp Monte Carlo ta phải chuyển trình thể số mô hình xác suất nói Đây nội dung thứ phơng pháp Monte Carlo + Nội dung thứ ba: ứng dụng phơng pháp Monte Carlo vào việc giải số toán xác suất với tợng ngẫu nhiên không quan sát đợc thuộc loại toán toán quan trọng lý thuyết thông tin, phục vụ đám đông, vật lý hạt nhân Các toán nói có chung đặc điểm tợng ngẫu nhiên xuất khả quan sát đợc, nghĩa ta tiến hành thí nghiệm để quan sát chúng thực tế Chẳng hạn, toán mà trình diễn chậm có tính chất học chậm chạp việc tung kim, tung sỏi, diễn biến trình động đất tơng lai xa vùng lÃnh thổ, diễn biến trình sinh học cân sinh thái Các toán có trình diễn nhánh: Các trình khuyếch tán, trình phân nhánh phản ứng dây chuyền vật lý hạt nhân, trình xạ, khuyếch tán dịch chuyển quang học khí tốc độ diễn biến có tốc độ ánh sáng phức tạp mà có không đủ phơng tiện để quan sát Các toán cần thực thí nghiệm đắt: Nh việc bổ sung lớn mũi khoan thăm dò trữ lợng dầu khí khu mỏ đó, dự báo lu lợng nớc hồ điều khiển nhà máy thủy điện, dự báo kết trận đấu, quân sự, thể thao Công việc dự báo tiên nghiệm ta chờ đợi tợng ngẫu nhiên xảy ra, nghĩa tổ chức thể thí nghiệm ngẫu nhiên, để dựa vào phát biểu lời giải toán dự báo Tơng tự với trờng hợp nh cách gắn vào toán yêu tố ngẫu nhiên, ta cần xây dựng mô hình ảo (mô phỏng) gần giống nh thật để nghiên cứu máy tính Đây xem nội dung thứ ba phơng pháp Monte Carlo Một cách chung nhất, phơng pháp Monte Carlo phơng pháp số giải toán cách mô hình hóa đại lợng ngẫu nhiên Về mặt nội dung, phơng pháp liên quan tới t tởng xây dựng trình ngẫu nhiên giả tạo có tất đặc tính cần thiết hệ thống cần nghiên cứu Phơng pháp Monte Carlo áp dụng đợc nơi, miễn toán cho phép mô tả toàn thể hay phần lý thuyết xác suất, toán đà có nội dung tiền định chặt chẽ Nh vậy, sử dụng phơng pháp Monte Carlo để giải toán đó, ta cần thực nh sau: ã Xây dựng mô hình xác suất trình thực tiễn cần nghiên cứu ã Mô hình hóa đại lợng ngẫu nhiên với luật phân phối cho trớc ã Giải toán theo lý thuyết ớc lợng thống kê Giá trị thực tiễn phơng pháp Monte Carlo sử dụng phép thử thay cho kết tính toán dựa đại lợng ngẫu nhiên Bởi vậy, xác định đợc đặc trng trình cần nghiên cứu mà không cần dùng phơng trình mô tả thay đổi trình đà cho Một tên gọi khác phơng pháp Monte Carlo phơng pháp thử thống kê Bài toán phơng pháp Monte Carlo xác định xác suất kiện giá trị trung bình đại lợng ngẫu nhiên qua kết phép thử lặp lặp lại nhiều lần Cơ sở lợc đồ chung phơng pháp Monte Carlo định lý giới hạn trung tâm Theo định lý coi đại lợng m cha biết nh kỳ vọng toán học đại lợng ngẫu nhiên đó, tức E =m với phơng sai D = Từ định lý giới hạn trung tâm ta có hệ thức P N N ∑ξ j =1 j −m p 3σ N ≈ 0,997 j ,(j=1,2, , N) giá trị đại lợng ngẫu nhiên nhận đợc cột N phép thử Hệ thức xác định số cha biết m đồng thời đánh giá đợc sai sè Tõ hƯ thøc ®ã suy r»ng tăng số phép thử độ xác nghiệm tăng lên Nh vậy, thực chất phơng pháp Monte Carlo chơng trình để tiến hành phép thử ngẫu nhiên thực cách ngẫu nhiên Tuy nhiên thực tế thờng dùng chế tiêu chuẩn để sản sinh đại lợng ngẫu nhiên có phân phối miền miền (chẳng hạn đoạn [0,1]) Có thể nhận đợc số ngẫu nhiên phơng pháp Monte Carlo theo phơng pháp đà biết 10 Nhợc điểm quan trọng phơng pháp Monte Carlo để nhận đợc đặc trng trình nghiên cứu với độ xác cho trớc cần nhiều phép thử Chẳng hạn, với độ xác >0 cho trớc, để nhận đợc giá trị trung bình x đại lợng ngẫu nhiên , cần phải tiến hành số phép thử N= 4D , D phơng sai Nh với D = 0,01 = 0,001 N = 400.000 phép thử Mỗi phép thử, độ phức tạp tính toán thuật toán phụ thuộc độ dài liệu, tức phụ thuộc số biến n toán Vì vậy, nhiều toán phơng pháp Monte Carlo phải hạn chế số biến (Chẳng hạn: phơng pháp Monte Carlo giải toán quy hoạch thờng áp dụng với toán có số ẩn không lớn ( số ẩn n 30)) Ngày nay, với hệ máy tính có tốc độ ngày cao vấn đề khối lợng tính toán khắc phục đợc Do vậy, kết hợp thành tựu máy tính điện tử với phơng pháp Monte Carlo nhằm giải toán thuộc lĩnh vực kinh tế - xà hội khác xem nh cách mạng toán học tính toán Cơ sở toán học phơng pháp Monte Carlo luật số lớn thuộc lý thuyết xác suất thống kê toán 1.2 Sơ lợc Thuật toán Thuật toán đà đợc biết đến từ lâu Bản thân thuật ngữ thuật toán (Algorithm) viết tắt tên nhà toán học kỷ IX : AbuJa’fa Mohammed ibn Musa al-Khowarizmi Kh¸i niƯm tht toán có lịch sử phát triển lâu dài, sè mèc quan träng: 30 End If If (C1X < 0) Then sStr = sStr + " - " If (C1X -1) Then sStr = sStr + Trim(Str(Abs(C1X))) sStr = sStr + "x" ElseIf (C1X > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C1X 1) Then sStr = sStr + Trim(Str(C1X)) sStr = sStr + "x" End If If (C3Y < 0) Then sStr = sStr + " - " If (C3Y -1) Then sStr = sStr + Trim(Str(Abs(C3Y))) sStr = sStr + "y^3" ElseIf (C3Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + " + " If (C3Y 1) Then sStr = sStr + Trim(Str(C3Y)) sStr = sStr + "y^3" End If If (C2Y < 0) Then sStr = sStr + " - " If (C2Y -1) Then sStr = sStr + Trim(Str(Abs(C2Y))) sStr = sStr + "y^2" ElseIf (C2Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C2Y 1) Then sStr = sStr + Trim(Str(C2Y)) sStr = sStr + "y^2" End If If (C1Y < 0) Then 31 sStr = sStr + " - " If (C1Y -1) Then sStr = sStr + Trim(Str(Abs(C1Y))) sStr = sStr + "y" ElseIf (C1Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C1Y 1) Then sStr = sStr + Trim(Str(C1Y)) sStr = sStr + "y" End If If (C0 < 0) Then sStr = sStr + " - " If (C0 -1) Then sStr = sStr + Trim(Str(Abs(C0))) ElseIf (C0 > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C0 1) Then sStr = sStr + Trim(Str(C0)) End If If Trim(sStr) = "" Then sStr = "0" RefreshHMT = sStr End Function Đoạn code sau thể Hàm nhập Điều kiện Function RefreshDK(a, b, c As Double) As String // NhËp ®iỊu kiƯn a,b,c Dim sStr As String sStr = "" If (a < 0) Then sStr = sStr + " - " If (a -1) Then sStr = sStr + Trim(Str(Abs(a))) sStr = sStr + "x" ElseIf (a > 0) Then If (a 1) Then sStr = sStr + Trim(Str(a)) 32 sStr = sStr + "x" End If If (b < 0) Then sStr = sStr + " - " If (b -1) Then sStr = sStr + Trim(Str(Abs(b))) sStr = sStr + "y" ElseIf (b > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (b 1) Then sStr = sStr + Trim(Str(b)) sStr = sStr + "y" End If If (Trim(sStr) = "") Then sStr = "0" sStr = sStr + "