Các hàm mật độ xác suất cơ bản
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 : CÁC HÀM MẬT ĐỘ XÁC SUẤT CƠ BẢN GV Hướng Dẫn SV Thực Hiện Lớp : NGUYỄN HỮU ĐIỂN : NGUYỄN LƯƠNG BẰNG : Toán – tin 2, K51 Hà Nội, tháng 11/2009 MỤC LỤC I Lịch sử phát triển Maple :……………………………… ……3 II Tìm hiểu phần Maple :……………………… ………….4 Các tính maple :………………… …………………4 Một số gói thủ tục :……………………… …………………………….5 2.1 Student :………………………… …………………………… 2.2 Plots Plottools :……………………………………………….6 2.3 Một số lệnh :………………………………………………………9 III Nội dung toán :…………………………………… ….………13 Ví dụ giới thiệu :……………………………………….……………….13 Code chương trình :……………………………………………… ….17 KẾT LUẬN :…………………………………………………………….….……20 TÀI LIỆU THAM KHẢO :……………………………………………….…….21 I Lịch sử phát triển Maple Khái niệm Maple xuất phát từ họp vào tháng 11 năm 1980 Đại học Waterloo Những nhà nghiên cứu đại học muốn mua máy tính đủ mạnh để chạy Macsyma Thay vào đó, người ta định họ phát triển hệ thống đại số máy tính riêng để chạy máy tính có giá thành hợp lý Do đó, dự án bắt đầu với mục tiêu tạo hệ thống đại số hình thức mà nhà nghiên cứu sinh viên truy cập Sự phát triển Maple tiến hành nhanh, với phiên hạn chế xuất vào tháng 12 năm 1980 Những nhà nghiên cứu thử nghiệm loại bỏ nhiều ý tưởng khác để tạo hệ thống liên tục cải tiến Maple trình diễn hội nghị bắt đầu vào năm 1982 Đến cuối năm 1983, 50 trường đại học cài Maple máy họ Do số lượng hỗ trợ yêu cầu giấy phép lớn, vào năm 1984, nhóm nghiên cứu xếp với WATCOM Products Inc để cấp phép phân phối Maple Vào năm 1988, số lượng hỗ trợ ngày tăng, Waterloo Maple Inc thành lập Mục tiêu công ty quản lý phân phối phần mềm Cuối cùng, công ty phải mở phòng R&D nhiều phát triển cho Maple thực đến ngày Sự phát triển đáng kể Maple tiếp tục diễn rại phòng thí nghiệm trường đại học, bao gồm: Phòng thí nghiệm Tính toán hình thức Đại học Waterloo; Trung tâm nghiên cứu Tính toán hình thức Ontario Đại học Tây Ontario; phòng thí nghiệm khắp nơi giới Vào năm 1989, giao diện đồ họa người dùng Maple phát triển bao gồm 4.3 dành cho Macintosh Những phiên trước Maple gồm giao diện dòng lệnh với ngõ hai chiều Bản X11 Windows với giao diện tiếp bước vào năm 1980 với Maple V Vào năm 1999, với việc phát hành Maple 6, Maple đưa vào số Thư viện Số học NAG, mở rộng độ xác ngẫu nhiên Vào năm 2003, giao diện “chuẩn” giới thiệu Maple Giao diện viết chủ yếu Java (mặc dù có nhiều phần, luật cho việc gõ công thức toán học, viết ngôn ngữ Maple) Giao diện Java bị phê phán chậm; phát triển thực sau, tài liệu Maple 11 documentation khuyến cáo giao diện (“cổ điển”) trước dành cho người với nhớ vật lý 500 MB Giao diện cổ điển không bảo trì Giữa 1995 2005 Maple nhiều thị phần vào tay đối thủ có giao diện người dùng yếu Nhưng vào năm 2005, Maple 10 giới thiệu “chế độ văn bản” mới, phần giao diện chuẩn Tính chế độ phép toán đưa vào ngõ nhập hai chiều, xuất tương tự công thức sách Vào năm 2008, Maple 12 thêm tính năn giao diện người dùng giống Mathematica, gồm có kiểu trình bày theo mục đích đặc biệt, quản lý phần đầu cuối trang, so trùng mở đóng ngoặc, vùng thực tự động, mẫu hoàn thành lệnh, kiểm tra cú pháp vùng tự động khởi tạo Những tính khác thêm để làm cho Maple dễ dùng hộp công cụ Maple II Tìm hiểu phần Maple Các tính Maple Có thể nêu vắn tắt chức Maple sau: • hệ thống toán biểu thức đại số; • thực hiệc hầu hết phép toán chương trình toán đại học sau đại học; • cung cấp công cụ minh họa hình học thuận tiện gồm: vẽ đồ thị tĩnh động đường mặt cho hàm tùy ý nhiều hệ tọa độ khác nhau; • ngôn ngữ lập trình đơn giản mạnh mẽ, có khả tương tác với ngôn ngữ lập trình khác; • cho phép trích xuất định dạng khác LaTex, Word, HTML, • Một công cụ biên soạn giáo án giảng điện tử, thích hợp với lớp học tương tác trực tiếp; • trợ giáo hữu ích cho học sinh sinh viên việc tự học Một số gói thủ tục 2.1 Student Gói lệnh Student hỗ trợ cho việc dạy học toán • Từ Maple 8, gói lệnh Student phát triển từ gói lệnh student trước nhằm hỗ trợ cho việc dạy học toán đại học phổ thông Khai thác khả gói lệnh đem đến cho giáo viên nhiều công cụ hỗ trợ phương pháp dạy học Có thể nói gói lệnh đề cập đến tất nội dung toán học đại học phổ thông, cung cấp nhiều lệnh thủ tục cho phép toán algorithm xuất chương trình giảng dạy, cung cấp nhiều công cụ tương tác dạng Maplet hỗ trợ việc làm bước phép toán vi tích phân • Gói lệnh Student có gói lệnh Calculus1 LinearAlgebra Precalculus Để nạp gói lệnh, làm sau: with(Student[Precalculus]): • Gói lệnh : Calculus1: gói lệnh quan trọng Student Nó chứa công cụ hỗ trợ từ hướng dẫn thực phép tính vi tích phân khảo sát vẽ đồ thị hàm; từ việc minh họa vẽ tiếp tuyến đường cong việc tính diện tích, thể tích mặt tròn xoay,v.v • Sử dụng Tutor gói Student hỗ trợ tính toán bước Ví dụ: Tích tích phân > with(Student[Calculus1]): IntTutor() Sau nhấn Enter, cửa sổ Maplet ra, cho phép ta nhập hàm khoảng cần tính tích phân (nếu tích phân xác định) 2.2 Plots Plottools Gói plots chứa lệnh cho phép vẽ hình không gian chiều, Gói plottools công cụ chứa lệnh cho phép làm việc với đối tượng hình ảnh: a Sự vận động đồ thị: animate3d(ham_co_tham_so,x=gt_dau gt_cuoi, y=gt_dau gt_cuoi, tham_so =gt_dau gt_cuoi); Ý nghĩa: hiển thị biến đổi, vận động đồ thị tham số thay đổi khoảng cho trước b.Lệnh plots[display]() Cú pháp: plots[display](a,b,c ,insequence=true(false),options); plots[display](L,insequence=true(false),options); plots[display](A,options); plots[display](P,options); Các tham số: a,b,c cá đồ thị riêng biệt L: dãy (list) đồ thị(ví dụ L:=a,b,c;) A: mảng chiều hai chiều đồ thị P: đồ thị dạng vận động insequence=true(false): cho phép đồ thị dãy(list) theo trình tự dãy options: tính chất lệnh vẽ plot/options c Lệnh plottools[rotate](): quay đồ thị 2D, 3D: Cú pháp: plottools[rotate](p,ang,pt_2d); quay góc ang quanh điểm có tọa độ pt_2d plottools[rotate](q,alpha,beta,gamma); quay đồ thị q quanh truc x, y, z với góc tương ứng plottools[rotate](q,alpha,[pt_3d1,pt_3d2]); quay đồ thị q quanh trục qua [pt_3d1,pt_3d2] Các tham số: p: cấu trúc đồ thị 2D q: cấu trúc đồ thị 3D ang: góc quay pt_2d: tọa độ điểm làm gốc alpha,beta,gamma:gốc quay quanh trục x,y,z [pt_3d1,pt_3d2]: d.Lệnh plottools[scale](): co giãn đồ thị Cú pháp: plottools[scale](p,a,b,pt_2d); plottools[scale](p,a,b,c,pt_3d); Các tham số: a,b,c: hệ số co giãn theo trục x,y,z pt_2d,pt_3d: tâm co giãn e.Lệnh plottools[translate](p,a,b): Lệnh tịnh tiến đồ thị Lệnh tác động lệnh đồ thị p cho kết tịnh tiến đồ thị đến tọa độ (a,b) Cú pháp: plottools[translate](p,a,b); "dịch chuyển tịnh tiến 2D" plottools[translate](q,a,b,c); "dịch chuyển tịnh tiến 3D" Các tham số: p,q: cấu trúc đồ thị cần dịch chuyển tịnh tiến a,b,c số thực (chính tọa mới) d Đưa chữ vào chuyển động Trong hình vẽ chiều gói plot đưa tiêu đề hình vẽ vào lựa chọn options: title=”text” Trong “text” xâu ký tự Chúng ta định phông chữ cỡ chữ cho tiêu đề options: titlefont Mặc định title thị dòng, điều khó khăn title dài Để title trải hay nhiều dùng, thêm lệnh \n vào “text” để đưa đoạn text xuống dòng 2.3 Một số lệnh 2.3.1Cấu Trúc Dữ Liệu Dãy Lệnh Tạo Dãy seq ( f (i) , i=low hight ); Khai báo tạo dãy cách thay gía trị i f(i) số nguyên liên tiếp nằm giới hạn tứ low đến hight seq ( f(x) , x=expression ); Khai báo tạo dãy mà thành phần sinh cách cho hàm f tác dụng lên thành phần (operand ) biểu thức expression Giá trị expression thường tập hợp hay danh sách , cấu trúc liệu khác mà lệnh op áp dụng , chẳng hạn tổng hay tích Dãy ( sequence ) nhóm đối tượng Maple xếp có thứ tự ngăn cách dấu phẩy Chẳng hạn a,b,c biểu thức dãy Dãy gán làm giá trị cho biến , ví dụ ta gán dãy a,b,c cho biến x lệnh x:=a,b,c Dãy dùng vào nhiều mục đích khác Maple : dãy dùng để xây dựng tập hợp danh sách , dãy dùng việc truyền đối số cho hàm có nhiều tham biến Một số hàm Maple cho cho kết qủa dạng dãy Chẳng hạn hàm solve() cho dãy đáp số toán có nhiều nghiệm Khi hàm op() nhận đối số biểu thức , cho dãy bao gồm tất thành phần biểu thức nhập vào Ký hiệu đặc biệt NULL thay cho dãy trống ( dãy không chứa ) Sự định giá hoàn toàn ( full evaluation ) Maple tự động áp dụng qúa trình tạo dãy , dãy dãy đơn giản thành dãy Chẳng hạn biến s1 gán dãy a,b,c trongd biến a,b,c biến gán giá trị lệnh s2:=s1,d gán cho biến s2 dãy a,b,c,d s3:=s1,NULL,s1 gán cho biến s3 dãy a,b,c,a,b,c Các hàm op() nops() không phép sử dụng cho dãy Nguyên nhân Maple dùng dãy làm đối số truyền cho hàm Do lời gọi hàm op(s1) định giá thành op(a,b,c) , hàm op nhận nhiều đối số : đối số đầu số nguyên hay phạm vi số ( tức mảng số nguyên liên tiếp , thí dụ mảng số nguyên phạm vi từ đến ) , đối số thứ biểu thức lệnh trện bị Maple báo lỗi Hàm seq() thuận tiện cho việc tạo dãy phần tử phụ thuộc tham số Như trình bày phần khai báo seq() tạo dãy phần tử theo công thức hay phép gán Thông qua biến đổi số phạm vi số nguyên cho biểu thức ,ta thu dãy ( hay nói cách khác , trường hợp xem dãy tập giá trị hàm dải số nguyên ) Lệnh seq() thực giống lệnh sum() việc áp dụng giá trị mục phạm vi cho trước vào hàm để thu phần tử dãy Lệnh seq() tạo dãy cách tác dụng hàm f lên thành phần danh sách cho trước x : 2.3.2 Vòng lặp for: Vòng lặp cấu trúc ứng dụng rộng rãi Trong phần quan tới cách sử dụng để tạo dãy cấu trúc đồ thị để thị hình ảnh 10 sản xuất hoạt ảnh Vòng lặp hữu ích cấu trúc dãy đủ phức tạp mà thủ tục seq biểu diễn rõ rang.Vòng lặp for cúng cấp cấu trúc lặp lại việc thực nhóm câu lệnh Một dạng số lần lặ biến có quy luật số đếm Cú pháp chung là: for i from m by j to n statement 1; statement 2; statement k end Giả thiết j số dương biến lặp i khởi tạo từ m, i X:=RandomVariable(Normal(0,1)); Y:=X^2; > PDF(Y,x); - Ví dụ 2: Cho X1 ~N(0,1), X2 có phân phối [-2,2] Tìm hàm mật độ Y=X1+x2 biết X1 X2 độc lập > with(Statistics): > X1:=RandomVariable(Normal(0,1)); X2:=RandomVariable(Uniform(-2,2)); Y:=X1+X2; > PDF(Y,x); > convert(%,Int); 13 > combine(%); Để nhanh chóng tra cứu hàm mật độ dạng tổng quát xem hình dạng đồ thị trường hợp cụ thể số phân phối liên tục thường gặp, Em viết giao diện có cấu trúc hình sau : 14 Khi click vào button tương ứng (như Normal(a,b), ChiSquare(n),…) ta thu hàm mật độ tương ứng dạng tổng quát Để vẽ đồ thị, ta sử dụng button plot bên với ý: Nếu hàm mật độ chứa tham số a,b dùng hàm Plot(a,b),….và vẽ đồ thị, ta thay đổi giá trị tham số ( mặc định cho chúng 1) Ví dụ : Tìm hàm mật độ Normal(a,b) vẽ đồ thị trường hợp a=1,b=2 15 Code chương trình : > restart; > with(Statistics): > with(Maplets[Elements]): > vdpp:=Maplet([ [Label("Cac ham mat xac suat co ban",'font'=Font(16,bold),foreground=blue)], [Button("Normal(a,b)",'onclick'='no'), Button("Beta(a,b)",'onclick'='be'), Button("Cauchy(a,b)",'onclick'='ca'), Button("Poisson(lambda)",'onclick'='po'), Button("ChiSquare(n)",'onclick'='ch')],[ Button("Gamma(a,b)",'onclick'='ga'), Button("StudentT(n)",'onclick'='st'), Button("Laplace(a,b)",'onclick'='la'), Button("Exponential(lambda)",'onclick'='ex'), Button("Uniform(a,b)",'onclick'='un')], [Button("LogNormal(a,b)",'onclick'='lognorm'), Button("FRatio(a,b)",'onclick'='fr')], [MathMLViewer['m'](height=130)], ["a=",TextField['a1'](width=3,"1"),"b=",TextField['b1'](width=3,"1"), "lambda=",TextField['l1'](width=3,"1"),"n=",TextField['n1'](width=3,"1")], [Button("Plot(a,b)",Evaluate('p'='plot(subs(a=a1,b=b1,rhs(f)),x=-infinity infinity)')), Button("Plot(n)",Evaluate('p'='plot(subs(n=n1,rhs(f)),x=-infinity infinity)')), Button("Plot(lambda)",Evaluate('p'='plot(subs(lambda=l1,rhs(f)),x=-infinity infinity)')), Button("Help",Evaluate('function'='Maplets[Display](helppp)')), Button("Thoat",Shutdown())], [Plotter['p']( height=300)], 16 [TextField['f'](visible=false)] ], Action['no'](Evaluate('m'='F(x)=PDF(Normal(a,b),x)'),Evaluate('f'='F(x)=PDF(Normal(a,b),x)')), Action['be'](Evaluate('m'='F(x)=PDF(Beta(a,b),x)'),Evaluate('f'='F(x)=PDF(Beta(a,b),x)')), Action['ca'](Evaluate('m'='F(x)=PDF(Cauchy(a,b),x)'),Evaluate('f'='F(x)=PDF(Cauchy(a,b),x)')), Action['po'](Evaluate('m'='F(x)=PDF(Poisson(lambda),x)'),Evaluate('f'='F(x)=PDF(Poisson(lambd a),x)')), Action['ch'](Evaluate('m'='F(x)=PDF(ChiSquare(n),x)'),Evaluate('f'='F(x)=PDF(ChiSquare(n),x)')) , Action['ga'](Evaluate('m'='F(x)=PDF(Gamma(a,b),x)'),Evaluate('f'='F(x)=PDF(Gamma(a,b),x)')), Action['st'](Evaluate('m'='F(x)=PDF(StudentT(n),x)'),Evaluate('f'='F(x)=PDF(StudentT(n),x)')), Action['la'](Evaluate('m'='F(x)=PDF(Laplace(a,b),x)'),Evaluate('f'='F(x)=PDF(Laplace(a,b),x)')), Action['ex'](Evaluate('m'='F(x)=PDF(Exponential(lambda),x)'),Evaluate('f'='F(x)=PDF(Exponenti al(lambda),x)')), Action['un'](Evaluate('m'='F(x)=PDF(Uniform(a,b),x)'),Evaluate('f'='F(x)=PDF(Uniform(a,b),x)')), Action['lognorm'](Evaluate('m'='F(x)=PDF(LogNormal(a,b),x)'),Evaluate('f'='F(x)=PDF(LogNorm al(a,b),x)')), Action['fr'](Evaluate('m'='F(x)=PDF(FRatio(a,b),x)'),Evaluate('f'='F(x)=PDF(FRatio(a,b),x)')) ): helppp:=Maplet([ Label("Huong dan su dung:",'font'=Font(15,italic)), Label("Cac ham phan phoi chua tham so a,b thi dung chuc nang Plot(a,b) de ve \n thi, va chu y ve thi can nhap them gia tri cua a va b.Cac chuc nang \nve thi khac cung hoan toan tuong tu.") ]): Maplets[Display](vdpp); 17 KẾT LUẬN Qua báo cáo trình bày bước để lập trình Maple, cách viết thủ tục tạo thư viện cụ thể Từ xây dựng nên nhiều chương trình khác phục vụ cho giảng dạy học tập Và nhận thấy khai thác tốt tính Maple đem lại cho ta công cụ hiệu học tập, nghiên cứu khoa học nhiều lĩnh vực khác Mặc dù vậy, hiểu biết sử dụng chương trình chúng em nhiều hạn chế nên tập đơn giản có nhiều thiếu sót Nhưng qua chúng em hiểu thêm công cụ hỗ trợ tính toán mạnh mẽ với nguồn liệu thư viện phong phú để giải toán Chúng em xin chân thành cảm ơn thầy giáo NGUYỄN HỮU ĐIỂN giúp đỡ để chúng em hoàn thành tập này! TÀI LIỆU THAM KHẢO Hướng dẫn sử dụng Maple V - Nguyễn Hữu Điển Tài liệu lấy Internet: http://dayvahoc.net http://www.google.com 18 [...]... button tương ứng (như Normal(a,b), ChiSquare(n),…) ta sẽ thu được hàm mật độ tương ứng dạng tổng quát Để vẽ đồ thị, ta sử dụng các button plot bên dưới với chú ý: Nếu hàm mật độ chứa tham số a,b thì dùng hàm Plot(a,b),….và khi vẽ đồ thị, ta có thể thay đổi các giá trị tham số ( mặc định mình đều cho chúng bằng 1) Ví dụ : Tìm hàm mật độ của Normal(a,b) và vẽ đồ thị trong trường hợp a=1,b=2 15 2 Code... là tìm hàm mật độ của ĐLNN Y=f(X) khi cho biết phân phối của X Ta chỉ hạn chế xét các ĐLNN một chiều Ứng dụng Maple ta có thể tiến hành giải quyết loại bài tập này một cách dễ dàng -Ví du 1: Cho X có phân phối chuẩn tắc N(0,1) Tìm hàm mật độ của ĐLNN > with(Statistics): > X:=RandomVariable(Normal(0,1)); Y:=X^2; > PDF(Y,x); - Ví dụ 2: Cho X1 ~N(0,1), X2 có phân phối đều trên [-2,2] Tìm hàm mật độ của... và X2 độc lập > with(Statistics): > X1:=RandomVariable(Normal(0,1)); X2:=RandomVariable(Uniform(-2,2)); Y:=X1+X2; > PDF(Y,x); > convert(%,Int); 13 > combine(%); Để có thể nhanh chóng tra cứu hàm mật độ dạng tổng quát cũng như xem hình dạng đồ thị của nó trong từng trường hợp cụ thể của một số phân phối liên tục thường gặp, Em đã viết một giao diện có cấu trúc như hình sau : 14 Khi click vào các button... tu.") ]): Maplets[Display](vdpp); 17 KẾT LUẬN Qua bài báo cáo này chúng ta đã trình bày những bước cơ bản để lập trình trong Maple, cách viết các thủ tục và tạo thư viện cụ thể Từ đó có thể xây dựng nên nhiều chương trình khác phục vụ cho giảng dạy và học tập Và có thể nhận thấy rằng nếu khai thác tốt các tính năng của Maple sẽ đem lại cho ta một công cụ rất hiệu quả trong học tập, nghiên cứu khoa học... hiện một nhóm các câu lệnh Một trong các dạng của nó là số lần lặ được chỉ ra bằng một biến có quy luật như số đếm Cú pháp chung là: for i from m by j to n do statement 1; statement 2; statement k end Giả thiết rằng j là số dương và biến lặp i được khởi tạo từ m, nếu i