МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
Среда, 14.04.2021, 16:07
ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS

Меню сайта

Категории раздела
Вероятность [1]

Наш опрос
Какой язык программирования Вы изучаете
Всего ответов: 991

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа


Главная » Статьи » Методы решения » Вероятность

Метод Монте Карло

Метод Монте Карло

Общие сведения

Рассмотрим один из примеров применения метода. При программировании большого и сложного алгоритма управления выводом космического объекта на орбиту Марса учитываются тысячи различных параметров. Например, необходимо учитывать изменение массы объекта в связи с расходованием топлива, изменение силы тяготения, как функции расстояния до космических тел, множество других важных параметров. Каждый из параметров имеет определенный диапазон изменения своей величины. Как будет вести себя алгоритм при различных сочетаниях значений параметров? Перебор всех сочетаний практически невозможен, так как требует очень много времени. Один из вариантов решения задачи проверки алгоритма на работоспособность заключается в «набрасывании» в программу значений параметров с помощью датчиков случайных чисел. Такой способ проверки основан на методе Монте-Карло.


Определение площадей фигур методом Монте-Карло

Идея метода заключается в следующем. Фигуру, площадь которой требуется определить, помещают в фигуру, площадь которой заранее известна, например, в квадрат. После этого в квадрат набрасывают точки со случайными координатами. При этом ведут счет всех точек (k1) и счет точек, попавших в исследуемую фигуру (k2). Если обозначить площадь квадрата s1, а площадь фигуры s2, то при большом числе всех точек справедливо равенство s2/s1=k2/k1, откуда s2=s1*k2/k1.

В следующих задачах точки со случайными координатами набрасываются в квадрат размером 200 х 200. Всего точек 40000.

Но уже при набрасывании 1000 точек они достаточно плотно и равномерно покрывают всю площадь квадрата. На этом и основан метод тестирования программ и определения площадей фигур.

Ниже показана программа  10.2 определения площади круга. (скачать программу  на basic)

RЕМ Метод Монте-Карло

CLS

a$= "Метод Монте-Карло, определение площади круга": РRINT  а$

INРUТ "Введите радиус круга г<100"; r

INРUТ "Введите число точек k1<1"; k1

RANDOMIZE TIMER

SCREEN 12

PRINT а$

LINE (200, 200)-(400, 400), 14, B   ‘квадрат

CIRCLE (300, 300), г, 14 ‘круг

PRINT "число точек = ";

FOR i = 1 TO k1

  x = INT(RND*200+200): y = INT(RND*200+200)

 PSET (x, y), 14 ‘набрасывание случайных точек

IF SQR((x-300)^2+(y—300)^2)< = r THEN

 k2=k2+1: PSET(x,y) ‘точки, попадающие в круг

END IF

IF i MOD 1000 = 0 THEN PRINT i;

NEXT: PRINT

PRINT "Всего точек: k1 = "; k1

PRINT "Число точек внутри круга: k2 = "; k2

PRINT "отношение k1/k2 = "; k2/k1

S1 = 200^2: PRINT "Площадь квадрата: S1 ="; S1

S2 = S1*k2/k1: PRINT "Площадь круга: S2 = S1*k2/k1 = "; S2

PRINT "Величина рi = "; S2/(r^2)

PRINT "Площадь круга, вычисленная по формуле рi*г^2 = " ; 3.14*r^2

END

При запуске программ на исполнение следует обратить внимание на то, что точность определения площади зависит от количества набрасываемых точек. Чем больше точек, тем выше точность.

Важным моментом записи программ определения площади фигур методом Монте-Карло является запись выражений, ограничивающих площадь исследуемой фигуры. Система ограничений может быть простой, как в случае с кругом или достаточно сложной при вычислении площадей многоугольников, криволинейных фигур.

При вычислении методом Монте-Карло площади треугольника потребуется, например, следующая система ограничений (показана с частью хз, у программы). Она требует определенного положения вершин треугольника (рис. 2).

При желании ввести произвольное положение вершин может понадобиться изменение системы ограничений.

 FOR i = 1 TO n ‘ НАБРАСЫВАНИЕ ТОЧЕК В КВАДРАТ

     x = INT(RND*200 +200): y = INT(RND*200 +200) ‘ КООРД. ТОЧЕК

     z1 = y>y1+(x-x1)*(y2-y1)/(x2-x1)

     z2 = y>y2+(x-x2)*(y3-y2)/(x3-x2)

     z3 = y<y3+(x-x3)*(y1-y3)/(x1-x3)

     PSET (x,y), 12

     IF z1 AND z2 AND z3 THEN

     k=k+1: PSET (x,y)     ‘ТОЧКИ В ТРЕУГОЛЬНИКЕ БЕЛОГО ЦВЕТА

     END IF

NEXT


Есипов А. С. /Информатика. Учебник по базовому курсу// СПб: Наука и Техника, 2001г. – 384с.

Бейсик - диалоговый учебный язык программирования для персональных компьютеров. Здесь представлена версия QBasic 4.5


Примеры в электронных таблицах http://www.hcxl.ru/bookQMM04.html#g9t02


Категория: Вероятность | Добавил: i_elf (18.10.2012)
Просмотров: 13528 | Комментарии: 3 | Рейтинг: 0.0/0
Всего комментариев: 2
0
2 MichaelThumn   [Материал]
http://mysite.ru - http://mysite.ru

0
1 PatrickSlers   [Материал]
http://mysite.ru - http://mysite.ru

Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Творческий учитель
  • Сайт ООАКМР
  • Школьный сайт
  • Информатика учебник
  • МОИ

  • Copyright MyCorp © 2021 Сделать бесплатный сайт с uCoz