Как посчитать среднее расстояние между частицами?
Пожалуйста, используйте IE6/7/8 с плагином MathPlayer, Firefox с установленными математическими шрифтами или Opera 9.5 и выше.
| Объявления | Последний пост | |
|---|---|---|
| Работодателям и кадровым агентствам: Размещение вакансий | 26.03.2008 03:07 | |
| Открыта свободная публикация вакансий для математиков | 26.09.2019 16:34 | |
| Гранты для студентов и аспирантов мехмата и физфака МГУ на обучение в магистратуре Кембриджа 2023/2024 | 28.11.2022 13:56 | |
16.06.2014 14:32
Дата регистрации:
10 лет назад
Как посчитать среднее расстояние между частицами?
Вопрос сугубо практический.
Берём жидкость. Бросаем в неё сферические наночастицы. Разбалтываем как следует, чтобы частицы распределились равномерно. Концентрация частиц в объёме $c$ известна . И тут возникает вопрос, озаглавленный в теме. Конечно же под расстоянием между частицами мы понимаем расстояние между центрами частиц.
Для оценки, конечно же, можно представить, что частицы расположены в узлах кубической решётки и тогда расстояние высчитывается не хитро:
$V=a^3=\frac => a=\root<\frac>$
Однако это лишь оценка. Можно выбрать любую другую равномерную решётку и получить тот же ответ с точностью до множителя порядка 1.
Можно напустить на себя умный вид и провести оценку более статистообразно. Для этого проведём следующие рассуждения.
Разбросаем равномерно частицы в объёме. Теперь тыкнем пальцем в произвольном месте и поместим туда центр сферической системы координат. Начнём из этой точки раздувать сферу.
Первая частица попадётся внутрь этой сферы в среднем при следующем условии:
$Vc=1 => V=\frac\pir^3=\frac => r=\root<\frac<4\pic>>$
Но это будет лишь средний объём приходящийся на одну частицу и соответствующий характерный размер этого объёма. Будем раздувать сферу дальше до попадания внутрь неё второй частицы. Тогда:
$V=\frac$
Таков средний объём, содержащий две частицы. Согласно нашему построению, первая частица находится где-то внутри этой сферы. Поскольку вероятность распределения в объёме равномерная, постольку среднее положение первой частицы есть центр этой сферы. Опять таки, согласно нашему построению, вторая частица находится где-то на этой сфере. Таким образом среднее расстояние между частицами будет равно радиусу этой сферы:
$R=\root<4\pic>>$
Познавательно здесь обратить внимание на то, что $R
Однако и такое, более глубокое рассуждение, кажется лишь оценкой.
А как честно построить распределение вероятности расстояний между ближайшими частицами, чтобы потом усреднить его?
Редактировалось 1 раз(а). Последний 16.06.2014 14:34.
среднее расстояние между любыми точками
Пожалуйста, используйте IE6/7/8 с плагином MathPlayer, Firefox с установленными математическими шрифтами или Opera 9.5 и выше.
| Объявления | Последний пост | |
|---|---|---|
| Запущен новый раздел «Задачки и головоломки» | 29.08.2019 00:42 | |
| Книги по математике и экономике в добрые руки! | 07.10.2023 13:49 | |
| ML Research Engineer, до $8k/мес net | 06.09.2023 14:11 | |
25.04.2014 17:53
Дата регистрации:
12 лет назад
среднее расстояние между любыми точками
Можно ли посчитать среднее расстояние из любой точки какойто фигуры до любой точки этой же фигуры?
например, среднее расстояние между двумя любыми точками единичного квадрата
25.04.2014 18:10
Дата регистрации:
14 лет назад
Посты: 13 190
25.04.2014 19:06
Дата регистрации:
12 лет назад
просто так
Цитата
brukvalub
но зачем?
стало интересно сколько это и как это можно посчитать.. и вдруг это может как-то пригодиться в расчёте транспортных потоков? я градостроитель
25.04.2014 19:08
Дата регистрации:
14 лет назад
Посты: 13 190
А как это поможет
градостроительству? Стало интересно, я — математик.
25.04.2014 20:16
Дата регистрации:
12 лет назад
пока не знаю
Цитата
brukvalub
градостроительству? Стало интересно, я — математик.
ну например, самое простое, выбор оптимальной формы города при проектировании
25.04.2014 20:22
Дата регистрации:
10 лет назад
Посты: 1 972
Я без расчета вам скажу
С точки зрения среднего расстояния оптимальная форма — круг. Недаром естественно растущие города так и строятся. Но, конечно, на результат могут повлиять особенности местности: перепад высот, реки, большие дороги.
дважды два — не всегда 5
25.04.2014 21:25
Дата регистрации:
13 лет назад
Посты: 3 154
Цитата
music.sucks999
Можно ли посчитать среднее расстояние из любой точки какойто фигуры до любой точки этой же фигуры?
например, среднее расстояние между двумя любыми точками единичного квадрата
Вот тут я в свое время упражнялся) http://www.mathforum.ru/forum/read/1/20847/20847/#20847
25.04.2014 23:44
Дата регистрации:
13 лет назад
Посты: 1 073
Среднее расстояние
Задача для квадрата, очевидно, сводится к вычислению интеграла
Точно вычислить не удалось. Численно с 5 знаками получается 0.52141 (подсчитано в Maple)
26.04.2014 01:02
Дата регистрации:
11 лет назад
Вот здесь есть точная форма
26.04.2014 07:55
Дата регистрации:
14 лет назад
Теория вероятности
Мне кажется, что разумнее поставить эту задачу на языке теории вероятности.
Для квадрата, например, это будет так.
В квадрат наугад бросаются две точки.
Найти среднее значение (т.е. математическое ожидание) случайной величины Х — расстояние между этими точками.
P.S. Прошу прощения, только сейчас посмотрел ссылку zklb (Дмитрий) и увидел, что это уже предложено.
Редактировалось 1 раз(а). Последний 26.04.2014 07:58.
26.04.2014 13:22
Дата регистрации:
12 лет назад
Всем спасибо за ответы!
По поводу подсчёта с точки зрения теорвера — у меня была такая идея, но я не был уверен, можно ли считать условия задачи равносильными.
Вычислить среднее расстояние по m ближайшим соседям для каждой точки
У меня есть df (2178×4). Надо вычислить среднее расстояние по m ближайшим соседям для каждой точки. Т.е. если m=3 , нужно выбрать трёх ближайших соседей, сложить расстояния до них и поделить на три. Затем отсортировать полученные значения по возрастанию и построить график.
import pandas as pd df = pd.read_csv('quake_clear.csv') df.head()
PS Данные (CSV файл) можно скачать отсюда
Отслеживать
12.5k 7 7 золотых знаков 18 18 серебряных знаков 48 48 бронзовых знаков
задан 11 июл 2018 в 9:04
119 1 1 серебряный знак 9 9 бронзовых знаков
11 июл 2018 в 9:08
Добавил скрин. просто я новичок, пока не знаю как генерировать код здесь(
11 июл 2018 в 9:27
Вставьте код в вопрос, выделите его и нажмите <> на панели инструментов.
11 июл 2018 в 10:13
Спасибо за подсказку! но почему у меня не выводит результат?
11 июл 2018 в 10:33
@ArmanHakobyan, OK, со входными данными разобрались, теперь осталось понять что вы хотите получить. Вы хотите сгруппировать точки в кластеры?
11 июл 2018 в 11:04
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
если я правильно понял задачу.
import pandas as pd import numpy as np from sklearn.metrics.pairwise import pairwise_distances df = pd.read_csv(r'C:\download\quake_clear.csv').dropna(how='all') # pairwise distance for all points d = pairwise_distances(df[['Latitude','Longitude']]) # ignore distance to itself d[d==0] = np.inf # compute the average distance to 3 nearest neighbours y = np.sort(d, axis=1)[:, :3].mean(axis=1) # plot. plt.plot(range(len(y)), y)

Отслеживать
ответ дан 11 июл 2018 в 12:20
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
да да, это то что нужно было, я все понял! Спасибо огромное!!
11 июл 2018 в 12:42
Если это учебное задание, то самому запрограммировать, как это указано выше — пожалуй самый лучший путь к знаниям. А вот если вы используете этот метод для решения какой-либо реальной задачи, то я бы все-таки рекомендовал к использованию KNeighborsClassifier из scikit-learn.
Подключается вот так:
from sklearn.neighbors import KNeighborsClassifier
Там и метрики можно выбрать, и оптимизировать скорость поиска решения и подобрать разные расстояния для параметров — в общем все, что может потребоваться для работы.
Как правильно вычислить среднее значение?


Средняя зарплата… Средняя продолжительность жизни… Практически каждый день мы с вами слышим эти словосочетания, используемые для описания множества одним единственным числом. Но как ни странно, «среднее значение» — достаточно коварное понятие, часто вводящее в заблуждение обычного, неискушенного в математической статистике, человека.
В чем проблема?
Под средним значением чаще всего подразумевается среднее арифметическое, которое очень сильно варьируется под воздействием единичных фактов или событий. И вы не получите реального представления о том, как именно распределены значения, которые вы изучаете.
Давайте обратимся к классическому примеру со средней зарплатой.
В какой-то абстрактной компании работает десять сотрудников. Девять из них получают зарплату около 50 000 рублей, а один 1 500 000 рублей (по странному совпадению он же является генеральным директором этой компании).

Средним значением в данном случае будет 195 150 рублей, что согласитесь, неправильно.
Какие способы вычисления среднего бывают?
Первым способом является вычисление уже упомянутого среднего арифметического, являющегося суммой всех значений, деленной на их количество.
- x – среднее арифметическое;
- xn – конкретное значение;
- n – количество значений .
- Хорошо работает при нормальном распределении значений в выборке;
- Легко вычислить;
- Интуитивно понятно.
- Не дает реального представления о распределении значений;
- Неустойчивая величина легко поддающаяся выбросам (как в случае с генеральным директором).
Вторым способом является вычисление моды, то есть наиболее часто встречающегося значения.

- M0 – мода;
- x0 – нижняя граница интервала, который содержит моду;
- n – величина интервала;
- fm– частота (сколько раз в ряду встречается то или иное значение);
- fm-1 – частота интервала предшествующего модальному;
- fm+1 – частота интервала следующего за модальным.
- Прекрасно подходит для получения представления об общественном мнении;
- Хорошо подходит для нечисловых данных (цвета сезона, хиты продаж, рейтинги);
- Проста для понимания.
- Моды может просто не быть (нет повторов);
- Мод может быть несколько (многомодальное распределение).
Третий способ — это вычисление медианы, то есть значения, которое делит упорядоченную выборку на две половины и находится между ними. А если такого значения нет, то за медиану принимается среднее арифметическое между границами половин выборки.

- Me – медиана;
- x0 – нижняя граница интервала, который содержит медиану;
- h – величина интервала;
- f i – частота (сколько раз в ряду встречается то или иное значение);
- Sm-1 – сумма частот интервалов предшествующих медианному;
- fm – число значений в медианном интервале (его частота).
- Дает самую реалистичную и репрезентативную оценку;
- Устойчива к выбросам.
- Сложнее вычислить, так как перед вычислением выборку нужно упорядочить.
Мы рассмотрели основные методы нахождения среднего значения, называющиеся мерами центральной тенденции (на самом деле их больше, но это наиболее популярные).
А теперь давайте вернемся к нашему примеру и посчитаем все три варианта среднего при помощи специальных функций Excel:
- СРЗНАЧ(число1;[число2];…) — функция для определения среднего арифметического;
- МОДА.ОДН(число1;[число2];. ) — функция моды (в более старых версиях Excel использовалась МОДА(число1;[число2];. ) );
- МЕДИАНА(число1;[число2];. ) — функция для поиска медианы.
И вот какие значения у нас получились:

В данном случае мода и медиана гораздо лучше характеризуют среднюю зарплату в компании.
Но что делать, когда в выборке не 10 значений, как в примере, а миллионы? В Excel это не посчитать, а вот в базе данных где хранятся ваши данные, без проблем.
Вычисляем среднее арифметическое на SQL
Тут все достаточно просто, так как в SQL предусмотрена специальная агрегатная функция AVG .
И чтобы ее использовать достаточно написать вот такой запрос:
/* Здесь и далее salary - столбец с зарплатами, а employees - таблица сотрудников в нашей базе данных */ SELECT AVG(salary) AS 'Средняя зарплата' FROM employees
Вычисляем моду на SQL
В SQL нет отдельной функции для нахождения моды, но ее легко и быстро можно написать самостоятельно. Для этого нам необходимо узнать, какая из зарплат чаще всего повторяется и выбрать наиболее популярную.
/* WITH TIES необходимо добавлять к TOP() если множество многомодально, то есть у множества несколько мод */ SELECT TOP(1) WITH TIES salary AS 'Мода зарплаты' FROM employees GROUP BY salary ORDER BY COUNT(*) DESC
Вычисляем медиану на SQL
Как и в случае с модой, в SQL нет встроенной функции для вычисления медианы, зато есть универсальная функция для вычисления процентилей PERCENTILE_CONT .
Выглядит все это так:
/* В данном случае процентиль 0.5 и будет являться медианой */ SELECT TOP(1) PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary) OVER() AS 'Медианная зарплата' FROM employees
Подробнее о работе функции PERCENTILE_CONT лучше почитать в справке Microsoft и Google BigQuery.
Какой способ все-таки использовать?
Из сказанного выше следует, что медиана лучший способ для вычисления среднего значения.
Но это не всегда так. Если вы работаете со средним, то остерегайтесь многомодального распределения:

На графике представлено бимодальное распределение с двумя пиками. Такая ситуация может возникнуть, например, при голосовании на выборах.
В данном случае среднее арифметическое и медиана — это значения, находящиеся где-то посередине и они ничего не скажут о том, что происходит на самом деле и лучше сразу признать, что вы имеете дело с бимодальным распределением, сообщив о двух модах.
А еще лучше разделить выборку на две группы и собрать статистические данные для каждой.
Вывод:
При выборе метода нахождения среднего нужно учитывать наличие выбросов, а также нормальность распределения значений в выборке.
Окончательный выбор меры центральной тенденции всегда лежит на аналитике.
Полезные ссылки:
- SQL и теория вероятностей (YouTube)
- Анализ нормальности распределения данных (YouTube)
- Меры центральной тенденции