Ứng dụng MATLAB trong tính toán ngẫu nhiên

62 904 0
Ứng dụng MATLAB trong tính toán ngẫu nhiên

Đ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

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA TOÁN NGUYỄN VĂN THƯA ỨNG DỤNG MATLAB TRONG TÍNH TỐN NGẪU NHIÊN KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC Chun ngành: Tốn ứng dụng Người hướng dẫn khoa học: ThS.Nguyễn Trung Dũng Hà Nội - 2013 LỜI CẢM ƠN Trước trình bày nội dung khóa luận, em xin bày tỏ lòng biết ơn sâu sắc tới Thạc sỹ Nguyễn Trung Dũng người tận tình hướng dẫn để em hồn thành khóa luận Em xin bày tỏ lịng biết ơn chân thành tới tồn thể thầy giáo khoa Tốn trường Đại học sư phạm Hà Nội dạy bảo em tận tình suốt trình học tập khoa Nhân dịp em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè ln bên em, cổ vũ, động viên, giúp đỡ em suốt q trình học tập thực khóa luận tốt nghiệp Hà Nội, ngày 17 tháng 05 năm 2013 Sinh viên Nguyễn Văn Thưa LỜI CAM ĐOAN Tôi xin cam đoan: Luận văn cơng trình nghiên cứu thực cá nhân, thực hướng dẫn khoa học Thạc sĩ Nguyễn Trung Dũng Các số liệu, kết luận nghiên cứu trình bày luận văn trung thực chưa cơng bố hình thức Tơi xin chịu trách nhiệm nghiên cứu Hà Nội, ngày 17 tháng 05 năm 2013 Sinh viên Nguyễn Văn Thưa Mục lục Chương Cơ sở MATLAB 1.1 Tổng quan MATLAB 1.1.1 Khái niệm MATLAB 1.1.2 Tổng quan cấu trúc liệu MATLAB, ứng dụng 1.1.3 Hệ thống MATLAB 1.1.4 Làm quen với MATLAB 10 1.1.5 Làm việc với cửa sổ MATLAB quản lý desktop 11 1.2 Nhập biến lệnh trực tiếp từ cửa sổ Command Window: 15 1.2.1 Nhập biến, ma trận, lệnh liệt kê trực tiếp 15 1.3 Sử dụng lệnh gián tiếp từ file liệu 18 1.4 Dòng nhắc gán giá trị biên 20 1.5 Cách tạo hàm function 21 1.6 Sử dụng hàm có sẵn 23 1.7 Vẽ hàm 23 1.8 Lưu lấy liệu 24 1.8.1 Lưu lấy liệu file nhi phân(binary) 1.8.2 Lưu lấy liệu file ASCII 1.9 Các toán tử logic lệnh điều khiển 1.9.1 Các toán tử quan hệ 1.9.2 Các toán tử logic 25 26 27 27 29 1.10 Các câu lệnh điều kiện, rẽ nhánh 30 1.10.1 Câu lệnh điều kiện if 1.10.2 Vòng lặp for 1.10.3 Vòng lặp while 1.10.4 Lệnh ngắt break, error, return 1.10.5 Lệnh error lệnh return 1.10.6 Biến toàn cục 1.10.7 Định dạng liệu 1.10.8 Một số hàm tốn học thơng thường hay sử dụng 30 32 33 33 34 35 35 37 1.11 Các số sử dụng Matlab 37 1.12 Số phức MATLAB 38 1.13 Các lệnh khỏi chương trình, liệt kê biến, xóa biến 39 Chương Sử dụng MATLAB tính tốn ngẫu nhiên 40 2.1 Sinh số ngẫu nhiên 40 2.1.1 Sinh số ngẫu nhiên có phân phối 2.1.2 Sinh số ngẫu nhiên có phân phối tùy ý 2.1.3 Sinh số ngẫu nhiên có phân phối mũ 2.1.4 Sinh số ngẫu nhiên có phân phối Poisson 40 41 41 41 2.2 Phương pháp Monte Carlo 42 2.2.1 Ước lượng tích phân phương pháp Monte Carlo 2.2.2 Ước lượng khoảng cách trung bình hai điểm 42 43 2.3 Sinh trình ngẫu nhiên 43 2.3.1 Mơ q trình Poisson 2.3.2 Mơ quỹ đạo q trình Wiener 43 44 2.4 Xấp xỉ tích phân ngẫu nhiên 44 2.5 Các chương trình Matlab 46 2.5.1 Xấp xỉ 01 sin πxdx phương pháp Monte Carlo 2.5.2 Tính khoảng cách trung bình hai điểm 2.5.3 Mơ quỹ đạo q trình Wiener 2.5.4 Sinh trình Poisson 46 49 50 52 2.5.5 Xấp xỉ kì vọng tích phân ngẫu nhiên 2.5.6 Tính xấp xỉ EI ( f ) 2.5.7 Ước lượng tích phân ngẫu nhiên 54 55 58 LỜI MỞ ĐẦU Lí thuyết ngẫu nhiên lĩnh vực toán ứng dụng quan trọng xuất phát triển thập kỉ gần Nhiều ứng dụng trình ngẫu nhiên xuất vật lí, kĩ thuật, sinh thái học, y khoa học lĩnh vực khác giải tích tốn học Cơng cụ lí thuyết ngẫu nhiên tốn tính tốn ngẫu nhiên Ngày nay, với phát triển mạnh mẽ phần mềm tốn học, q trình tính tốn ngẫu nhiên đơn giản hóa việc sử dụng phần mềm MATLAB Trên cở sở đó, khóa luận nghiên cứu số ứng dụng phần mềm MATLAB tính tốn ngẫu nhiên Bố cục khóa luận bao gồm hai chương: • Chương 1: Giới thiệu tổng quan phần mềm MATLAB • Chương 2: Trình bày số ứng dụng phần mềm MATLAB tính tốn ngẫu nhiên Do thời gian thực khóa luận khơng nhiều, kiến thức cịn hạn chế nên làm khóa luận khơng tránh khỏi hạn chế sai sót Tác giả mong nhận góp ý ý kiến phản biện quý thầy cô bạn đọc Xin chân thành cảm ơn! Hà Nội, ngày 17 tháng 05 năm 2013 Sinh viên Nguyễn Văn Thưa Chương Cơ sở MATLAB 1.1 Tổng quan MATLAB 1.1.1 Khái niệm MATLAB MATLAB ngôn ngữ lập trình thực hành bậc cao sử dụng để giải tốn kĩ thuật MATLAB tích hợp việc tính tốn, thể kết quả, cho phép lập trình, giao diện làm việc dễ dàng cho người sử dụng Dữ liệu với thư viện lập trình sẵn cho phép người sử dụng có ứng dụng sau đây: • Sử dụng hàm có sẵn thư viện, phép tính tốn học thơng thường • Cho phép lập trình tạo ứng dụng • Cho phép mơ mơ hình thực tế • Phân tích khảo sát thị liệu • Với phần mềm đồ họa cực mạnh • Cho phép phát triển, giao tiếp với số phần mềm khác C++, Fortran 1.1.2 Tổng quan cấu trúc liệu MATLAB, ứng dụng MATLAB hệ thống tương giao, phần tử liệu mảng ( mảng khơng địi hỏi kích thước ) Chúng cho phép giải vấn đề liên quan đến lập trình máy tính, đặc biệt sử dụng phép tính ma trận hay véc tơ sử dụng ngơn ngữ C Fortran lập trình thực ứng dụng lập trình câu lệnh gọi từ MATLAB MATLAB viết tắt từ chữ MATRIX LABORATORY tức thư viện ma trận, từ phần mềm MATLAB viết nhằm cung cấp cho việc truy cập vào phần mềm mà trận cách dễ dàng, phần mềm ma trận phát triển cơng trình Linpack Eispack Ngày MATLAB phát triển Lapack Artpack tạo nên nghệ thuật phần mềm cho ma trận a Dữ liệu Dữ liệu MATLAB thể dạng ma trận ( mảng - tổng quát ), có kiểu liệu liệt kê sau đây: • Kiểu đơn single, kiểu có lợi nhớ liệu địi hỏi byte nhớ hơn, kiểu liệu không sử dụng phép tính tốn học, độ xác • Kiểu double kiểu kiểu thông dụng biến MATLAB • Kiểu Sparse • Kiểu int8, uint8, int 16 • Kiểu char ví dụ ’ Hello’ • Kiểu cell • Kiểu Structure Trong MATLAB kiểu liệu double kiểu mặc định sử dụng phép tính tốn số học Các bạn tham khảo kiểu liệu khác đĩa CD help MATLAB 6.0 b Ứng dụng MATLAB tạo điều kiện thuận lợi cho: • Các khóa học tốn học • Các kỹ sư, nhà nghiên cứu khoa học • Dùng MATLAB để tính tốn, nghiên cứu tạo sản phẩm tốt sản xuất c Toolbox công cụ quan trọng MATLAB Công cụ MATLAB cung cấp cho phép bạn ứng dụng kỹ thuật để phân tích, thiết kế, mơ mơ hình Ta tìm thấy toolbox mơi trường làm việc : • Mạng nơron • Logic mờ • Simulink 1.1.3 Hệ thống MATLAB Hệ thống giao diện MATLAB chia thành phần • Môi trường phát triển Đây nới đặt công cụ, phương tiện giúp sử dụng lệnh file, ta có thêt liệt kê số sau nint=1/2; for i2=1:3 nint=8*nint; time=2; h=time/nint; hs=sqrt(h); w=zeros(nvec,1); y=zeros(nvec,1); for i=1:nint r=randn(nvec,1); %tt=(i-1)*h; f=exp(w/2);%f=w.*w; y=y + f.*r*hs; w=w+hs*r; end y=y.*y; mean=sum(y)/nvec;%giong meansqr chuong trinh goc %mean=sum(y)/nvec; %meansqr=sum(y.*y)/nvec; %disp((sprintf(’ %12.0f %12.0f’,nvec,nint))) %disp((sprintf(’ %12.5f %12.5f’,mean,meansqr))) disp((sprintf(’\n Expectation:%12.5f’,mean))) end end answer=input(’Press to run again ’); if answer~=1, display(’Goodbye’); end end 47 Kết chạy chương trình | | |Approximating the integral of 0 2.5.3 Mô quỹ đạo trình Wiener Vẽ đồ thị thể trình quỹ đạo Wiener, mức trung bình 200 quỹ đạo phương sai 200 quỹ đạo từ t=0 đến t=5 Sử dụng điểm cách t=0 đến t=5 %graph three individual %Wiener process trajectories, the average of 200 trajectories, and the variance %of 200 trajectories from t = to t = Use 500 points equally 50 spaced on t = %to t = Put all plots on one figure and hand in the figure answer=1; while (answer==1) clc clear for i=1:3 subplot(2,2,i); Wiener; end answer=input(’Press to run again ’); if answer~=1, display(’Goodbye’); end end Kết chương trình Hình 2.1: Ba đồ thị thể trình quỹ đạo Wiener 51 2.5.4 Sinh trình Poisson Chương trình máy tính để sinh q trình poisson Một mẫu đồ thị điểm với đường trung bình đồ thị mẫu gọi trình poisson với cường độ λ % MATLAB program to plot a Poisson process % Function file unirand.m is needed % Function unr=unirand(xx) returns two numbers: % unr(1) is uniformly distributed on [0,1], and % xx is set equal to unr(2) for the next call to unirand.m % The average of nrun paths and one sample path are plotted % The program can readily be modified to plot two paths clear clf xx=4034218; % xx starts the random number sequence nt=500; nrun=200; time=10; lambda=1; % nt is number of time intervals, time is total time % nrun is the number of different p aths h=time/nt; tt=linspace(0,time,nt+1); sm=zeros(nt+1,1); s2=zeros(nt+1,1); patha=zeros(nt+1,1); pathb=zeros(nt+1,1); for jj=1:nrun y=0; 52 % y=0 is initial value for all paths sm(1)=y; s2(1)=y*y; patha(1)=y; pathb(1)=y; for i=1:nt unr=unirand(xx); xx=unr(2); % need xx=unr(2) for next call to unirand.m if unr(1) < lambda *h y=y+1; end sm(i+1)=sm(i+1)+y/nrun; s2(i+1)=s2(i+1)+y*y/nrun; pathb(i+1)=patha(i+1); patha(i+1)=y; end end plot(tt,patha,’-’,tt,sm,’ ’,’linewidth’,1.5); set(gca,’fontsize’,18,’linewidth’,1.5); axis([0,10,0,10]); xlabel(’Time t’) ylabel(’Poisson Process - Unit Intensity’) set(gca,’linewidth’, 1.5); 53 2.5.5 Xấp xỉ kì vọng tích phân ngẫu nhiên Tính xấp xỉ cho kì vọng I(f) Giá trị E((I( f )))2 phần 3.3 sử dụng 2i mối quan hệ I( f ) ≈ IN ( f ) = ∑N−1 i=1 f (ti )Wi ∆i ti = N sử dụng M j=1 M E((I( f ))) ≈ ∑(IN , j( f )) = ( ∑ N − f (ti , ωi )∆W i, j)2 ∑ M M j=1 ∆Wi, j = W (ti+1 , ω j ) −W (ti , ωi ) Sử dụng N= 200 M=20000 Chương trình tính giá trị xấp xỉ f (W ( f ))dt chương trình mà hàm f quy đinh cụ thể Ghi kết tính tốn với danh sách chương trình tính tốn bạn % Expectations of a stochastic integral are approximated % Matrix array operations are used for efficiency % nvec paths are simultaneously computed %The program approximates expectations of %int(f (W (t),0,2) where the function f is specified %Chuong trinh moi can tinh E(I^2) nen ta can tinh I^2 truoc answer=1; while (answer==1) clc clear disp(’EX 3.4’); randn(’state’,3) for icase=1:5 nvec=20000; nint=200; time=2; h=time/nint; hs=sqrt(h); w=zeros(nvec,1); y=zeros(nvec,1); for i=1:nint 54 r=randn(nvec,1); %tt=(i-1)*h; f=exp(w/2);%org:f=w.*cos(w); y=y + f.*r*hs; w=w+hs*r; end y=y.*y; mean=sum(y)/nvec;%giong meansqr chuong trinh goc %meansqr=sum(y.*y)/nvec; %check=sum(exp(-w))/nvec; disp((sprintf(’time:%4.0f Expectation:%12.5f’,icase,mean))) end answer=input(’Press to run again ’); if answer~=1, display(’Goodbye’); end end Kết chương trình time: time: time: time: time: Expectation: Expectation: Expectation: Expectation: Expectation: 2.5.6 Tính xấp xỉ EI ( f ) 3.30410 3.45694 3.25713 3.20472 3.56581 Tính xấp xỉ hàm EI ( f ) Giá trị E((I( f )))2 = E(( sử dụng IN ( f ) = ∑ j=1 N − f (ti , ωi )∆ωi Khi sử dụng E((I( f ))) ≈ M M (I , j( f )) = N ∑ M j=1 55 ω t/2 dω(t)))2 e M ∑ ( ∑ N − f (ti , ωi )∆W i, j)2 j=1 j=1 ∆Wi, j = W (ti+1 , ω j ) −W (ti , ωi ) với N= 423 256và M= 500,5000, 50000 cho tổng phép toán % A stochastic integral is computed % Matrix array operations are used for efficiency % nvec paths are simultaneously computed answer=1; while (answer==1) clear clc disp(’EX 3.11’); randn(’state’,3) nvec=50; for i1=1:3 nvec=nvec*10; nint=1/2; for i2=1:3 nint=8*nint; time=2; h=time/nint; hs=sqrt(h); w=zeros(nvec,1); y=zeros(nvec,1); for i=1:nint r=randn(nvec,1); %tt=(i-1)*h; f=exp(w/2);%f=w.*w; y=y + f.*r*hs; w=w+hs*r; end y=y.*y; mean=sum(y)/nvec;%giong meansqr chuong trinh goc %mean=sum(y)/nvec; 56 %meansqr=sum(y.*y)/nvec; %disp((sprintf(’ %12.0f %12.0f’,nvec,nint))) %disp((sprintf(’ %12.5f %12.5f’,mean,meansqr))) disp((sprintf(’\n Expectation:%12.5f’,mean))) end end answer=input(’Press to run again ’); if answer~=1, display(’Goodbye’); end end Kết chương trình Expectation: 2.56136 Expectation: 3.21708 Expectation: 3.99431 Expectation: 2.82817 Expectation: 3.18635 Expectation: 3.50192 Expectation: 3.03283 Expectation: 3.42796 Expectation: 3.38832 57 2.5.7 Ước lượng tích phân ngẫu nhiên Chương trình ước lượng tích phân ngẫu nhiên 01 tW (t)dW (t) Trong chương trình, giá trị j số không gian mẫu, giá trị n dãy số xen kẽ Kết đầu chương trình liệt kê theo danh sách chương trình %This program estimates a stochastic integral on [a,b] clear all clc xx=9055301.; a=0.0; b=1.0; j=1000; aj=j; n=2; for nn=1:7 n=2*n; Anna=n; h=(b-a)/Anna; hs=sqrt(h); s1=0.0; s2=0.0; for k=1:j s=0.0; t=-h; w=0.0; for i=1:n t=t+h; [rand1,rand2,xx]=irandom(xx); f=fcalc(t,w); s=s+f*hs*rand1; w=w+rand1*hs; 58 end s1=s1+s/aj; s2=s2+s*s/aj; end fprintf(’\n %7d %7d %0.5f %0.5f’,n,j,s1,s2); end 59 KẾT LUẬN Những ứng dụng phần mềm MATLAB tính tốn ngẫu nhiên rộng Đã có nhiều cơng trình nghiên cứu vấn đề để tìm hiểu hết cần đóng góp nhiều cơng trình nghiên cứu khác, Khóa luận nghiên cứu số ứng dụng phần mềm MATLAB tính tốn ngẫu nhiên tính tích phân ngẫu nhiên, mơ quỹ đạo q trình Wiener, tính khoảng cách trung bình hai điểm, sinh số ngẫu nhiên, sinh q trình ngẫu nhiên Ngồi ra, khóa luận cịn giới thiệu kiến thức để sử dụng phần mềm MATLAB Tuy nhiên thời gian thực khóa luận khơng nhiều cịn có sai sót em mong nhận góp ý quý thầy cô bạn đọc 60 Tài liệu tham khảo [1] Đặng Hùng Thắng , Quá trình ngẫu nhiên tính tốn ngẫu nhiên , NXB Đại học Quốc Gia Hà Nội (2007) [2] Nguyễn Thành Nhựt, Hoàng Văn Hà, Bùi Xuân Thắng, THỰC HÀNH MATLAB , NXB Đại học Quốc Gia TP Hồ Chí Minh, (2010) [3] E Allen, Modelling with Ito Stochastic Differential Equations(2003) 61 ... ứng dụng phần mềm MATLAB tính tốn ngẫu nhiên Bố cục khóa luận bao gồm hai chương: • Chương 1: Giới thiệu tổng quan phần mềm MATLAB • Chương 2: Trình bày số ứng dụng phần mềm MATLAB tính tốn ngẫu. .. học Cơng cụ lí thuyết ngẫu nhiên tốn tính tốn ngẫu nhiên Ngày nay, với phát triển mạnh mẽ phần mềm toán học, q trình tính tốn ngẫu nhiên đơn giản hóa việc sử dụng phần mềm MATLAB Trên cở sở đó,... Chương Sử dụng MATLAB tính tốn ngẫu nhiên 40 2.1 Sinh số ngẫu nhiên 40 2.1.1 Sinh số ngẫu nhiên có phân phối 2.1.2 Sinh số ngẫu nhiên có

Ngày đăng: 31/10/2015, 22:13

Từ khóa liên quan

Mục lục

  • Cơ sở MATLAB

    • Tổng quan về MATLAB

      • Khái niệm về MATLAB

      • Tổng quan về cấu trúc dữ liệu của MATLAB, các ứng dụng.

      • Hệ thống MATLAB

      • Làm quen với MATLAB

      • Làm việc với các cửa sổ của MATLAB được quản lý bởi desktop

      • Nhập biến lệnh trực tiếp từ cửa sổ Command Window:

        • Nhập các biến, ma trận, các lệnh liệt kê trực tiếp

        • Sử dụng các lệnh gián tiếp từ các file dữ liệu

        • Dòng nhắc gán giá trị biên

        • Cách tạo một hàm function

        • Sử dụng hàm có sẵn

        • Vẽ các hàm

        • Lưu và lấy dữ liệu

          • Lưu và lấy dữ liệu dưới file nhi phân(binary)

          • Lưu và lấy dữ liệu dưới file ASCII

          • Các toán tử logic và các lệnh điều khiển

            • Các toán tử quan hệ

            • Các toán tử logic

            • Các câu lệnh điều kiện, rẽ nhánh

              • Câu lệnh điều kiện if.

              • Vòng lặp for

              • Vòng lặp while

              • Lệnh ngắt break, error, return

              • Lệnh error và lệnh return

Tài liệu cùng người dùng

Tài liệu liên quan