Введение
Число π является одним из интереснейших чисел, встречающихся при изучении математики. Оно встречается в разных школьных дисциплинах. С числом π связано много интересных фактов, поэтому оно вызывает интерес к изучению. Число 3,14 лишь одно из приближённых значений чисел π.
Куда бы мы ни обратили свой взор, мы видим проворное и трудолюбивое число π: оно заключено и в самом простом колесике, и в самой сложной автоматической машине. Именно поэтому я решил познакомиться с проблемой поближе.
Существует много способов вычисления площадей фигур. Точное вычисление по формулам для простейших фигур, приближенное вычисление площадей ограниченных кривыми, вид которых задан функцией и т.д. Метод приближенного вычисления площадей фигур с применением датчика случайных чисел называют методом Монте-Карло.
Метод Монте-Карло это метод статических испытаний. Свое экзотическое название он получил от города Монте-Карло в княжестве Монако. Город наиболее известен благодаря своему казино и пользуется популярностью у представителей высшего общества. Дело в том, что метод требует применения случайных чисел, а одним из простейших приборов, генерирующих случайные числа, может служить рулетка.
Цель работы: создание программ по вычислению числа π, используя метод Метод-Карло.
Достижение поставленной цели предполагает решение следующих задач:
- изучить литературу с целью получения информации о методе Монте-Карло;
- установление связи метода и города в княжестве Монако;
- разработка программ для проведения практического эксперимента по вычислению числа π с применением данного метода.
Объектом исследовательской работы являются программы по вычислению числа π.
Предметом рассмотрения явилось значение числа π в результате работы созданных программ.
Методы исследования. В ходе исследования использовались различные методы и приемы анализа учебной и научно-популярной литературы, ресурсов сети Интернет, практическая работа, эксперимент.
Основная часть
2.1. Суть метода Монте-Карло для нахождения площади фигур
Метод Монте-Карло можно использовать для приближенного вычисления площади различных фигур.
П роведем опыт. Пусть у нас есть фигура на плоскости, площадь которой (S1) нам необходимо найти. Ограничим ее прямоугольником ABCD с площадью S (см. рис. 1).
Теперь начнем опыт – будем бросать на бумагу зерна случайным образом. Когда нам покажется, что зерна почти полностью покрыли бумагу, посчитаем, сколько всего зерен на прямоугольнике (пусть их число NABCD) и сколько из них на фигуре (NF). Ясно, что число зерен, попавших внутрь фигуры, пропорционально ее площади: больше площадь – больше зерен, меньше площадь – меньше зерен. Поэтому, поделив количество зерен, попавших внутрь фигуры, на количество всех зерен в прямоугольнике, мы сможем найти, какую часть площади прямоугольника занимает фигура:
, отсюда
Создадим компьютерную модель для нашего опыта (Приложение 1).
Описание эксперимента. Предположим, нам надо найти площадь фигуры ограниченной сверху кривой y = F(X), а снизу – осью абсцисс. Пусть y = cos(x) (см. рис. 2). Ограничим нашу фигуру прямоугольником ABCD.
В полученной модели задаем количество точек, которые попадут во внутреннюю область нашей фигуры (рис. 3), нажимая на кнопку Посчитать, получаем площадь фигуры.
Рис. 3
Проведя несколько опытов в данной модели, полученные результаты зафиксируем в таблицу:
Количество точек |
Площадь фигуры |
100 |
2,0734 |
100 |
2,0420 |
100 |
2,0185 |
1000 |
2,0263 |
1000 |
2,0452 |
1000 |
1,9604 |
10000 |
2,0053 |
10000 |
1,9833 |
10000 |
1,9820 |
Вывод: из таблицы хорошо видно, что за точность вычислений приходится платить временем работы программы. Разные результаты за пределами точности при одном и том же количестве случайных точек зависит от того, что точки все таки случайные. Чем больше точек будет задействовано в компьютерной модели, тем точнее можно вычислить площадь нашей фигуры.
2.2. Определение числа π методом Монте-Карло
Метод Монте-Карло также можно использовать для нахождения числа π.
Для опыта надо приготовить кусок картона, нарисовать на нем квадрат и вписать в квадрат круг. Если такой чертеж некоторое время поддержать под дождем, то на его поверхности останутся следы капель.
Подсчитаем число следов внутри квадрата и внутри круга. Очевидно, что их отношение будет приблизительно равно отношение площадей этих фигур, так как попадание капель в различные места чертежа равновероятно. Дождь можно заменить таблицей случайных чисел, которая составляется с помощью компьютера в программе Visual Basic (Приложение 2).
Для нахождения числа π, прежде всего, вспомним формулу нахождения площади круга:
А нахождение площади круга методом Монте-Карло выполняем аналогично способу, который был описан ранее и получаем:
Из всего вышеизложенного получаем формулу для вычисления числа , которую использовали для создания компьютерной модели:
Анализ полученных результатов:
r |
N |
S |
1 |
100 |
3,36 |
500 |
3,128 |
|
1000 |
3,096 |
|
5000 |
3,1496 |
|
10000 |
3,1448 |
Вывод: точность вычисления числа таким способом невелика: только в двух случаях из пяти найденное значение константы содержит верную цифру в разряде сотых, в остальных случаях достигнута точность только в разряде единиц. Но при увеличении количества генерируемых точек будет увеличиваться точность вычисления числа
Заключение
Число появляется в формулах, используемых во многих сферах. Физика, электротехника, электроника, теория вероятностей, строительство и навигация – это лишь некоторые из них. И кажется, что подобно тому как нет конца знакам числа , так нет конца и возможностям практического применения этого полезного, неуловимого числа .
В ходе проведения практического исследования я пришел к следующим выводам: полученное на практике число приближается к 3,14. Точность вычисления числа таким способом невелика: только в двух случаях из пяти найденное значение константы содержит верную цифру в разряде сотых, в остальных случаях достигнута точность только в разряде единиц.
Метод Монте-Карло позволяет более точно вычислять площадь фигур, только в тех случаях, когда будет задействовано большое количество точек.
Точное значение числа в современном мире представляет собой не только собственную научную ценность, но и используется для очень точных вычислений (например, строительства гигантских мостов), а также оценки быстродействия и мощности современных компьютеров.
Проведенный эксперимент показывает, что мною была достигнута цель, поставленная в начале работы.
Литература
Жуков А.В. Вездесущее число «Пи». – М.: Едиториал УРСС, 2004.
Угринович Н.Д. Исследование информационных моделей. – М.: Бином. Лаборатория знаний, 2006.
Энциклопедия для детей. Т11. Математика – М.: Аванта+, 1998.
Интернет-ресурсы:
http://habrahabr.ru/post/128454/
http://festival.1september.ru/articles/104286/
http://ru.wikipedia.org/wiki/Монте-Карло_(метод)
http://schoolkam.narod.ru/info/monte.htm
http://festival.1september.ru/articles/619885/
Приложения
Приложение 1
const A = -Pi/2.0; B = pi/2.0; n = 1000;
var
Form1: TForm1;
N_total:longint;
implementation
{$R *.dfm}
Function FUNC(x:real):real;
begin
Func:=Cos(x);
end;
Procedure Graphic( var right, down: integer;
var X_min, X_max, Y_min, Y_max, Kx, Ky: real);
type arr=array[1..n] of real;
var
X, Y: arr; dx: real;
i: integer;
begin
dx:=(B-A)/(n-1);
for i:=1 to n do begin X[i]:=A+dx*(i-1);
Y[i]:=FUNC(X[i]);
end;
{Нахождение максимального и минимального значений функции и аргумента}
X_max:=B; X_min:=A;
Y_max:=Y[1]; Y_min:=Y[1];
for i:=2 to n do begin
if Y_max < Y[i] then Y_max:=Y[i];
if Y_min > Y[i] then Y_min:=Y[i];
end;
{Нахождениекоэффициентовсжатия}
Kx:=right/(X_max-X_min);
Ky:=down/(Y_max-Y_min);
{Устранениеискаженияграфика}
if Kx < Ky then begin
Ky:=Kx;
down:=round((Y_max-Y_min)*Ky);
end
else begin
Kx:=Ky;
right:=round((X_max-X_min)*Kx);
end; end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var N_total, N_fig, i:longint;
S_total,S_fig,X,Y:real;
Xg, Yg: integer;
X_min, X_max, Y_min, Y_max, Kx, Ky : real;
Right, Down: integer;
S:string;
begin
randomize;
With Image1, Canvas do
begin
FillRect(ClientRect);
Right := Width;
Down := Height;
Graphic(Right, Down, X_min, X_max, Y_min, Y_max, Kx, Ky);
Width := Right ;
Height := Down ;
{Рисованиеосей}
Xg:=round(-X_min*Kx);
Yg:=Down-round(-Y_min*Ky);
{Ось Y}
MoveTo(Xg,Down);
LineTo(Xg, 0);
moveto(Xg, 0);
lineto(Xg+4, 10);
moveto(Xg, 0);
lineto(Xg-4, 10);
{ОсьХ}
MoveTo(0, Yg-1);
lineTo( Right, Yg-1);
moveto(Right, Yg);
lineto(Right-10, Yg+5);
moveto(Right, Yg);
lineto(Right-10, Yg-5);
N_fig:=0;
N_total:=StrToInt(Edit1.Text);
{Розыгрышкоординатточек}
for i:=1 to N_total do
begin
X:=random*(B-A)+A;
Y:=random*(Y_max-Y_min)+Y_min;
if Y <= FUNC(X)then
begin
Xg:=round((X-X_min)*Kx);
Yg:=Down-round((Y-Y_min)*Ky);
Pixels[Xg, Yg]:=clBlack;
Application.ProcessMessages;
N_fig:=N_fig+1;
end; end; end;
S_fig:=(Y_max-Y_min)*(B-A)*N_fig/N_total;
Str(S_fig:10:4,S);
Panel1.Caption:='Площадьфигуры = '+S;
end;
end.
Dim Graph1 As Graphics
Dim Pen1 As New Pen(Color.Black, 1)
Dim I, N, M, X, Y, R As Long
Private Sub Button1_Click(…)
Graph1 = Me.PictureBox1.CreateGraphics()
Graph1.Clear(Color.White)
'Ввод данных
N = Val(TextBox1.Text)
R = Val(TextBox2.Text)
'Сдвиг по осям X и Y
Graph1.TranslateTransform(100, 100)
'Рисование круга и квадрата
Graph1.DrawEllipse(Pen2, -R, -R, 2 * R, 2 * R)
Graph1.DrawRectangle(Pen2, -R, -R, 2 * R, 2 * R)
For I = 1 To N
'Генерация случайных координат точек и их рисование в графическом поле
X = Int(Rnd() * 2 * R) - R
Y = Int(Rnd() * 2 * R) - R
Graph1.DrawEllipse(Pen1, X, Y, 1, 1)
'Подсчет точек, попавших внутрь круга
If X ^ 2 + Y ^ 2 <= R ^ 2 Then M = M + 1
Next I
'Вывод площади круга и числа Pi
Label1.Text = 4 * (M / N) * (R ^ 2)
Label2.Text = 4 * (M / N)
End Sub