Pull to refresh

Вычисление числа Пи методом Монте-Карло

Reading time 2 min
Views 76K
Algorithms *
Sandbox
Существует много способов вычисления числа Пи. Самым простым и понятным является численный метод Монте-Карло, суть которого сводится к простейшему перебору точек на площади. Суть расчета заключается в том, что мы берем квадрат со стороной a = 2 R, вписываем в него круг радиусом R. И начинаем наугад ставить точки внутри квадрата. Геометрически, вероятность P1 того, чтот точка попадет в круг, равна отношению площадей круга и квадрата:
P1=Sкруг / Sквадрата = πR2 / a 2 = πR2 / (2 R ) 2= πR2 / (2 R) 2 = π / 4 (1)
Выглядит это так:

image
Читать дальше →
Total votes 48: ↑21 and ↓27 -6
Comments 37

3D Роза методом Монте-Карло

Reading time 6 min
Views 9.4K
Canvas *


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

Roman Cortes для конкурса любви 2012 js1k сделал 3D розу на javascript (canvas), используя метод Монте-Карло.

Кратко о методе Монте-Карло


Ме́тод Мо́нте-Ка́рло — общее название группы численных методов, основанных на получении большого числа реализаций стохастического (случайного) процесса, который формируется таким образом, чтобы его вероятностные характеристики совпадали с аналогичными величинами решаемой задачи. Используется для решения задач в различных областях физики, химии, математики, экономики, оптимизации, теории управления и др.
Читать дальше →
Total votes 64: ↑50 and ↓14 +36
Comments 14

Ограничение оптимизирующих методов в играх с противником и без

Reading time 2 min
Views 2.6K
Algorithms *
Эта статья короткое ответвление от цикла статьей по биовычислениям:
От белков к РНК, Мат. критерии, Как уменьшить число поворотов цепи?, Как оценить ход сворачивания односпиральной РНК?

В этих статьях задача сворачивания РНК представлена в новом свете — как задача теории игр. Но традиционно эта задача сейчас решается с применением различных стохастических оптимизирующих методов. А к ним относятся методы основанные на методе Монте-Карло, метод отжига, генетические алгоритмы, искусственные нейронные сети, Q-обучение, и все те которые представляют задачу как энергетическую поверхность в которой ищут экстремумы.

Казалось бы сама физика велит использовать эти методы в таких задачах как сворачивание РНК/белков. Здесь мы посмотрим почему это сильно проблемно.

Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Comments 5

Расчет площади пересечения окружностей методом Монте-Карло

Reading time 4 min
Views 45K
Abnormal programming *JavaScript *Algorithms *
Sandbox
Monte-Carlo Эта статья родилась как логическое продолжение пятничного поста о методе Бутстрапа, а особенно, комментариев к нему. Не защищая метод Бутстрапа, стоит уделить внимание методам Монте-Карло. Здесь я хочу поделиться своим опытом применения Монте-Карло в одной из своих практических задач, а также обоснованием законности этого применения.

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

Подробности
Total votes 37: ↑30 and ↓7 +23
Comments 18

Как я считал время прибытия методом Монте-Карло

Reading time 6 min
Views 27K
PHP *
Translation
Легкий и «полупраздничный» пост. Всех причастных с праздником :)

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

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

Задача из реальной жизни

Пару дней назад у меня должна быть встреча в 9 часов утра, за 100 миль от моего дома. В 6.30 утра я проснулся, оделся и пока я завтракал, я начал прикидывать в блокноте ближайшие пару часов. Я, как обычно, хотел приехать вовремя, поэтому я начал набрасывать маршрут: выезд из города, проселочная дорога, затем по штату на север, на восток, местная дорога на восток, проехать город, затем на снова на север и прибытие в город. Все это выглядело как-то так:

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 4

Метод Монте-Карло в физике элементарных частиц

Reading time 4 min
Views 26K
Programming *Algorithms *Mathematics *
Данная статья посвящена широко известному методу Монте-Карло, который основан на теории вероятностей и математической статистике, в физике элементарных частиц. Так же, я расскажу, как можно разыгрывать дискретные и непрерывные случайные величины методом Неймана, а на закуску посмотрим, как применять ММК в ФЭЧ.

Сразу замечу, что моделирование будет производится в САВ WM, которую я применял (не так давно) в своей первой статье.
Читать дальше →
Total votes 39: ↑32 and ↓7 +25
Comments 27

Машинное обучение — 1. Корреляция и регрессия. Пример: конверсия посетителей сайта

Reading time 3 min
Views 34K
Нерепетитор.ру corporate blog Mathematics *Data visualization *Machine learning *
Tutorial
Как и обещал, начинаю цикл статей по «машинному обучению». Эта будет посвящена таким понятиям из статистики, как корреляция случайных величин и линейная регрессия. Рассмотрим, как реальные данные, так и модельные (симуляцию Монте-Карло).

Часть 1. Реальные данные


Чтобы было интереснее, рассказ построен на примерах, причем в качестве данных (и в этой, и в следующих, статьях) я буду стараться брать статистику прямо отсюда, с Хабра. А именно, неделю назад я написал свою первую статью на Хабре (про Mathcad Express, в котором и будем все считать). И вот теперь статистику по ее просмотрам за 10 дней и предлагаю в качестве исходных данных. На графике это ряд Views, синяя линия. Второй ряд данных (Regs, с коэффициентом 100) показывает число читателей, выполнивших после прочтения определенное действие (регистрацию и скачивание дистрибутива Mathcad Prime).


Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 10

Монте-Карло моделирование в Mathcad Express

Reading time 4 min
Views 12K
Нерепетитор.ру corporate blog Algorithms *Mathematics *
Tutorial
На Хабре много статей посвящено алгоритмам Монте-Карло, например, вот эта, вчерашняя. Как основная идея, так и реализация методов весьма несложная, но небольшим препятствием может служить отсутствие под рукой подходящих инструментов для моделирования. Тем из читателей, для кого проблема актуальна, советую использовать бесплатный математический редактор Mathcad Express, про который я и пишу в моем блоге.

Mathcad Express — это «легкая» версия известного пакета PTC Mathcad Prime, в которой большая часть функционала выключена. Тем не менее, датчики псевдослучайных чисел остаются доступными, что позволяет реализовать (довольно быстро и наглядно) различные статистические модели на основе алгоритмов Монте-Карло. Сразу оговорюсь, что некоторые решения будут не самыми лучшими, с точки зрения пользователей коммерческой версии Mathcad Prime, однако, они гарантированно не выведут нас за пределы функционала бесплатного Mathcad Express.

Напомню, что алгоритмы Монте-Карло — это общее название группы численных методов, основанных на программном создании определенной последовательности псевдослучайных чисел, моделирующей тот или иной эффект, например, последовательность отказов техники. Получив большое число реализаций случайного процесса, можно надеяться, что его вероятностные характеристики совпадут с аналогичными величинами решаемой задачи «реального мира». Файл с дальнейшими расчетами в форматах Mathcad и XPS лежит здесь.

Часть 1. Как сгенерировать выборку псевдослучайных чисел


В Mathcad Express доступен ряд генераторов псевдослучайных чисел, создающих выборки псевдослучайных данных с различными законами распределения. Для создания вектора из N псевдослучайных чисел нужна всего лишь одна строка Mathcad-документа. Например сгенерировать N=5 псевдослучайных чисел с нормальным распределением (нулевым средним и единичной дисперсией) можно так:



Векторы случайных чисел удобно визуализировать на графиках так: одна выборка (т.е. компоненты одного из случайных векторов T1) по оси абсцисс, а другая выборка (другой случайный вектор T2)  – по оси ординат. На следующем рисунке приведены графики пар псевдослучайных чисел для экспоненциального (слева) и нормального (справа) распределения. Параметры распределений задаются в формулах над графиками.



Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 0

Создаем своего бота для игры в Го

Reading time 8 min
Views 12K
Algorithms *Machine learning *


Я занимаюсь разработкой своего скромного бота для игры в Го. И меня искренне удивляет отсутствие информации эту тему на русском языке. Поэтому я решил поделиться накопленными знаниями в этой статье.

Я расскажу о том, как сделать простого бота. Освещу основные этапы, начиная от поиска ходов и эвристических алгоритмов и заканчивая публикацией вашего создания на онлайн-сервере KGS.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 8

Dagaz: Забегая вперёд

Reading time 11 min
Views 3.1K
JavaScript *Game development *Algorithms *
image        Сто тринадцать раз в секунду оно тянется, и достает все дальше. Если бы пришло подтверждение, сигнал — оно могло бы остановиться, и оно не останавливается. Оно тянется и находит всё новые способы. Оно импровизирует, оно изучает. Оно не сознает, что делает…

        Джеймс Кори «Пожар Сиболы»


Вообще говоря, «сильный» игровой AI не является моим приоритетом. Глупо соревноваться со специализированными игровыми движками, занимаясь универсальным и имея лишь однопоточный JavaScript, встроенный в браузер, в качестве вычислительного ресурса. Кроме того, есть целый ряд игр, в которых потребности в сложном AI просто не возникает. Вот здесь, например, весь AI сводится к поиску кратчайшего пути, а в этой игре с задачей прекрасно справляется рандом. Увы, такие игры скорее исключение чем правило. Гораздо чаще, приходится изрядно потрудиться, чтобы программа делала ходы, которые не казались бы попросту идиотскими.
Total votes 15: ↑13 and ↓2 +11
Comments 5

Логарифмируй это: метод логарифмической производной в машинном обучении

Reading time 7 min
Views 11K
Wunder Fund corporate blog Algorithms *Mathematics *Machine learning *
Translation

Прием, о котором пойдет речь — метод логарифмической производной — помогает нам делать всякие штуки, используя основное свойство производной от логарифма. Лучше всего этот метод зарекомендовал себя в решении задач стохастической оптимизации, которые мы исследовали ранее. Благодаря его применению, мы нашли новый способ получения стохастических градиентных оценок. Начнем с примера использования приема для определения оценочной функции.

Довольно математично.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Comments 1

ИИ и 2048. Часть 1: Метод Монте-Карло

Reading time 5 min
Views 18K
Edison corporate blog Perfect code *Algorithms *Game testing *Logic games
Translation


«2048» через несколько недель исполняется 5 лет, а значит, пора написать что-нибудь, посвящённое этой замечательной игре.

Особенно познавательна тема самостоятельной игры искусственного интеллекта в головоломку. Способы реализации есть самые разные и сегодня разберём относительно лёгкий из них. А именно — научим компьютерный разум собирать степени двойки с помощью метода Монте-Карло.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 21

Как мы SciArt-ом логотип конференции прокачали

Reading time 7 min
Views 2K
Python *Popular science Physics DIY Chemistry

В прошлом (2020) году в связи с пандемией мы проводили научную онлайн конференцию по вычислительной химии, и для неё сделали логотип, который был, мягко говоря, так себе. Под катом рассказ о том, как мы его прокачали для конференции этого (2021) года при помощи небольшого количества квантовой механики, метода Монте-Карло, Python и Gnuplot.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 13

Рисовалка для атомных орбиталей на Python

Reading time 10 min
Views 9.7K
Python *Popular science Physics Lifehacks for geeks Chemistry

Начался новый учебный год, и преподавателям, студентам и школьникам, возможно, требуется (или просто хочется) посмотреть на то, как выглядят орбитальки, на которых сидят электроны в атомах: все эти завораживающие буковки s, p, d, f, и т.д. Да, картинок полно как в учебниках, так и в Интернете, но покрутить орбитальки на картинке не получится, а картинку из учебника/с левого сайта в презентацию/реферат без мороки с лицензией пихать (по-хорошему) не стоит. Поэтому в этом посте мы разберём одну из возможных реализаций рисовалки для этих самых орбиталек.

Посмотреть код, без регистрации и СМС.
Total votes 34: ↑34 and ↓0 +34
Comments 11

Как ИИ вдохновил меня поднять свой уровень в шахматы

Reading time 7 min
Views 10K
Algorithms *Artificial Intelligence Brain Logic games
Sandbox

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

Читать далее
Total votes 15: ↑11 and ↓4 +7
Comments 3