Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.83
isaak
107 / 44 / 9
Регистрация: 17.10.2010
Сообщений: 681
#1

Вычисление объема произвольного тела методом Монте-Карло - C++

02.12.2012, 19:23. Просмотров 3816. Ответов 12

Всем доброго время суток. Написать программу для вычисления методом Монте-Карло объема V тела, ограниченного поверхностями:
http://www.cyberforum.ru/cgi-bin/latex.cgi?z = {x}^{2} + {y}^{2}, y = {x}^{2},  y = 1 и http://www.cyberforum.ru/cgi-bin/latex.cgi?z = 0.
Сравнить с точным значением http://www.cyberforum.ru/cgi-bin/latex.cgi?V = \frac{88}{105}.
Насколько я правильно понял http://www.cyberforum.ru/cgi-bin/latex.cgi?z = {x}^{2} + {y}^{2} - это конус, http://www.cyberforum.ru/cgi-bin/latex.cgi?y = {x}^{2} - парабола, http://www.cyberforum.ru/cgi-bin/latex.cgi? y = 1 - прямая, проходящая через точку 1 и параллельная оси OX и http://www.cyberforum.ru/cgi-bin/latex.cgi?z = 0 - это плоскость XOY. Если не правильно, то поправьте. Для вычисления искомой фигуры мысленно все это нужно поместить в куб, вычислить объем куба умножить его на число точек попавших в куб поделить на общее число точек. Как это реализовать на C+++ ума не приложу?????? Чему должны равняться стороны куба ума не приложу?????? Помогите пожалуйста заранее огромное спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 19:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление объема произвольного тела методом Монте-Карло (C++):

Вычисление интеграла методом Монте-Карло - C++
Нужно вычислить интеграл, как показано на первой картинке внизу темы. На второй картинке сам интеграл. Написал программу, но она выдает это...

Вычисление интеграла методом Монте-Карло - C++
Здравствуйте! Задача такая: пользователь в текстовом файле задает координаты точек (любое количество точек), программа считывает...

Вычисление площади методом Монте-Карло - C++
Всем доброго время суток. Написать программу для вычисления методом Монте-Карло площади S тела, ограниченного кривыми x*y = a и x + y =...

Вычисление числа Пи методом Монте-Карло - C++
Решаю задачи по рандомным числам и столкнулся вот с такой"Вычисление числа Пи методом Монте-Карло". Подскажите как это реализовать в С++,...

Вычисление числа Пи методом Монте-Карло - C++
Всем доброго время суток. Написать программу для вычисления значения \pi с помощью метода Монте-Карло. Для этого рассмотреть квадрат с...

Вычисление интеграла геометрическим методом Монте-Карло - C++
Всем доброго времени суток. В универе дали задание: вычислить интеграл \int_{0}^{1}dx\int_{0}^{1-x}(1-x-y)dy геометрическим методом...

12
Nick Alte
Эксперт С++
1644 / 1016 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.12.2012, 18:53 #2
Цитата Сообщение от isaak Посмотреть сообщение
это конус
Точнее, два конуса, составленных острыми концами в точке O, центральной осью которых является ось OZ
Цитата Сообщение от isaak Посмотреть сообщение
парабола
это парабола, "протянутая" вдоль оси Z в плюс и минус бесконечность. Нечто вроде листа бумаги, изогнутого параболой.
Цитата Сообщение от isaak Посмотреть сообщение
прямая, проходящая через точку 1
Плоскость, параллельная XOZ и проходящая через точку y = 1
0
yekka
386 / 150 / 8
Регистрация: 12.05.2011
Сообщений: 450
05.12.2012, 20:44 #3
Цитата Сообщение от Nick Alte Посмотреть сообщение
Точнее, два конуса, составленных острыми концами в точке O, центральной осью которых является ось OZ
вы действительно допускаете, что в уравнении
z = x ^ 2 + y ^ 2
z может быть отрицательным?
0
Nick Alte
Эксперт С++
1644 / 1016 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
05.12.2012, 20:53 #4
Вопрос явно с подвохом...
Нет, не допускаю, оплошал со вторым конусом.
0
isaak
107 / 44 / 9
Регистрация: 17.10.2010
Сообщений: 681
05.12.2012, 22:46  [ТС] #5
Спасибо за ответ, а как здесь записан формулу для вычисления объема куба и чему равна сторона куба??????
0
Nick Alte
Эксперт С++
1644 / 1016 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
06.12.2012, 18:47 #6
И не конус это, а параболоид... Почти как у инженера Гарина.
Надо взять рисовалку 3D-графиков и посмотреть, что это за фигуры и как пересекутся. Найти решения систем уравнений, составленных попарно, решением будут линии в пространстве. Найти габаритные ограничения тех линий.
Например, решением системы http://www.cyberforum.ru/cgi-bin/latex.cgi?y = x^2 и http://www.cyberforum.ru/cgi-bin/latex.cgi?y =1 будут параллельные OZ линии {x = 1, y = 1} и {x = -1, y = 1}. Снизу (если ось Y считаем вертикальной) фигура, ограниченная этими двумя уравнениями, "подпирается" плоскостью XOZ (её уравнение y = 0). Это даёт нам 4 ограничивающие плоскости: x = -1, x = 1, y = 0, y = 1. Добавляем другие уравнения, вводим новые габаритные ограничения.
0
kent_05
4 / 4 / 0
Регистрация: 18.12.2011
Сообщений: 59
09.12.2012, 06:22 #7
А мне требуется вычислить интеграл по данному методу, кто нибудь может мне помочь или скинуть FAQ для вычисления интеграла методом монте-карло, заранее огромное спасибо..
Интеграл: верхняя граница = 3, нижняя = 1, интегральная функция : x^2/(x^2+5*x-1)
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.03.2013, 23:52 #8
isaak, в формулах поверхностей нет ошибки?

Скажем z = x2 - y2 потому как с плюсом я вообще не вижу пространства для тела
0
Миниатюры
Вычисление объема произвольного тела методом Монте-Карло  
-=ЮрА=-
Заблокирован
Автор FAQ
21.03.2013, 00:00 #9
Думаю так должно выглядеть уравнение первой поверхности
1
Миниатюры
Вычисление объема произвольного тела методом Монте-Карло  
isaak
107 / 44 / 9
Регистрация: 17.10.2010
Сообщений: 681
21.03.2013, 10:23  [ТС] #10
-=ЮрА= формула взята из книги, я не знаю может быть там и опечатки есть????? Спасибо за ответ.
0
Shor Kun
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 7
13.02.2016, 19:07 #11
Тема конечно уже умерла, но мне её выкинуло в поиске по методу Монте-Карло, когда искал решение для сына, и у него оказалась точно такая же задача, поэтому приведу всё-таки решение думаю кому-нибудь пригодиться.

Для начала кому непонятен сам метод вот толковое описание метод Монте-Карло. Итак для начала надо определиться с фигурой, вопреки мнению предыдущих авторов формулы задающие поверхность правильные и вот какая получается фигура:
Вычисление объема произвольного тела методом Монте-Карло
Прошу прощения за оформление рисовал вручную, до Matlab-a herb не дошли
Соответственно ограничивающей фигурой будет параллелепипед ABCDA1B1C1D1 в него и будем пихать наши точки, соответственно его объём как нетрудно вычислить равен 4.
Ну вот собственно и сама программа:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main(int argc, char** argv) {
    const double n=10000.0;
    double x,y,z;
    int c=0;
    for(int i=0;i<n;i++)
    {
     x=rand()%2001/1000.00-1;
     y=rand()%1001/1000.00;
     z=rand()%2001/1000.00;
     if ((y>=x*x)&&(z<=x*x+y*y))  c=c+1;
}
cout << c << endl;
cout << c/n*4 << endl;
cout << 88/105.0 << endl;
 
    return 0;
}
0
Shor Kun
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 7
13.02.2016, 19:20 #12
К предыдущем посту добавлю небольшой комментарий, вообще условия должно быть четыре по одному на каждую функцию, но поскольку функции z=0 и y=1 задают плоскости которые являются гранями нашего параллелепипеда, то соответственно точек за их пределами появиться не может таким образом необходимость в этих условиях отпадает.
0
isaak
107 / 44 / 9
Регистрация: 17.10.2010
Сообщений: 681
13.02.2016, 20:41  [ТС] #13
Shor Kun тема конечно уже стара, но вам все равно спасибо за бескорыстный ответ.
0
13.02.2016, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2016, 20:41
Привет! Вот еще темы с ответами:

Вычислить методом Монте-Карло - C++
Помогите Вычислить методом Монте-Карло: а)площадь фигуры, ограниченной половиной синусоиды; б)площадь фигуры, ограниченной квадратной...

Интегрирование методом Монте-Карло - C++
доброго времени суток форумчане, была поставлена задача написать программу которая будет вычислять интеграл методом Монте-Карло вот что я...

Странный интеграл методом Монте-Карло - C++
Вычислить интеграл методом монте-карло. Лекцию проболел, а из найденных источников нашел только как с обычными интегралами работать, не...

Таблица умножения методом Монте-Карло - C++
Пожалуйста помогите, нужна программа для вывода таблицы умножения методом Монте-Карло


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru