0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
1

Найти объём усечённого конуса методом Монте-Карло (объяснить нюансы работы кода)

09.06.2018, 11:13. Показов 1844. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В примере ниже вычисляется методом монте-карло объем усеченного конуса, накрытого полусферой. Объем такого тела вычисляется по формуле:
https://www.cyberforum.ru/cgi-bin/latex.cgi?$$V=\frac{1}{3}\pi R^{2}H+\frac{2}{3}\pi R^{3}$$
где R-радиус, а H-высота усеченного конуса.
Кто может объяснить ,почему там расписаны x,y,z. не могу разобраться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include
#include
using namespace std;
int main()
{
    //Число pi:
    const double pi = 3.1415;
    //Рабочие переменные программы:
    double R, H, V, V0, x, y, z;
    //Число точек N (по каждой из координат)
    //и число внутренних точек n:
    int N = 1500, n = 0;
    //Ввод параметров R и H:
    cout << "Enter R = ";
    cin >> R;
    cout << "Enter H = ";
    cin >> H;
    //Объем параллелепипеда:
    V0 = 4 * R * R * (H + R);
    //Перебор всех точек:
    for (int i = 0; i <= N; i++) {
        x = 2 * i * R / N - R;
        for (int j = 0; j <= N; j++) {
            y = 2 * j * R / N - R;
            for (int k = 0; k <= N; k++) {
                z = k * (H + R) / N;
                //Подсчет внутренних точек:
                if (((sqrt(x * x + y * y) / R <= z / H) && (z <= H)) || ((x * x + y * y + (z - H) * (z - H) <= R * R) && (z > H)))
                    n++;
            }
        }
    }
    //Объем тела:
    V = V0 * n / pow(N + 1, 3);
    //Вывод вычисленного и точного значений:
    cout << "V = " << V << " : " << pi * R * R * H / 3 + 2 * pi * pow(R, 3) / 3 << endl;
    return 0;
}
Добавлено через 1 минуту
поправка:почему именно так расписаны x,y,z?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2018, 11:13
Ответы с готовыми решениями:

Найти объём сферы методом Монте-Карло и определить точность
Помогите решить 2 задачи в программе C 1) заданы координаты вершин треугольников. Определить,...

Найти объем и площадь всей поверхности усеченного конуса.
Помогите сделать пожалуста... 1. Ввести множество, запись или строку с помощью клавиатуры. 2....

Записи. Найти объем и площадь всей поверхности такого усеченного конуса
Помогите сделать пожалуйста... 1. Ввести множество, запись или строку с помощью клавиатуры. 2....

Загрузочный бункер имеет вид усеченного конуса, поставленного на цилиндр. Найти объём бункера.
Загрузочный бункер имеет вид усеченного конуса, поставленного на цилиндр (рис. 6). Задавая диаметр...

13
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
09.06.2018, 11:44 2
Как "так"?
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,103
09.06.2018, 12:07 3
Разве это Монте-Карло? Тут же полный перебор точек
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
09.06.2018, 12:27  [ТС] 4
Да,это Монте-Карго.Сейчас читаю книгу по программированию и попался данный пример.Не могу разобраться почему x,y,z расписываются именно так.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
09.06.2018, 12:42 5
Цитата Сообщение от анастасия1501 Посмотреть сообщение
почему именно так расписаны x,y,z?
Потому что, как написал COKPOWEHEU, у Вас по ходу не метод Монте-Карло, а неизвестно что, в чем особо копаться и не хочется. Не вижу ни одного рандома, необходимых для метода, не говоря уже о первых двух строчках программы. Изучите теорию метода в начале.
2010_7_01_12_56_38_monte-carlo.pdf
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
09.06.2018, 12:46 6
Цитата Сообщение от анастасия1501 Посмотреть сообщение
Да,это Монте-Карго.Сейчас читаю книгу по программированию и попался данный пример
Что за книга, что за пример, на какой странице? Из Вас все вытягивать нужно?
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
09.06.2018, 13:16  [ТС] 7
Васильев А.Н. на что 84.
Да меня просто интересует почему именно так расписаны координаты ,А не сам метод.

Добавлено через 15 минут
nmcf, вот так
C++
1
2
3
4
5
6
for (int i = 0; i <= N; i++) {
    x = 2 * i * R / N - R;
    for (int j = 0; j <= N; j++) {
        y = 2 * j * R / N - R;
        for (int k = 0; k <= N; k++) {
            z = k * (H + R) / N;
почему они записаны так?
0
473 / 425 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
09.06.2018, 13:20 8
анастасия1501, потому что автор книги так решил, устроит ответ?)
Книга как называется-то?
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
09.06.2018, 13:26  [ТС] 9
SuperKir, Васильев А.Н. самоучитель С++
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,103
09.06.2018, 13:33 10
x проходит линию от -R до +R за N шагов (что мешало сразу в цикле использовать дробные числа неизвестно)
y аналогично. Вместе они проходят по всем точкам квадрата (-R, -R) ... (+R, +R)
z проходит по точкам от 0 до (H+R), все вместе они описывают параллилепипед с основанием 2R x 2R и высотой (R+H).
Вероятно, считается, что фигура вписана в него, но по описанию я это определить не могу. Если я угадал, то объем фигуры считается как отношение числа точек внутри к полному числу точек, умноженное на объем параллилепипеда.
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
09.06.2018, 13:40  [ТС] 11
COKPOWEHEU, да,вы все верно сказали.спасибо.
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
09.06.2018, 13:44 12
анастасия1501, Вам же в книге все ясно объяснено.
"На практике вместо генерирования случайных точек можно воспользоваться сеткой из равномерного распределения точек. ......". И так далее по тексту. Просто поймите принцип метода и все встанет на свои места.
0
1369 / 513 / 71
Регистрация: 21.07.2015
Сообщений: 1,302
09.06.2018, 13:47 13
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
то объем фигуры считается как отношение числа точек внутри к полному числу точек, умноженное на объем
Скорее n/pow(N+1,3) вычисляет % заполнения параллелепипеда.
0
sourcerer
09.06.2018, 13:56     Найти объём усечённого конуса методом Монте-Карло (объяснить нюансы работы кода)
  #14
 Комментарий модератора 
анастасия1501, пожалуйста, прочитайте правила форума.
Особое внимание обратите на следующие пункты:
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2018, 13:56

Записи. Найти объем и площадь всей поверхности усеченного конуса, заданного в виде записи
Заданный запись, имеет три поля : первое - площадь нижнего основания усеченного конуса , второе -...

Объем усеченного конуса через тройной интеграл
Требуется определить объем усеченного конуса через тройной интеграл в цилиндрических координатах. ...

Считывание структуры из файла: объяснить нюансы работы кода
есть функция, которая должна из файла считывать значения полей элементов массива структур и...

Вычислить объем усеченного конуса, в котором меньшее основание не параллельно большему
См. заголовок.

Нюансы работы с указателями: объяснить, что происходит в заданном фрагменте кода
Всем доброго времени суток! Я не до конца разобрался в данной теме. К примеру, есть такой кусок...

Найти приближённое значение Пи методом Монте-Карло
При помощи метода Монте-Карло определите приближённое значение числа π. Метод Монте-Карло — общее...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru