Существует много способов вычисления площадей фигур. Точное вычисление по формулам для простейших фигур, приближенное вычисление площадей ограниченных кривыми, вид которых задан функцией и т.д. Метод приближенного вычисления площадей фигур с применением датчика случайных чисел называют методом Монте-Карло.
Метод Монте-Карло это метод статических испытаний. Свое экзотическое название он получил от города Монте-Карло в княжестве Монако. Город наиболее известен благодаря своему казино и пользуется популярностью у представителей высшего общества. Дело в том, что метод требует применения случайных чисел, а одним из простейших приборов, генерирующих случайные числа, может служить рулетка.
Вложение | Размер |
---|---|
rabota_opredelenie_ploshchadi_figury_s_pomoshchyu_monte-karlo.doc | 806.5 КБ |
Исследовательская работа:
Определение площади фигур с помощью метода «Монте-Карло
Выполнил:
ученик 8А класса
МБОУ СОШ № 11
г. Архангельска
Суворов Андрей Ильич
Научный руководитель:
Учитель информатики и ИКТ МБОУ СОШ № 11
г. Архангельска
Рытова Ирина Александровна
г. Архангельск
2014 год
Оглавление
Введение
Основная часть
2.1. Суть метода Монте-Карло для нахождения площади фигур
2.2. Определение числа π методом Монте-Карло
Заключение
Литература
Приложения
Приложение 1
Число π является одним из интереснейших чисел, встречающихся при изучении математики. Оно встречается в разных школьных дисциплинах. С числом π связано много интересных фактов, поэтому оно вызывает интерес к изучению. Число 3,14 лишь одно из приближённых значений чисел π.
Куда бы мы ни обратили свой взор, мы видим проворное и трудолюбивое число π: оно заключено и в самом простом колесике, и в самой сложной автоматической машине. Именно поэтому я решил познакомиться с проблемой поближе.
Существует много способов вычисления площадей фигур. Точное вычисление по формулам для простейших фигур, приближенное вычисление площадей ограниченных кривыми, вид которых задан функцией и т.д. Метод приближенного вычисления площадей фигур с применением датчика случайных чисел называют методом Монте-Карло.
Метод Монте-Карло это метод статических испытаний. Свое экзотическое название он получил от города Монте-Карло в княжестве Монако. Город наиболее известен благодаря своему казино и пользуется популярностью у представителей высшего общества. Дело в том, что метод требует применения случайных чисел, а одним из простейших приборов, генерирующих случайные числа, может служить рулетка.
Цель работы: создание программ по вычислению числа π, используя метод Метод-Карло.
Достижение поставленной цели предполагает решение следующих задач:
- изучить литературу с целью получения информации о методе Монте-Карло;
- установление связи метода и города в княжестве Монако;
- разработка программ для проведения практического эксперимента по вычислению числа π с применением данного метода.
Объектом исследовательской работы являются программы по вычислению числа π.
Предметом рассмотрения явилось значение числа π в результате работы созданных программ.
Методы исследования. В ходе исследования использовались различные методы и приемы анализа учебной и научно-популярной литературы, ресурсов сети Интернет, практическая работа, эксперимент.
2.1. Суть метода Монте-Карло для нахождения площади фигур
Метод Монте-Карло можно использовать для приближенного вычисления площади различных фигур.
Проведем опыт. Пусть у нас есть фигура на плоскости, площадь которой (S1) нам необходимо найти. Ограничим ее прямоугольником ABCD с площадью S (см. рис. 1).
Теперь начнем опыт – будем бросать на бумагу зерна случайным образом. Когда нам покажется, что зерна почти полностью покрыли бумагу, посчитаем, сколько всего зерен на прямоугольнике (пусть их число NABCD) и сколько из них на фигуре (NF). Ясно, что число зерен, попавших внутрь фигуры, пропорционально ее площади: больше площадь – больше зерен, меньше площадь – меньше зерен. Поэтому, поделив количество зерен, попавших внутрь фигуры, на количество всех зерен в прямоугольнике, мы сможем найти, какую часть площади прямоугольника занимает фигура:
, отсюда
Создадим компьютерную модель для нашего опыта (Приложение 1).
Описание эксперимента. Предположим, нам надо найти площадь фигуры ограниченной сверху кривой y = F(X), а снизу – осью абсцисс. Пусть y = cos(x) (см. рис. 2). Ограничим нашу фигуру прямоугольником ABCD.
В полученной модели задаем количество точек, которые попадут во внутреннюю область нашей фигуры (рис. 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. Точность вычисления числа таким способом невелика: только в двух случаях из пяти найденное значение константы содержит верную цифру в разряде сотых, в остальных случаях достигнута точность только в разряде единиц.
Метод Монте-Карло позволяет более точно вычислять площадь фигур, только в тех случаях, когда будет задействовано большое количество точек.
Точное значение числа в современном мире представляет собой не только собственную научную ценность, но и используется для очень точных вычислений (например, строительства гигантских мостов), а также оценки быстродействия и мощности современных компьютеров.
Проведенный эксперимент показывает, что мною была достигнута цель, поставленная в начале работы.
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/
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
Стр.
Как Дед Мороз сделал себе помощников
Зимовье зверей
Груз обид
Что общего у травы и собаки?
Разлука