2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Определения площади прямоугольника методом Монте Карло
Сообщение07.10.2021, 20:25 
Здравствуйте, каким образом можно найти площадь прямоугольника используя метод Монте Карло, через площадь круга. Я написал небольшую программу на python, но результатам площади прямоугольника не верный.
Используется синтаксис Python
import numpy as np
N=1000000 #Кол-во разыгрываемых точек
R1=3 #Радиус окружности
ugol=np.random.uniform(0, 2*np.pi, N) #Определение N полярных углов по равномерному распределению от 0 до 2pi
r=np.random.uniform(0, R1, N) #Определение N полярных радиус по равномерному распределению от 0 до R1
x=r*np.cos(ugol)#Определение N декартовых координат x
y=r*np.sin(ugol)#Определение N декартовых координат y
n1=0
for ii in range(N):
    if x[ii]>=-0.5 and x[ii]<=0.5 and y[ii]>=-0.5 and y[ii]<=0.5: #Условие попадания точки в прямоугольник
        n1+=1
print(np.pi*R1*R1*n1/N) #Вывод площади

 
 
 
 Posted automatically
Сообщение07.10.2021, 20:46 
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- для отображения кода используйте соответствующие теги (с подсветкой синтаксиса) - в случае Python это совершенно необходимо;
- в программах принято писать комментарии (можно не в коде, а отдельно, но надо пояснять, что и зачем вы делали);
- если что, человека по имени Карл Монте не существовало в природе, поинтересуйтесь, как правильно пишется название метода.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 
 
 
 Posted automatically
Сообщение07.10.2021, 21:30 
 i  Тема перемещена из форума «Карантин» в форум «Программирование»
А почему вот это делалось именно так:
Используется синтаксис Python
r=np.random.uniform(0, R1, N) #Определение N полярных радиус по равномерному распределению от 0 до R1
?

 
 
 
 Re: Posted automatically
Сообщение07.10.2021, 21:53 
Pphantom в сообщении #1534221 писал(а):
 i  Тема перемещена из форума «Карантин» в форум «Программирование»
А почему вот это делалось именно так:
Используется синтаксис Python
r=np.random.uniform(0, R1, N) #Определение N полярных радиус по равномерному распределению от 0 до R1
?

Так как угол меняется от 0 до 2пи, то радиус достаточно менять от 0 до R1. Я проверял точки генерируются верно. Но вот итоговая площадь прямоугольника не верная выходит. Я так же использовал в качестве исходной площади прямоугольник и по нему распределял точки, в этом случае неизвестная площадь определялась верно. А вот с окружностью не выходит

 
 
 
 Re: Определения площади прямоугольника методом Монте Карло
Сообщение07.10.2021, 21:54 
Неправильно выбирать равномерное распределение по радиусу в полярных координатах, иначе густота точек у центра будет больше, чем на периферии.

 
 
 
 Re: Определения площади прямоугольника методом Монте Карло
Сообщение07.10.2021, 23:30 
Аватара пользователя
https://mathworld.wolfram.com/DiskPointPicking.html

 
 
 
 Re: Определения площади прямоугольника методом Монте Карло
Сообщение07.10.2021, 23:36 
Аватара пользователя
Отличная демонстрация одного из парадоксов геометрической теории вероятностей.

Чтобы правильно получалось, в качестве радиуса надо брать корень квадратный из равномерной величины.

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group