Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 20:36   #1
goblin_l
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 3
Вопрос Вычисление числа Пи методом монте-карло. В чем ошибка?

Требуется создать программку для вычисления числа Пи методом монте-карло.
Суть заключается в следующем: генерируются 2 случайных числа А и В, равномерно распределенных в интервале (-1,1). Если выполняется условие А^2+B^2 <= 1, то точка с координатами (А,В) попадает внутрь круга радиусом 1 с центром в начале координат, если нет, то не попадает. Если при N испытаниях получится n попаданий в круг, то приближенно число Пи можно вычислить по формуле Pi = 4*n/N.
Была сделана вот такая программка:
DIM n, m AS INTEGER, s, pi AS DOUBLE

Private SUB Command1_Click()
s = Text1.Text
pi = 0
DO UNTIL m = s
x = RND * 2 - 1
y = RND * 2 - 1
IF (x * x + y * y) <= 1 THEN
Picture1.PSET (x, y), vbRed
n = n + 1
ELSE
Picture1.PSET (x, y), vbBlue
m = m + 1
END IF
LOOP
pi = n/m
Text2.Text = pi

END SUB

Из формулу была убрана 4, с ней число Пи равно 15, ...
По идее если сделать N = 10000 (s = 10000), то число Пи будет равно 3,14...
В данном случае число Пи равно 3,664. В чем ошибка?
goblin_l вне форума Ответить с цитированием
Старый 12.04.2011, 20:40   #2
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
По умолчанию

Мне кажется этот метод страным

Последний раз редактировалось RomiKon; 12.04.2011 в 20:43.
RomiKon вне форума Ответить с цитированием
Старый 13.04.2011, 00:47   #3
goblin_l
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 3
По умолчанию

Об этом методе написано
http://ru.wikipedia.org/wiki/%CC%EE%...EC%E5%F2%EE%E4
goblin_l вне форума Ответить с цитированием
Старый 13.04.2011, 08:50   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

выведи куда-нибудь (покажи себе) полученные в результате значения m и n до кучи добавь ним s. вот перед этим
Цитата:
pi = n/m
Сравни их. Остальное надеюсь поймешь сам.
Хотя нет . Вот
при подсчете общего числа испытаний ( это m) учитываются только НЕУСПЕШНЫЕ (m изменяется только в ветке ELSE).
здесь
Цитата:
DO UNTIL m = s
(m ОБЩЕЕ числр испытаний.)
а здесь
Цитата:
ELSE
Picture1.PSET (x, y), vbBlue
m = m + 1
END IF
получается что это число НЕУСПЕШНЫХ.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.04.2011 в 08:58.
evg_m вне форума Ответить с цитированием
Старый 13.04.2011, 19:48   #5
goblin_l
Новичок
Джуниор
 
Регистрация: 12.04.2011
Сообщений: 3
По умолчанию

Спасибо за совет, буду проверять.
goblin_l вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск площади фигуры методом Монте - Карло ChertYaGa Паскаль, Turbo Pascal, PascalABC.NET 12 10.02.2017 20:10
Си/Си++ Нахождение площади методом Монте-Карло Маришка_Курносова Помощь студентам 3 11.11.2012 16:17
методом монте-карло Uskoff Microsoft Office Excel 1 15.01.2010 14:27
Найти интеграл методом Монте-карло ___LORD___ Общие вопросы C/C++ 2 13.05.2009 21:24
Помогите с методом Монте-Карло!!! Byanka Помощь студентам 2 09.02.2009 20:18