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

Найти объём сферы методом Монте-Карло и определить точность - C++

Восстановить пароль Регистрация
 
Владимир186
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 2
20.02.2014, 12:28     Найти объём сферы методом Монте-Карло и определить точность #1
Помогите решить 2 задачи в программе C

1) заданы координаты вершин треугольников. Определить, является ли этот треугольник равнобедренным, равносторонним, прямоугольным.

2) Задан радиус сферы и количество итераций. Найти объём сферы методом Монте-Карло и определить точность
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wingblack
251 / 226 / 33
Регистрация: 09.04.2013
Сообщений: 848
20.02.2014, 14:43     Найти объём сферы методом Монте-Карло и определить точность #2
1)
найти длинны сторон по координатам вершин, определять тип треугольника по свойствам: равнобедренный имеет две равные стороны, равносторонний - все стороны равны, прямоугольный - либо через формулу о квадратах катетов и гипотенузы либо через формулу скалярного произведения в декартовых координатах(если угол между двумя векторами по точкам равен 90 градусов, то следовательно сумма от произведения соответствующих координат векторов должна равняться нулю)
2)
Напомню суть метода Монте-Карло - тыкаем произвольно в точки ограниченного пространства, считаем сколько раз попали внутрь искомой фигуры, и сколько попыток всего. По результатам у нас выйдет что объем искомой фигуры относится к объему всей области также как число удачных попыток к общему число
http://www.cyberforum.ru/cgi-bin/latex.cgi?Vsphere = \frac{hits}{total}Vcube
Итак, ограничиваем область "тыканья" кубом со шириной 2R (чтобы вписалась сфера)и центром в начале координат
Центр сферы тоже поставим в начало координат для простоты вычислений
Напомню параметрическое уравнение сферы c центром в начале координат
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}^{2}+{y}^{2}+{z}^{2} = {R}^{2}
Соответственно попадание внутрь сферы определяется по формуле
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}^{2}+{y}^{2}+{z}^{2} < {R}^{2}
Объем сферы:
http://www.cyberforum.ru/cgi-bin/latex.cgi?V = \frac{4}{3}\pi {R}^{3}
За погрешность возьмем (по модулю) разницу чисел вычисленных по формуле и по методу Монте-Карло

Словесное описание алгоритма:

Код
удачные попытки = 0
Для i от 1 до количества попыток
 x = произвольное число он -R до R
 y = произвольное число он -R до R
 z = произвольное число он -R до R
 Eсли  x*x+y*y+z*z <= R*R то
  удачные попытки += 1
объем = (удачные попытки / количество попыток) * (2R*2R*2R)
погрешность = abs(объем - (4/3)*Pi*R*R*R )
Вроде так.

P.S. Если все же рассчитывается на код на С - пишите в соответствующий раздел
Владимир186
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 2
20.02.2014, 14:45  [ТС]     Найти объём сферы методом Монте-Карло и определить точность #3
Спасибо! Но я далёк от этих разделов и ни чего не понимаю в них. Мне нужно решение этих задач в программе С
wingblack
251 / 226 / 33
Регистрация: 09.04.2013
Сообщений: 848
20.02.2014, 14:53     Найти объём сферы методом Монте-Карло и определить точность #4
Думаю, что в разделе С++ для начинающих вам помогут быстрее.
BumerangSP
21.02.2014, 04:35     Найти объём сферы методом Монте-Карло и определить точность
  #5
 Комментарий модератора 
Перенесено из Алгоритмы
Yandex
Объявления
21.02.2014, 04:35     Найти объём сферы методом Монте-Карло и определить точность
Ответ Создать тему
Опции темы

Текущее время: 10:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru