Mưa hay bài toán số ngẫu nhiên
17/10/2006

Mưa! trú ngay, không thì ướt hết!

Trú mưa dưới gốc cây, nhìn những hạt mưa rơi. Những hạt mưa rơi ngẫu nhiên và đều khắp. Thật khó mà đoán được hạt mưa tiếp theo sẽ rơi chỗ nào. Bởi thế đã có nhà thơ viết "Thân em như hạt mưa sa...". Có hàng vạn các qui luật trên đời này, sự ngẫu nhiên thì làm được trò trống gì cơ chứ? Vậy mà chúng ta lại có thể chứng minh điều ngược lại: sự ngẫu nhiên lại rất hữu ích. Ai cũng biết diện tích S của hình tròn bán kính r được tính theo công thức S= II r2. Có điều các em chưa biết là có thể tính được giá trị của số II nhờ những dọt nước mưa rơi ngẫu nhiên. Để tính toán chúng ta cần mô phỏng lại một trận mưa trên máy tính.


Cho mưa rơi vào một hình vông cạnh dài bằng 1. Nhớ là mưa phải rơi ?đúng như thật?, tức là phải rơi ngẫu nhiên. Đếm số hạt mưa rơi vào hình quạt như hình vẽ bên. Rồi chia cho tổng số các hạt mưa. Phân số thu được tiến dần tới giá trị II/4. Hãy chạy khúc trình sau.

Uses Crt;

Var x,y:real; {(x,y) toạ độ của hạt mưa}

n,m:real;

Begin

n:=0;m:=0;randomize;

Repeat

x:=random;y:=random; {rơi ngẫu nhiên}

if x*x+y*y<=1 then n:=n+1; {đếm số rơi vào hình quạt}

m:=m+1; {tổng số tất cả các hạt mưa}

writeln(4*n/m:10:6); {chia cho nhau}

Until keypressed;

End.

Giá trị in ra trên màn hình tiến dần đến số . Cho máy chạy càng lâu chúng ta càng thu được giá trị chính xác. Thật ngạc nhiên vì sự đơn giản của thuật giải. Một ví dụ tiếp theo. Cho biết 5x2+8x-37=0. Tìm một giá trị nghiệm của x với độ chính xác 0.01.

Trước hết uớc luợng -8 < x < 8 cho nên chỉ cần tìm x trong khoảng [-8,8].

Var x:real;

Begin

Randomize; {Khởi tạo quá trình tạo số ngẫu nhiên}

Repeat

X:=8*(2*random-1); {chọn ngẫu nhiên một số trong khoảng [-8,+8]}

Until abs(5x*x+8x-37) < 0.01; {dừng nếu |5x2+8x-37|<0.01}

Write(x:8:5);

End.

Ghi lại giá trị của x. Cho chạy trình trên vài lần, chúng ta sẽ thu được tất cả các nghiệm của phương trình 5x2+8x-37=0.

Gải gần đúng các phương trình

1. x3+8x2-7=0

2. cos(x)=x.
URL của bài viết này::http://www.vnschool.net/modules.php?name=News&file=article&sid=497