1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về số ngẫu nhiên và ứng dụng

20 4,8K 21
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 422,02 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu về số ngẫu nhiên và ứng dụng

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI



BÀI TẬP LỚN

QUÁ TRÌNH NGẪU NHIÊN ỨNG DỤNG

Đề số 5: Tìm hiểu về số ngẫu nhiên và ứng dụng

Giảng viên hướng dẫn:

PGS TS Nguyễn Thị Hoàng Lan

Hà Nội 11/2014

Trang 3

Mục lục

CHƯƠNG I: Ý NGHĨA CỦA SỐ NGẪU NHIÊN 4

1 Bắt đầu từ lớp bài toán quen thuộc 4

2 Khái niệm số ngẫu nhiên 5

3 Khởi tạo số ngẫu nhiên 6

3.1 Thuật toán Lehmer: 6

3.2 Số ngẫu nhiên với phân phối bất kỳ 6

3.3 Phương pháp chuyển đổi phân vị 7

3.4 Phương pháp loại trừ 7

3.5 Phương pháp trộn 9

CHƯƠNG 2: SỬ DỤNG MATLAB TẠO SỐ NGẪU NHIÊN 10

1 Các hàm sử dụng để sinh số ngẫu nhiên 10

1.1 Hàm rand hàm trả về số giả ngẫu nhiên từ phân phối đều 10

1.2 Hàm randn hàm trả về số giải ngẫu nhiên có phân phối chuẩn Gauss 11 1.3 Hàm randi hàm trả về số giả ngẫu nhiên có phân phối đều rời rạc 11

1.4 Hàm random 12

2 Số ngẫu nhiên Lognormal 14

2.1 Lý thuyết 14

2.2 Sinh số ngẫu nhiên Lognormal bằng matlab 15

3 Số ngẫu nhiên nhị thức (Binomial random numbers) 16

4 Số ngẫu nhiên Chi-square (Chi-square random numbers) 18

Trang 4

CHƯƠNG I: Ý NGHĨA CỦA SỐ NGẪU NHIÊN

1 Bắt đầu từ lớp bài toán quen thuộc

Trong số các phương pháp để giải quyết những bài toán tất định, các phương pháp Monte Carlo là lời giải thích hợp để tính toán bằng máy tính, nhất

là khi các thuật toán tất định không thể đưa ra được kết quả chính xác Chúng ta quan tâm đến các phương pháp này vì lời giải của chúng sử dụng đến lý thuyết

số ngẫu nhiên

Một ví dụ điển hình là ước lượng giá trị của tích phân Monte Carlo có dạng tổng quát:

I =

V

f (⃗x )d ⃗x

Dạng cơ bản của tích phân này trong không gian một chiều, xét trong khoảng (0,1)

I =

0

1

f (x )dx

Như ta đã biết, giả sử có một biến ngẫu nhiên X ~ U(0,1), Y là một hàm của X có dạng y = g(x), khi đó tính được

E{g(x)} =

0

1

g ( x ) f X ( x ) dx

=

0

1

g ( x ) dx

Giả sử biến ngẫu nhiên X mô hình hóa cho một đai lượng vât lý nào đó trong thực tế, khi đó ta có thể ước lượng giá trị kỳ vọng E{g(x)} bằng tần suất tương đối:

I=E{g ( x )}= 1

ng (x i)

Trang 5

Nhận xét rằng, cho dù những dữ liệu xi được tạo bằng cách nào đi nữa, chúng vẫn là những số ngẫu nhiên có đặc trưng nhất định Do đó, nếu có một cách nào đó có thể tạo ra những số như vậy thì ta có thể tính được giá trị tích

phân I Từ đó dẫn đến nhu cầu thiết lập một phương pháp số để khởi tạo số

ngẫu nhiên Để thực hiện được điều đó, trước tiên ta cần trả lời các vấn đề sau:

- Số ngẫu nhiên là gì?

- Có thể khởi tạo số ngẫu nhiên bằng máy tính không?

- Có thể tạo ra số thực sự “ngẫu nhiên”?

2 Khái niệm số ngẫu nhiên

Khái niệm số ngẫu nhiên được rút ra từ hai quá trình nghiên cứu: lý thuyết và thực nghiệm

- Khái niệm lý thuyết: Một chuỗi số xi được gọi là ngẫu nhiên nếu các phần tử của nó bằng với những mẫu xi = Xi(ζ) của một biến ngẫu nhiên độc lập có phân phối đều

Biến ngẫu nhiên ở đây có phân phối đều vì số ngẫu nhiên cũng được hiểu theo nghĩa tương tự, tức là xác suất tạo ra một số ngẫu nhiên là như nhau trong cả chuỗi ngẫu nhiên

- Khái niệm thực nghiệm: Một chuỗi số xi được gọi là ngẫu nhiên nếu các thuộc tính thống kê của nó giống với những thuộc tính của dữ liệu ngẫu nhiên thu được từ một thử nghiệm ngẫu nhiên

Để kết quả thu được từ thực nghiệm phù hợp với lý thuyết xác suất:

o Các phép thử phải độc lập

o Mẫu thử thu được chi coi là gần đúng

Vì số liệu không chắc chắn như vậy

 Khó xác định bản chất của các số được tạo

 Lợi thế là có thể chuyển những vấn đề thiết lập tính ngẫu nhiên của chuỗi số về những bài toán quen thuộc

Trang 6

3 Khởi tạo số ngẫu nhiên

Thuật toán chung nhất để khởi tạo một dãy số ngẫu nhiên zi là:

zn = f(zn-1,…,zn-r) mod m Trên đây là 1 biểu thức đệ quy phi tuyến thể hiện z n với điều kiện m là hằng

số, f là hàm với các điều kiện ban đầu z n-1 ,…,z n-r Chất lượng của bộ khởi tạo

phụ thuộc vào dạng hàm f.

3.1 Thuật toán Lehmer: là bộ khởi tạo lâu đời nhất và đơn giản nhất.

z 0 = 1

z n = az n-1 mod m ≥ 1 m là số nguyên tố, a là số nguyên

Qua nhiều năm, một số thuật toán đã được đưa ra để tạo ra 1 dãy số ngẫu nhiên đẹp Tuy nhiên không phải tất cả đều được kiểm chứng và đứng vững với thời gian Một ví dụ về chuỗi zn co thể đáp ứng hầu hết đc các yêu cầu thu

được từ (8-134) với a = 27 – 1 và m = 231 -1 :

zn = 16.807zn-1 mod 2.147.483.647

Dãy này được xem là chuẩn nhất khi thỏa mãn các tiêu chuẩn kiểm tra về tính ngẫu nhiên và đã được áp dụng trong rất nhiều trường hợp

3.2 Số ngẫu nhiên với phân phối bất kỳ

- Gọi U là một biến ngẫu nhiên có phân phối đều trong khoảng (0, 1) tương ứng sẽ có các số ngẫu nhiên ui

- Nếu xi là các mẫu của BNN x, yi =g(xi ) là thể hiện của BNN y=g(x)

Ta chứng minh được:

nếu xi có phân phối Fx (x), thì yi có phân phối

Fx ((y-a)/b) nếu b>0

Fx ((y-a)/b) nếu b<0

Trang 7

Ta sẽ sử dụng những bổ đề trên để trình bày những phương pháp tạo ra số ngẫu nhiên với phân phối bất kỳ

Trang 8

3.3 Phương pháp chuyển đổi phân vị

Trước hết ta chứng minh được:

- Giả sử biến ngẫu nhiên X có phân phối bất kỳ Fx(X)

thì U = Fx(X) là biến ngẫu nhiên có phân phối đều trong khoảng (0,1) Suy ra:

X = Fx (-1)(U) với Fx(-1)(U) là hàm ngược của Fx(X)

Phương pháp khởi tạo: Như vậy để tạo một chuỗi có phân phối Fx(X)

ta chỉ cần tính hàm ngược của hàm phân phối đó và tính Fx(-1)(ui) Lưu ý rằng dãy xi là phân vị ui của Fx(x)

- Nhược điểm: Tìm hàm ngược không dễ dàng

3.4 Phương pháp loại trừ

Để tránh phải sử dụng hàm ngược như phương pháp chuyển đổi phân vị, ta xây dựng một phương pháp khác dựa trên trên khái niệm tần suất tương đối của hàm mật độ có điều kiện của BNN X với sự kiện giả định ω:

fx(X|ω)dx = ω)dx = )dx = P { x< X ≤ x+ dx ,ω } P {ω} (1)

Sự kiện ω xảy ra với điều kiện theo biến x và u, và được chọn sao cho:

fx(X|ω)dx = ω)dx = )dx = fy(Y)

Tạo chuỗi yi bằng cách đặt yi = xi nếu ω xảy ra, loại bỏ xi nếu ngược lại Lời giải là thỏa mãn nếu fy(X) bằng 0 trong mọi khoảng fx(X) bằng 0

Ta có thể giả định, mà ko cần làm mất đi tầm quan trọng của dạng tổng quát, tỷ

lệ fx(X)/fy(X) bị chặn dưới bởi một hằng số a dương

f x(X )

f y(X) ≥ a > 0 với mọi x

Trang 9

Định lý loại trừ: nếu BNN X và U là độc lập và

ω={u ≤ r(x)} với r(x) =a f y(X)

f x(X ) ≤ 1

Chứng minh: Hàm mật độ chung của hai BNN X và U bằng fx(X) trong dải 0<u<1 của mặt phẳng xu, các trường hợp còn lại bằng 0 Sự kiện µ bao gồm tất

cả các kết quả mà điểm (X,U) là vùng bị che dưới đường cong u=r(x) của hình bên dưới

Do đó

P(ω) = ∫

r ( x ) f x ( x ) dx=a

f y ( x ) dx=a

Sự kiện {x< X≤ x+dx,ω} bao gồm tất cả các điểm (x,u) nằm trong dải

x<X≤ x+dx nằm dưới đường cong u=r(x) Các khối xác suất trong dải

fx(x)r(x)dx như nhau Do đó

P{ x< X≤ x+dx,ω } = fx(x)r(x)dx

Thay vào (1) ta có (2), (đpcm)

Từ định lý loại trừ suy ra một chuỗi con của chuỗi xi thỏa mãn điều kiện ui≤r(xi) xác định một chuỗi số ngẫu nhiên có hàm mật độ fx(y|ω) = fy(y)

Ta có kết quả như sau:

Phương pháp khởi tạo:

Trang 10

Đặt yi=xi nếu ui ≤ af

x(X ); loại bỏ xi trong các trường hợp còn lại

3.5 Phương pháp trộn

Ta tạo một chuỗi số có hàm mật độ là tổng trọng số của m hàm mật độ khác

f(x) = p1f1(x) + … + pmfm(x) pk > 0 (3)

với mỗi fk là hàm mật độ của một chuỗi đã biết xik

Chuỗi xi được tạo theo quá trình trộn m chuỗi xikđược chọn ra theo quy tắc sau:

Đặt xi = x i k nếu p1 + … + pk-1 ≤ ui<pi +…+ pk (4)

Định lý trộn: nếu các chuỗi ui và x i1 ,……,x i m là độc lập đôi một lẫn nhau thì hàm mật độ fx(x) của chuỗi xi được quy định bởi (4) có dạng như sau :

fx(x) = p1f1(x) + … + pmfm(x) (5)

Chứng minh: chuỗi xi là hỗn hợp của m m chuỗi khác.Gọi hàm mật độ của chuỗi con của chuỗi thứ k là xik chính là fk(x) Chuỗi này cũng là một chuỗi con của xi với điều kiện phụ thuộc vào sự kiện:

Ak = { p1 + … + pk-1 ≤u< p1 +…+pk }

Do đó hàm mật độ của nó cũng bằng fx(x|Ak) Điều đó dẫn tới kết luận rằng : fx(x|Ak) = fk(x)

Từ định lý tổng xác suất, suy ra:

fx(x) = fx(x|A1)P(A1) + …+fx(x|Am)P(Am) Mặt khác ta có P(Ak)=pk , suy ra đpcm

Kết luận: hàm mật độ fx(x) tạo ra bởi (5) bằng với hàm f(x) của (3) Như vậy ta có phương pháp khởi tạo số như sau:

Đặt xi = x i k nếu p1 + … + pk-1 ≤ ui<pi +…+ pk

Trang 11

CHƯƠNG 2: SỬ DỤNG MATLAB TẠO SỐ NGẪU NHIÊN

1 Các hàm sử dụng để sinh số ngẫu nhiên (Genrating random number)

1.1 Hàm rand hàm trả về số giả ngẫu nhiên từ phân phối đều

- rand: trả về số ngẫu nhiên có phân phối đều trong khoảng (0, 1)

- m + (n-m)*rand: trả về số ngẫu nhiên có phân phối đều trong khoảng

(m, n)

- rand (1, n) : trả về n số ngẫu nhiên có phân phối đều (0,1)

- m + (n-m)*rand (1, k): trả về k số ngẫu nhiên có phân phối đều (m, n)

Hình 1: Code và kết quả hàm rand

Trang 12

1.2 Hàm randn hàm trả về số giả ngẫu nhiên có phân phối chuẩn Gauss

- randn: trả về 1 số ngẫu nhiên có phân phối chuẩn Gauss

- randn (1, n): trả về n số ngẫu nhiên có phân phối chuẩn Gauss

Hình 2: Code và kết quả chạy hàm randn

1.3 Hàm randi hàm trả về số giả ngẫu nhiên có phân phối đều rời rạc

Cú pháp: randi(n, 1, m) Trong đó:

- n: là giá trị lớn nhất của số ngẫu nhiên

- m cho biết số phần tử tạo ra

Hình 3: Kết quả chạy hàm randi

1.4 Hàm random

Y =random(name , A) Trả về Y là số ngẫu nhiên có phân phối

Trang 13

name Tham số được giới hạn bởi A Y có

cùng kích thước với A

Y =random(name , A , B) Trả về Y là số ngẫu nhiên có phân phối

name Tham số được giới hạn trong khoảng

(A, B)

Y =random(name , A , m , n , ) Trả về Y là mảng có kích thước [m n …]

chứa các số ngẫu nhiên có phân phối name.Tham số được giới hạn bởi A Các name trong hàm random

Trang 14

Hình 4: Các name trong hàm random

Bài tập: Sinh dãy số ngẫu nhiên có phân phối chuẩn, phân phối poission, phân

phối Gamma, phân phối Beta, phân phối Rayleigh, phân phối student-t, phân phối nhị thức

Code:

Trang 15

Kết quả:

Hình 6: Kết quả

2 Số ngẫu nhiên Lognormal

2.1 Lý thuyết

Nếu z là phân phối chuẩn N(0, 1) thì w = e a+ bz có phân phối Lognormal

fw(w) = 1

bw2∗π∗exp{−(lnw−a)2

2 b2 }

Trang 16

phân phối Lognormal

z có phân phối chuẩn N(0, 1) w có phân phối Lognormal với kỳ vọng μ

và độ lệch chuẩn σ

μ=log( √v +m m2 2)σ=√log(m v2+1)

Trong đó m, v lần lượt là kì vọng, độ lệch chuẩn của phân phối chuẩn tương ứng

2.2 Sinh số ngẫu nhiên Lognormal bằng matlab

Cú pháp:

- R= lognrnd(mu,sigma): trả về một mảng các số ngẫu nhiên được sinh

ra từ phân phối Lognormal với các thông số mu và sigma mu và sigma là trung bình và độ lệch chuẩn tương ứng với phân phối chuẩn miên quan

- R=lognrnd(mu,sigma,m,n) hoặc R=lognrnd(mu,sigma,[m,n, ]): trả về

một mảng có kích thước m, n

Đề bài: Sinh 8 số ngẫu nhiên Lognormal có kì vọng là 1 và độ lệch chuẩn là 2

Code:

Hình 7: Code sinh số ngẫu nhiên Lognormal

Trang 17

Kết quả:

Hình 8: Kết quả sinh số ngẫu nhiên Lognormal

3 Số ngẫu nhiên nhị thức (Binomial random numbers)

Cú pháp:

- R=binornd ( N , P)

- R=binornd ( N , P , n , m, )

- R=binornd(N , P ,[n m ])

Mô tả:

- R=binornd ( N , P) :tạo ra các số ngẫu nhiên phân phân phối nhi thức N

là số lượng các thử nghiệm, P là xác suất thành công cho mỗi thử nghiệm

- R=binornd ( N , P , m ,n , … ) và R=binornd (N , P ,[m n ]): tạo ra một mảng m,

n các số ngẫu nhiên phân phối nhị thức với N là số lượng các thử nghiệm, P là xác suất thành công cho mỗi thử nghiệm

Trang 18

Code:

Hình 9: Code sinh số ngẫu nhiên nhị thức

Kết quả:

Hình 10: Kết quả sinh số ngẫu nhiên nhị thức

Trang 19

4 Số ngẫu nhiên Chi-square (Chi-square random numbers)

Cú pháp:

- R=chi2 rnd (V )

- R=chi2 rnd (V ,m , n , )

- R=chi2 rnd(V ,[m n …]

Mô tả:

- R=chi2 rnd (V ): tạo ra các số ngẫu nhiên phân phối chi-square trong miền giới hạn V

- R=chi2 rnd (V ,m , n , …) và R=chi2 rnd(V ,[m n …]): tạo ra mảng m, n,… chứa các số ngẫu nhiên phân phối chi-square trong miền giới hạn V

Bài tập: Sinh 10 số ngẫu nhiên chi-square trong miền giới hạn V nhập vào từ

bàn phím

Code:

Hình 11: Code sinh số ngẫu nhiên Chi-square

Kết quả:

Hình 12: Kết quả sinh số ngẫu nhiên Chi-square

Trang 20

5.1 Các file nguồn kèm theo

- CHISQUARE.m: Chương trình nguồn sinh số ngẫu nhiên Chi-square

- NHITHUC.m: Chương trình nguồn sinh số ngẫu nhiên nhị thức

- RAND.m: Chương trình nguồn sinh số ngẫu nhiên bằng hàm rand

- RANDN.m: Chương trình nguồn sinh số ngẫu nhiên bằng hàm randn

- RANDOM.m: Chương trình nguồn sinh số ngẫu nhiên bằng hàm random

- LOG.m: Chương trình nguồn sinh số ngẫu nhiên Lognormal

- RANDI.m: Chương trình nguồn sinh số ngẫu nhiên bằng hàm randi

5.2 Cách sử dụng

- Giải nén

- Mở Matlab->Open->chọn chương trình nguồn -> run( ) Xem kết quả bên giao diện chính

Ngày đăng: 08/09/2015, 10:09

HÌNH ẢNH LIÊN QUAN

Hình 1: Code và kết quả hàm rand - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 1 Code và kết quả hàm rand (Trang 11)
Hình 2: Code và kết quả chạy hàm randn - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 2 Code và kết quả chạy hàm randn (Trang 12)
Hình 3: Kết quả chạy hàm randi - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 3 Kết quả chạy hàm randi (Trang 12)
Hình 4: Các name trong hàm random - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 4 Các name trong hàm random (Trang 14)
Hình 6: Kết quả - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 6 Kết quả (Trang 15)
Hình 7: Code sinh số ngẫu nhiên Lognormal - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 7 Code sinh số ngẫu nhiên Lognormal (Trang 16)
Hình 9: Code sinh số ngẫu nhiên nhị thức - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 9 Code sinh số ngẫu nhiên nhị thức (Trang 18)
Hình 11: Code sinh số ngẫu nhiên Chi-square - Tìm hiểu về số ngẫu nhiên và ứng dụng
Hình 11 Code sinh số ngẫu nhiên Chi-square (Trang 19)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w