II. CHỮA BÀI TẬP
E h I I h ba h
4.4.2 Một số hàm sinh số ngẫu nhiên a Hàm RAND
a. Hàm RAND
70
Giải thích. Hàm RAND sinh ra một ma trận cỡ m×n gồm các số ngẫu nhiên có phân phối đều trong đoạn [0, 1].
rand(n) = rand(n,n)
b. Hàm RANDN
Cú pháp: randn(m,n)
Giải thích. Hàm RANDN sinh ra một ma trận cỡ m×n gồm các số ngẫu nhiên có phân phối chuẩn N(0,1).
randn(n) = randn(n,n)
Thí dụ 13. Tính diện tích hình tròn đơn vị nằm trong góc phần tư thứ nhất:
21 1 1 1 0 0 x I dydx .
Giá trị chính xác của tích phân này là 4
. Để kiểm tra độ tin cậy của phương pháp Monte-Carlo ta cài đặt chương trình MonteCarlo.m với nội dung:
% Malab Code for The Monte-Carlo method clear; Icount =0;
nn = input(‘ Give number of points N : ’); for k=1:nn
x = rand(1); y = rand(1); %% [ x y] =rand(1,2) ytest = sqrt(1-x*x);
if y < ytest
Icount = Icount +1; end
end
Integr = Icount/nn; Iexact = pi/4;
fprintf(‘ The area is approximately :% f \n’, Integr); fprintf(‘ The exact value is :% f \n’, Iexact);
Chạy thử chương trình: >> MonteCarlo
Give number of points N : 200000 The area is approximately : 0.785540 The exact value is : 0.785398
Kết quả chạy chương trình với N=200000 điểm ngẫu nhiên cho thấy phương pháp Monte-Carlo có độ chính xác không cao lắm.
Thí dụ 14. Hãy tính diện tích của một phần hình parabol nằm trong góc phần tư thứ nhất bị cắt bớt một phần hình tròn. Phương trình của đường cong parabol và đường tròn được cho
như sau: 2 2 2 2 1 1 ( ) 1 , x-1 y- 4 2 3 x y x
Giải. Dễ dàng thấy rằng tích phân trên không thể tính trực tiếp được bằng công thức Parabol hay công thức Newton-Cotes. Tuy nhiên, phương pháp Monte-Carlo rất phù hợp để tính tích phân loại này bằng cách sử dụng N (số rất lớn) điểm ngẫu nhiên Mi(xi, yi) có phân
phối đều trong hình chữ nhật có kích thức 2×1: xi [0, 2], yi [0, 1]. Đầu tiên ta tính: Yi = 4 1 2 i x và 12 ( 1)2 2 i i i R x y với i1,N.
71 Sau đó loại bỏ những điểm Mi(xi, yi) không thỏa mãn các điều kiện yi <Yi và Ri >1/3