Как сделать квадрат внутри круга

Обновлено: 04.07.2024

При разметке все построения производятся с помощью двух линий — прямой и окружности (на рис. 3.42 с целью повторения представлены элементы окружности).

Окружность и ее элементы

Рис. 3.42. Окружность и ее элементы

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

Разметка центра по угольнику-центроискателю. Разметку выполняют в следующей последовательности.

  • 1. Деталь устанавливают на разметочную плиту так, чтобы размечаемый торец был сверху.
  • 2. На торец цилиндрической детали накладывают угольник-центроиска- тель так, чтобы две его стороны (планки) касались цилиндрической поверхности детали, рис. 3.43.

Нахождение центра окружности с помощью угольника-центроискателя

Рис. 3.43. Нахождение центра окружности с помощью угольника-центроискателя

  • 3. Левой рукой плотно прижимают линейку угольника к поверхности торца, а правой проводят чертилкой первую диаметральную риску.
  • 4. Угольник-центроискатель поворачивают по цилиндрической поверхности детали примерно на 90° и проводят вторую риску. Точка пересечения двух рисок будет центром размечаемой окружности.

Разметку центра детали с грубо обработанной цилиндрической поверхностью производят в такой же последовательности. В этом случае для более точного нахождения центра окружности необходимо нанести пять-семь рисок. Центром будет точка, в которой пересекается наибольшее число рисок.

Точность разметки центра окружности проверяют разметочным циркулем, рис. 3.44. Острие одной ножки циркуля устанавливают в размеченный центр, а другую ножку перемещают так, чтобы ее острие слегка касалось цилиндрической части детали. Если острие ножки циркуля касается по всей длине окружности, то центр размечен правильно.

Способ проверки точности разметки центра окружности разметочным циркулем

Рис. 3.44. Способ проверки точности разметки центра окружности разметочным циркулем

Разметка центра рейсмусом (рис. 3.45). Деталь кладут на призмы или параллельные подкладки, уложенные на разметочную плиту. Устанавливают острый конец иглы рейсмуса несколько выше или ниже центра размечаемой

Разметка центра рейсмусом

Рис. 3.45. Разметка центра рейсмусом

детали и, придерживая деталь левой рукой, правой рукой движением рейсмуса по плите прочерчивают его иглой на торце детали короткую рису. После этого поворачивают деталь на 1/4 окружности и таким же способом проводят вторую риску. То же повторяют через каждую четверть оборота для проведения третьей и четвертой рисок. Внутри рисок (на пересечении диагоналей) и будет находиться центр. Его набивают кернером.

Геометрический способ нахождения центра заключается в следующем. Пусть дана плоская металлическая плита с готовым отверстием, центр которого неизвестен. Перед тем как начать разметку, вставляют в отверстие широкий деревянный брусок и на него набивают пластинку из белой жести или из оцинкованного кровельного железа.

Затем на краю отверстия слегка намечают произвольно три точки Л, В и С и из каждой пары этих точек ЛВ и ВС описывают по обе стороны их пересекающиеся между собой дуги-засечки 1—2 и 3—4, рис. 3.46. Через точки пересечения дуг проводят две прямые по направлению к центру до их пересечения в точке О. Точка пересечения этих прямых, и будет искомым центром отверстия.

Нахождение центра геометрическим способом

Рис. 3.46. Нахождение центра геометрическим способом

Разметка центра циркулем (кронциркулем). Зажав деталь в тиски, растворяют ножки циркуля на величину, немного большую или немного меньшую радиуса размечаемой детали. После этого, приложив к боковой поверхности детали одну ножку циркуля и придерживая ее большим пальцем, другой ножкой циркуля очерчивают дугу. Далее переместив циркуль на 1/4 окружности (на глаз), таким же образом очерчиваю вторую дугу. Затем через каждую четверть окружности очерчивают третью и четвертую дуги. Затем соединить противоположные засечки диагоналями, рис. 3.47я. Центр окружности будет находиться внутри очерченных дуг на пересечении диагоналей.

Разметка центра циркулем (кронциркулем)

Рис. 3.47. Разметка центра циркулем (кронциркулем)

Можно разметить центр и способом, показанным на рис. 3.476. Методика разметки аналогична разметке рейсмусом.

Разметка центра колоколом. Приспособление колокол устанавливается на торец цилиндрической детали. Придерживая колокол левой рукой в вертикальном положении, правой рукой наносят удар молотком по кернеру, находящемуся в колоколе, рис. 3.48. Кернер сделает углубление в центре торца.

Разметка центра колоколом

Рис. 3.48. Разметка центра колоколом

Деление окружности на равные части. При разметке окружностей часто приходится их делить на несколько равных частей — 3, 4, 5, 6, и больше. Ниже приведены примеры деления окружности на равные части геометрическим способом и с помощью таблиц.

Деление окружности на три равные части с построением вписанного треугольника (рис. 3.49).

Деление окружности на три части с построением вписанного треугольника

Рис. 3.49. Деление окружности на три части с построением вписанного треугольника

  • 1. В центре размечаемой плоскости с помощью циркуля проводим окружность требуемого радиуса, например R = 26 мм.
  • 2. Через центр окружности по линейке проводим прямую риску с пересечением окружности в точках А и В.
  • 3. Опорную ножку циркуля устанавливаем в точку А и при растворе циркуля, равном радиусу проведенной окружности, делаем на окружности две метки-засечки (точки С и D), где длина дуги между ними будет равна одной трети длины окружности.
  • 4. Соединив точки прямыми рисками СД СВ и BD, получим вписанный равносторонний треугольник.
  • 5. Правильность построения проверяем циркулем, устанавливая раствор циркуля равным одной из сторон треугольника и этим же размером определяя равенство остальных сторон треугольника.

Деление окружности на четыре равные части с построением вписанного квадрата, рис. 3.50.

Деление окружности на четыре части с построением вписанного квадрата (а) и прием разметки квадрата (6)

Рис. 3.50. Деление окружности на четыре части с построением вписанного квадрата (а) и прием разметки квадрата (6)

  • 1. В центре размечаемой плоскости циркулем проводим окружность требуемого радиуса, например R= 28 мм.
  • 2. Через центр окружности по линейке проводим прямую риску что бы она пересекала окружности в двух точках А и В и разделяла ее на две равные части.
  • 3. Опорную ножку циркуля устанавливаем в точку А и, раздвинув циркуль на расстояние несколько большее, чем половина отрезка АВ, проводим дугу в.
  • 4. Опорную ножку циркуля переносим в точку В и, не изменяя раствора циркуля, проводим дугу б так, чтобы она пересекла первую выполненную дугу в точках 7 и 2.
  • 5. Через точки 7 и 2 проводим риску, которая образует на окружности точки С и D.
  • 6. Соединив точки AD, DB, ВС и СА прямыми рисками, получим квадрат, вписанный в окружность.

Деление окружности на пять равных частей (рис. 3.51). На данной окружности проводим два взаимно перпендикулярных диаметра, пересекающие окружность в точках А и В, С и D. Радиус ОА делим пополам и из полученной точки Е описываем дугу радиусом ЕС до пересечения в точке F на радиусе О В. После этого соединяем прямой точки D и F. Откладывая длину прямой DF по окружности, разделим ее на пять равных частей.

Деление окружности на шесть равных частей с построением вписанного шестиугольника, рис. 3.52.

Деление окружности на пять равных частей

Рис. 3.51. Деление окружности на пять равных частей

Деление окружности на шесть частей с построением вписанного шестиугольника

Рис. 3.52. Деление окружности на шесть частей с построением вписанного шестиугольника

  • 1. В центре разметочной плоскости циркулем проводим окружность требуемого радиуса, например 7? = 27 мм.
  • 2. Через центр окружности по линейке проводим прямую риску с пересечением окружности в точках А и В.
  • 3. Из точки А, как из центра, наносим дугу радиусом, равным радиусу проведенной окружности, и получаем точки 7 и 2

Аналогичное построение делаем из точки В, нанося точки 3 и 4. Полученные точки пересечения и концевые точки диаметра будут искомыми точками деления окружности на шесть частей.

4. Соединив точки прямыми рисками А — 1,2 — 4, 4 — В, В — 3, 3 — 1 и 1 — А, получим вписанный шестиугольник.

При разметке граней шестиугольника под размер h зева гаечного ключа (рис. 3.53) радиус описываемой окружности определяется по формуле R = 0,577/г.

Пример разметки шестиугольника под размер зева гаечного ключа

Рис. 3.53. Пример разметки шестиугольника под размер зева гаечного ключа

Таблица 3.5. Деление окружности на равные части

Число делений окружности

Число, умножаемое на радиус окружности

Число делений окружности

Число, умножаемое на радиус окружности

Число делений окружности

Число, умножаемое на радиус окружности

Окончание табл. 3.5

Число делений окружности

Число, умножаемое на радиус окружности

Пример 1. Требуется разделить на 15 равных частей окружность, радиус которой равен 280 мм. Сначала определяем величину хорды, т. е. расстояние между двумя соседними делениями. Для этого из второй графы табл. 3.5 берем число, стоящее против цифры 15 первой графы (в данном случае это будет 0,4158), и умножаем на это число радиус окружности.


Это расстояние берем циркулем по масштабной линейке и откладываем его на размечаемой окружности. Последняя разделится на 15 равных частей.

Пример 2. Требуется разделить на 13 равных частей окружность, диаметр которой равен 500 мм.

По таблице число, соответствующее 13 делениям, составляет 0,4786. Следовательно


Отложим циркулем полученное расстояние размечаемой окружности, разделим ее на 13 равных частей.

Разметка отверстий на деталях. Разметка отверстий под болты и шпильки в плоских деталях, кольцах и фланцах для труб и цилиндров машин требует особого внимания. Центры отверстий болтов и шпилек должны быть точно расположены (размечены) по окружности — так, чтобы при наложении двух сопрягаемых деталей соответствующие отверстия приходились строго одно под другим.

После того как размеченная окружность (рис. 3.54) разделена на части и в надлежащих местах по этой окружности накернены центры отверстий, приступают к разметке отверстий. При кернении центров сначала накернивают углубление лишь слегка и затем проверяют циркулем равенство расстояния между центрами. Только убедившись в правильности разметки, накернивают центры окончательно.

Разметка отверстий

Рис. 3.54. Разметка отверстий: 1 — размечаемое кольцо; 2 — деревянная планка, забитая в отверстие; 3 — проведение окружности; 4 — разбивка отверстий; 5 — размеченные отверстия; 6 — окружность центров отверстий; 7 — контрольная окружность; 8 — керны

Отверстия размечают двумя окружностями из одного центра. Первую окружность проводят радиусом по размеру отверстия, а вторую окружность, как контрольную — радиусом на 1,5—2,0 мм большим, чем первый. Это необходимо для того, чтобы при сверлении можно было видеть, не сместился ли центр и правильно ли идет сверление. Первую окружность накернивают — для малых отверстий делают 4 керна, для больших — 6—8 и больше.

На рис. 3.55 приведен пример разметки фланца задвижки.

Пример разметки отверстий на фланце задвижки

Рис. 3.55. Пример разметки отверстий на фланце задвижки: а — задвижка и элементы разметки; б — разметка фланца на шесть отверстий; в — разметка под четыре отверстия; г — под восемь отверстий

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Как найти центр окружности без измерительных инструментов?

Действительно как? Вот у вас есть круг. И есть необходимость или желание узнать, где у него центр.
Самое простое- это вписать в круг квадрат или прямоугольник.
Затем провести диагонали соединяющие противоположные углы. Место пересечения этих линий и будет центром окружности, а каждая из этих линий будет являться ее диаметром. Место пересечения диаметров окружности всегда будет является ее центром.



Из этого так же следует, что гипотенуза вписанного в окружность прямоугольного треугольника так же всегда является ее диаметром. И здесь, чтобы найти центр окружности достаточно найти ее середину. НУ а серелдина находится легко: из вершины треуголника (прямого угла) к основаниею (гипотенуже) проведится перпендикулярная линия. В прямоуголном треуголнике она делит основани ровно пополам. А так как гипоетнуза- это диаметр окружности, то поделеная пополам, дает два радиуса и соотвевенно центр окружности.


Но центр можно найти не только с помощью прямоугольного треугольника. Можно вписать в окружность равносторонний или равнобедренный треугольник. С первым вообще все просто, как и с прямоугольником. У него все стороны равны и не составит труда вписать его в окружность. Здесь достаточно провести две медианы (они же высоты) из любых углов. Место их пересечения и будет центр окружности. Если их продолжить до линии окружности, то получим два пересекающихся диаметра.


Для нахождения центра круга при помощи равнобедренного треугольника необходимо произвести следующие действия. Вписать в окружность два любых равнобедренных треугольника. Форма треугольников и длина их бедер не имеют значения. После из вершин этих треугольников необходимо провести к основанию треугольника медиану/высоту. И продолжить ее до соприкосновения с окружностью. Место пересечения этих медиан/высот и будет центром круга. А они, как уже вы догадались, будут являться его диаметрами.


Как нетрудно увидеть, если чуть-чуть подумать, то можно вообще не чертить никаких фигур. Надо просто отложить внутри окружности две любых линии (хорды), не параллельных друг другу. Провести перпендикулярные линии через середины этих хорд к противоположной точке на окружности. И снова пересечение этих двух будет являться центром.


Так же центр окружности можно найти с помощью вписанной в круг трапеции. Используя трапеции не сложно начертить прямоугольник или прямоугольный треугольник. А уже имея их- найти центр.


Но как начертить трапецию, треугольник или даже квадрат, не имея линейки с разметкой и транспортира? Как получить прямой угол? Ведь не все люди обладают точным глазомером и твердостью руки.

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

Осталось добавить, что выше перечисленные способы справедливы и в том случае, если окружность вписана в квадрат или равнобедренный треугольник или проведены касательные к окружности.

image

Допустим, вам нужно найти случайную точку с равномерным распределением в круге. Как же это сделать лучше всего? Когда я впервые начал изучать эту задачу, я работал над программным проектом, требовавшим случайного распределения значений в круге, но довольно быстро я спустился в неожиданно глубокую кроличью нору, заполненную любопытной математикой, поэтому решил объединить все свои находки в одну статью.

Прежде чем переходить к кругу, давайте упростим задачу и выберем случайную точку внутри квадрата. Для этого достаточно выбрать случайные координаты и в пределах квадрата. В некоторых случаях этот принцип можно применить и к кругам. Например, точка может попадать в круг, но не всегда, поэтому нам нужен дополнительный этап — если выбранная точка находится за границами круга, то мы пробуем снова и снова, пока точка не окажется в круге. Этот процесс является примером выборки с отклонением (rejection sampling) — вместо того, чтобы преобразовать некое распределение, мы просто отклоняем все результаты, находящиеся вне нужного нам интервала.

Способ вполне рабочий, но мне не совсем нравится то, что этот алгоритм иногда приходится исполнять множество раз. Предположим ради простоты, что радиус нашей окружности равен (но дальнейшие вычисления применимы к кругам любого радиуса). Вероятность того, что выбранная этим алгоритмом точка находится внутри круга, равна площади круга, разделённой на площадь квадрата, или , делённая на , что приблизительно равно . Это значит, что вероятность выбора алгоритмом неправильной точки раз равна в степени , где — некое положительное число. С увеличением это значение очень быстро становится очень малым. Вероятность четырёхкратного неправильного срабатывания алгоритма меньше четверти процента. Мы можем вычислить среднее количество необходимых попыток, или ожидаемое значение , которое обратно коэффициенту успешного выбора, то есть , что приблизительно равно . То есть в среднем нам достаточно будет сделать только одну попытку. Все эти вычисления дают нам понять, что не стоит беспокоиться о слишком долгом повторении процесса.

Давайте реализуем алгоритм на Python.


Если я выполню эту функцию красивое количество раз (), то получу желаемый результат — точки случайно, но равномерно распределены по кругу.


На этом можно было бы и остановиться, но мы можем сделать так, чтобы подходящая точка гарантированно выбиралась с первого раза. Проблема в том, что мы используем неправильную систему координат (декартову), которая ограничивает нас, заставляя выбирать два значения, представляющие собой расстояния на перпендикулярных осях, которые мы называем и . Гораздо больше нашим целям подойдёт полярная система координат, в которой точки задаются расстоянием от точки начала координат и углом. Например, рассмотрим точку (, ). В декартовых координатах это будет точка на пересечении и , но в полярных координатах это будет точка, расположенная в двух единицах от точки начала координат и повёрнутая на угол радиан.


Достаточно взглянуть на графическое представление этих систем координат, чтобы понять, почему полярная система координат больше подходит для работы с кругами. Итак, всё, что нам нужно сделать — выбрать случайный радиус в интервале от 0 до 1 и случайный угол (тета) от до . Для отрисовки эти координаты необходимо будет преобразовать обратно в декартовы, что можно сделать, умножив на косинус или синус для получения, соответственно, координат и


Реализация этого алгоритма на Python содержит случайную переменную от до и случайную переменную от до , а возвращает , умноженный на косинус и , умноженный на синус .


Если мы снова выполним этот алгоритм 3141 раз, результаты должны выглядеть похожими на алгоритм выборки с отклонением… но это не так.


Как видите, точки гораздо плотнее располагаются в центре круга. Давайте разберёмся, почему. Мы знаем, что проблема не в генерировании , потому что точки равномерно распределены по кругу, поэтому виноват должен быть способ выбора значения . Используемый нами генератор случайных чисел имеет равномерное распределение, то есть вероятность выбора каждого возможного радиуса одинакова. Из этого следует, что каждое кольцо в круге в среднем будет содержать одинаковое количество точек. Возможно, вы уже видите в чём проблема — с увеличением длины окружности кольца количество точек остаётся постоянным, то есть в наружных кольцах с большим радиусом точки имеют меньшую плотность, чем во внутренних.


Мы можем описать процесс выбора радиуса или значения при помощи функции плотности вероятности (probability density function, PDF) — функции, интеграл которой сообщает нам вероятность попадания непрерывной случайной переменной в заданный интервал. Сейчас график этой функции является горизонтальной линией от до , поскольку вероятность выбора каждого значения одинакова.


Итак, мы знаем, что эта PDF нам не подходит. Давайте выясним, как она должна выглядеть для того, чтобы точки были равномерно распределены в круге. Так как длина окружности линейно зависит от радиуса, для сохранения одинаковой плотности точек их количество должно тоже линейно зависеть от радиуса. Следовательно, наша PDF должна быть линейной функцией, которую мы обозначим как , где — некий наклон. Но как нам вычислить значение ? Вероятность того, что выбранное значение будет находиться в интервале от до , равна 100% или . Следовательно, интеграл или площадь под кривой нашей PDF от до тоже должна быть равна . Из этого мы можем вычислить высоту треугольника, а затем вычислить наклон гипотенузы, или составить интеграл. Именно так я и сделаю. При решении интеграла выясняется, что наклон нашей PDF равен , то есть её уравнение имеет вид .


Любопытно то, что каждая PDF имеет интеграл , то есть этот трюк будет срабатывать всегда. Теперь когда мы знаем, как должно выглядеть распределение, можно реализовать его при помощи одного генератора равномерно распределённых случайных чисел. Необходимо найти преобразование, применив которое к равномерному распределению, можно получить нужное нам линейное распределение. Для начала давайте создадим функцию распределения (cumulative distribution function, CDF), которую я обозначу как . Она представляет собой интеграл PDF, который в нашем случае равен . CDF обозначает вероятность того, что случайная переменная будет меньше или равна аргументу функции.



Такое понимание уже достаточно ценно, но я покажу вам более строгое доказательство того, что подстановка случайной переменной с равномерным распределением в функцию, обратную нашей CDF, даст нужное нам распределение. Пока мы знаем, что CDF обозначает вероятность того, что случайная переменная будет меньше или равна аргументу функции , но давайте вернёмся к тому, как выглядит PDF равномерного распределения. Я обозначу случайную переменную с равномерным распределением от до как . График — это горизонтальная линия от до при равном . Следовательно, уравнение CDF (интеграл PDF) будет . Из определения CDF следует, что вероятность того, что будет меньше или равна , равна . Если мы подставим вместо , то становится ясно, что вероятность того, что значение случайной переменной с равномерным распределением будет меньше или равно , равно , потому что оно находится посередине между и . Вернувшись к методу обратного преобразования, мы можем сказать, что равна вероятности того, что будет меньше или равна . Теперь мы можем применить к обоим сторонам неравенства значение, обратное нашей CDF, что даст нам два неравенства, меньших или равных . Следовательно, , случайная переменная с нужным нам распределением, равна обратному значению CDF, применённому к случайной переменной с равномерным распределением, а мы знаем, что функция, обратная CDF, — это . Давайте реализуем всё это на Python.


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

Итак, теперь у нас есть два приемлемых способа выбора случайной точки с равномерным распределением внутри круга, но давайте не будем останавливаться. Существует и ещё один очень любопытный способ, приводящий точно к такому же результату.

Круг можно рассматривать как набор бесконечного множества бесконечно узких равнобедренных треугольников, повёрнутых относительно точки. Поэтому мы можем выбрать случайный треугольник, а затем выбрать в этом треугольнике случайную точку, чтобы получить случайную точку с равномерным распределением в круге.


Давайте вернёмся к тому, как мы выбирали случайную точку в квадрате — этот способ можно применить и к параллелограммам. Так как мы имеем дело с равнобедренными треугольниками, воспользуемся ромбом, который, как известно, состоит из двух равнобедренных треугольников, соединённых основаниями. Просто выберем случайную точку на двух соседних сторонах, а затем из каждой точки проведём линию, параллельную соседней стороне, и найдём точку их пересечения. Чтобы ограничить интервал только треугольником, мы можем провести диагональ и отражать все точки, попавшие не в ту часть ромба. Давайте обозначим четыре вершины ромба как , , и , две случайные точки на соседних сторонах и , а выбранную точку . Так как треугольники бесконечно тонкие, угол при вершине будет стремиться к нулю, и при этом высота ромба тоже будет стремиться к нулю. Это значит, что все его стороны, по сути, становятся параллельными. Следовательно, расстояние от центральной точки до выбранной точки равна сумме и .


Теперь мы при необходимости сможем отразить точку относительно диагонали, которая находится посередине между точками и .


Всё это уже можно преобразовать в код на Python. Во-первых, вычисляется как обычно, но это также можно рассматривать как выбор случайного треугольника, так как они бесконечно тонкие, поэтому каждый треугольник получает собственный угол. Затем сложением двух случайных величин и вычисляется . Если больше или равен единице, это значит, что точка находится с неправильной стороны ромба и вычисляется значение её отражения вычитанием . Конструкция остаётся такой же.


Мы снова выполним алгоритм 3141 раз и получим равномерное распределение точек по кругу.

Однако у меня возник вопрос: почему сложение двух случайных величин не равно умножению одной случайной переменной на два? Проще всего рассуждать над этим вопросом на примере игровых костей. Если мы возьмём результат броска одной честной кости и умножим его на два, то увидим, что возвращаются только чётные числа и что кость имеет равномерное распределение. Однако если сложить результаты двух честных костей, то можно увидеть, что вероятность результата выше, чем вероятность любого другого числа, потому что получить сумму на двух костях можно шестью разными способами. Сумму же и можно получить только одним способом, из-за чего их вероятность становится ниже. Если мы составим график частоты каждого возможного результата, то при приближении суммы к , что является средним и , частоты сумм увеличиваются.


Если мы представим, что отражаем правую половину графика, результат будет выглядеть очень похожим на желаемую PDF, но на этом я заметил кое-что странное. Оба этих способа вычисляют как квадратный корень от случайного числа, а отражение суммы двух случайных чисел должно иметь то же распределение с линейной PDF, равной и квадратной CDF . Поначалу это кажется неправильным: как эти две кажущиеся не связанными друг с другом и совершенно разные функции могут иметь одинаковое распределение? Мы знаем, что распределение способа с квадратным корнем правильное, ведь мы вывели его непосредственно из нужной CDF. Давайте докажем распределение способа с суммами.

К счастью, уже существует распределение Ирвина-Холла, сообщающее нам распределение суммы равномерно выбранных случайных чисел от 0 до 1. В нашем случае . Вот уравнения для PDF и CDF.


Можно использовать их, но на самом деле это необязательно, потому что существует очень изящный геометрический вывод, хорошо работающий с низкими значениями . Для начала полезно будет отложить две переменные и на осях и , чтобы лучше их визуализировать. Можно начертить линию, представляющую все возможные способы суммирования и для получения некого числа от до . Уравнение прямой будет иметь вид . Длина этой линии будет пропорциональна PDF, возрастающей в интервале от до и снижающейся в интервале от до . Площадь под этой прямой и в границах этого единичного квадрата представляет собой CDF.


Но нужно помнить о том, что любое значение от до отражается и даёт нам значение . Это значит, что CDF всегда можно представить как площадь треугольника с основанием и высотой , то есть . Однако поскольку все точки в этом треугольнике по сути удваиваются в результате отражения, эту площадь нужно умножить на и получить нужную нам CDF ().


Но зачем останавливаться на этом? Любая функция, имеющая такое распределение, теоретически должна выбирать значение , генерирующее случайную точку с равномерным распределением внутри круга.

Я покажу вам ещё один способ, но призываю вас попробовать найти собственный, поскольку я перечислил далеко не все варианты. В этом последнем способе выбор значения выполняется взятием максимума от двух случайных переменных. Я не использую встроенную в Python функцию , поскольку её производительность ниже того, что вы видите в моём коде.


Мы снова равномерно распределим 3141 точку в круге, но это нужно доказать. Доказательство выполняется схожим с распределением Ирвина-Холла способом — откладыванием величин и . Как и ранее, поскольку равен их максимуму, мы можем разделить квадрат по диагонали. Любая точка, оказавшаяся в красной половине квадрата, возвращает , потому что он больше . Любая точка, оказавшаяся в синей половине квадрата, аналогично возвращает . CDF представлена квадратом с длиной стороны , в котором каждая точка и меньше или равна , а площадь квадрата снова даёт нам CDF, равную .


После разбора этих четырёх способов нам осталось протестировать их, чтобы узнать, какой выполняется быстрее всего. Выполнив каждую функцию 3 142 592 раза, мы получили такие значения времени:


По увеличению скорости выполнения: первый способ (rejection_sampling), четвёртый (max_dist), второй (sqrt_dist) и третий (sum_dist)

Значительно быстрее остальных оказалась выборка с отклонением (rejection sampling), и это логично, потому что остальные три способа содержат дополнительные затраты на выполнение операций синуса и косинуса. Значит ли это, что бОльшая часть нашей работы была проделана напрасно и что нам нужно было остановиться раньше? Я так не считаю, потому что если бы не эта задача, мне никогда бы не довелось познакомиться с PDF и CDF, да и с целым множеством интересных геометрических доказательств.








Все материалы добавляются пользователями. При копировании необходимо указывать ссылку на источник.

Читайте также: