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.
Theo nguồn THNT
|