Задача — вычислить асимметрию (скьюнесс) множества чисел {h_l, ..., h_r} по формуле, где обычно берут центральный момент III и нормировку на σ^3:
- μ = среднее арифметическое: μ = (1/n) Σ_{i=l}^r h_i
- σ^2 = (1/n) Σ_{i=l}^r (h_i − μ)^2
- σ = sqrt(σ^2)
- асимметрия (скьюнесс) A = γ1 = [(1/n) Σ_{i=l}^r (h_i − μ)^3] / σ^3
Замечание: если σ = 0 (все значения равны), асимметрия не может быть определена (задаётся как ноль или не определено в зависимости от условий задачи). В обычной практике используется именно population-variance (деление на n). Если же задача требует sample-variance (деление на n−1), формула для A изменится, и также может потребоваться поправка Броуна (но в большинстве школьных задач берут population-подход, как в примере μ = 3.8 и σ^2 = 6.16).
Пошаговый план решения
- Собери все значения h_l, h_{l+1}, ..., h_r. Пусть n = r − l + 1.
- Найди μ = (h_l + h_{l+1} + ... + h_r) / n.
- Найди σ^2 = (1/n) Σ (h_i − μ)^2 и σ = sqrt(σ^2).
- Найди m3 = (1/n) Σ (h_i − μ)^3.
- Найди A = m3 / (σ^3).
- Выведи A. Если σ = 0, скажи, что асимметрия не определена (или равна 0 по условию).
Пример (для иллюстрации, данные произвольные) Пусть h = [2, 4, 3, 5, 3], т.е. n = 5.
- μ = (2+4+3+5+3)/5 = 17/5 = 3.4
- Σ (h_i − μ)^2 = 1.96 + 0.36 + 0.16 + 2.56 + 0.16 = 5.20 σ^2 = 5.20/5 = 1.04, σ ≈ 1.0199
- Σ (h_i − μ)^3 = (−1.4)^3 + (0.6)^3 + (−0.4)^3 + (1.6)^3 + (−0.4)^3 = −2.744 + 0.216 − 0.064 + 4.096 − 0.064 = 1.44 m3 = 1.44/5 = 0.288
- A = m3 / σ^3 ≈ 0.288 / (1.0199^3) ≈ 0.288 / 1.0617 ≈ 0.271
Таким образом,Skewness ≈ 0.27 (положительная асимметрия).
Как посчитать на практике
- Введите все значения h_l ... h_r, затем выполните вычисления по шагам выше.
- Если вы хотите, могу посчитать конкретную асимметрию по вашим данным — пришлите сами значения или диапазон индексов и сами числа.
Коды-цепочки (для удобства написания)
- Python (одна функция):
def skewness(arr): n = len(arr) if n == 0: return None mu = sum(arr) / n var = sum((x - mu) ** 2 for x in arr) / n if var == 0: return 0.0 # или None, в зависимости от требований s = var ** 0.5 m3 = sum((x - mu) ** 3 for x in arr) / n return m3 / (s ** 3)
- C++ (краткая версия):
#include <bits/stdc++.h> using namespace std;
double skewness(const vector
Основные моменты
- Формула приведена для стандартного определения skewness через центральные моменты.
- В примере в задаче дано μ и σ^2, но без самих значений h_i нельзя точно посчитать A — нужны сами данные или хотя бы сумма (h_i − μ)^3.
- Если хотите, пришлите числа h_l, h_{l+1}, ..., h_r (или просто диапазон и сами значения), и я посчитаю асимметрию для вашего набора.
Готов подобрать решение под ваши данные: пришлите числа h_l, ..., h_r или укажите l и r и сами значения высот домов.