Форум программистов, компьютерный форум CyberForum.ru

Вычисление площади методом Монте-Карло - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как окрасить в цвет фигуру, траекторию, область http://www.cyberforum.ru/cpp-beginners/thread694650.html
Как мне передать все значения моих точек в одно поле, которому в последствие мы зададим цвет, учитывая способы рисования моей траектории и фигуры?
C++ Разработать битовое поле, описывающее состояния элементов прибора Задание: Разработать битовое поле, описывающее состояния элементов прибора. Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения. Вывести на консоль состояния элементов прибора, соответствующие состоянию битов во введённом числе. Варианты приборов и их элементов:ADSL модем. Элементы: DSL вкл/выкл, PPP вкл/выкл, Link вкл/выкл. ... http://www.cyberforum.ru/cpp-beginners/thread694649.html
Создание двумерного динамического массива C++
Нужно разработать консольное приложение в Visual Studio (использую 2010), которое вводит c клавиатуры двумерный массив целых чисел. Вот сам код. #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) { int N, M; cout <<"Strings="<<endl;
C++ Сделать блок схему
помогите пожалуйста (надо блок схему) Получить действительную матрицу a i,j=1,...n, первая строка которой задается формулой aij=2j+3(j=1...n) вторая строка задается формулой a2j=j-3/2+1/j(j=1,...n), а каждая следующая строка есть сумма двух предыдущих
C++ Матрица из StringGrid: найти количество положительных элементов http://www.cyberforum.ru/cpp-beginners/thread694625.html
Ввести матрицу в StringGrid 6x3 и вывести количество ее положительных элементов.
C++ Найти в тексте заданное слово и добавить новое перед ним У меня есть прога. Суть ее в том что она из текстового файла читает информацию и обрабатывает ее(в строке по одному слову), она когда находит слово "паскаль", перед ним вставляет слово "язык" (на строку выше), но тут есть проблема, она не работает и я не понимаю почему, помогите пожалуйста. Вот код: #include <stdio.h> #include <conio.h> #include <iostream> #include <string.h> #include... подробнее

Показать сообщение отдельно
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
12.11.2012, 23:12  [ТС]
Суть метода начал понимать: Фигура лежит внутри некоторой области известной площади So. Случайным образом кидаем n точек в эту область. Подсчитываем количество m точек попавших внутрь фигуры (внутрь хотя бы одного прямоугольника). Площадь искомой фигуры Sf = So * m / n. Чем больше точек, тем точнее результат. Но как это реализовать программно тем более на C++ ума не приложу????

Добавлено через 4 минуты
Вот что еще удалось найти, но это только сухая теория: "Предположим, что нам нужно вычислить площадь плоской фигуры S.
Это может быть совсем произвольная фигура с криволинейной границей, заданная графически или аналитически, связная или состоящая из нескольких кусков. Пусть это будет фигура, изображенная на рис. 1, и предположим, что она вся расположена внутри единичного квадрата.
Выберем в квадрате N случайных точек. Обозначим через N' число точек, попавших при этом внутрь S. Геометрически очевидно, что площадь S приближенно равна отношению N'/N. Чем больше будет N, тем больше будет точность этой оценки.
Например,выбрано N=40 точек. Из них N'=12 точек оказались внутри фигуры S. Отношение N'/N=12/40=0,30, в то время как истинная площадь S равна 0,35).
Две особенности метода Монте-Карло. Первая особенность метода — простая структура вычислительного алгоритма. Как правило, составляется программа для осуществления одного случайного испытания (в примере надо выбрать случайную точку в квадрате и проверить, принадлежит ли она S). Затем это испытание повторяется N раз, причем каждый опыт не зависит от всех остальных, и результаты всех опытов усредняются.
Поэтому иногда метод Монте-Карло называют методом статистических испытаний.
Вторая особенность метода: ошибка вычислений, как правило пропорциональна , где D – некоторая постоянная, a N – число испытаний. Из этой формулы видно, что для того, чтобы уменьшить ошибку в 10 раз (иначе говоря, чтобы получить в ответе еще один верный десятичный знак), нужно увеличить N (то есть объем работы) в 100 раз.
Ясно, что добиться высокой точности на таком пути невозможно. Поэтому обычно говорят, что метод Монте-Карло особенно эффективен при решении тех задач, в которых результат нужен с небольшой точностью (5-10%)."

Добавлено через 50 минут
Гипербола - http://www.cyberforum.ru/cgi-bin/latex.cgi?x * y = {a}^{2} и прямая - http://www.cyberforum.ru/cgi-bin/latex.cgi?x + y = \frac{5}{2} * a, проходящая в верхней полуплоскости оси Y. Площадь фигуры полученной при пересечении этих кривых находится в I-ой четверти полуплоскости XOY. Подскажите пожалуйста как это реализовать на C++???? Заранее огромное спасибо.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru