# -*- coding: utf-8 -*-
# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 2
#     language: python2
#     name: python2
# ---

# n-мерное нормальное распределение имеет вид:
#
# $p(x) = \frac{1}{\sqrt{(2\pi)^n|\Sigma|}}exp(-\frac{(x-\mu)^T\Sigma^{-1}(x-\mu)}{2})$, где
#
# $\mu_i = Ex_i$
#
# $\Sigma_{ij} = E(x_i - \mu_i)(x_j-\mu_j) = Ex_ix_j - \mu_i\mu_j$, $\Sigma = Exx^T - \mu\mu^T$

# В непрервыном случае энтропия считается, как
#
# $Entropy = \int_{R} -p(x)ln(p(x))dx = - Eln(\frac{1}{\sqrt{(2\pi)^n|\Sigma|}}) + E\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu) = \frac{1}{2}ln((2\pi)^n|\Sigma|) + \frac{1}{2}E(x-\mu)^T\Sigma^{-1}(x-\mu)$
#
#
# Найдём $E(x-\mu)^T\Sigma^{-1}(x-\mu)$:
#
# $E(x-\mu)^T\Sigma^{-1}(x-\mu) = Ex^T\Sigma^{-1} x - Ex^T\Sigma^{-1}\mu - E\mu^T\Sigma^{-1} x + \mu^T\Sigma^{-1}\mu = Ex^T\Sigma^{-1} x - \mu^T\Sigma^{-1}\mu$

# Под знаком матожидания стоит число (матрица 1x1), значит:
#
# $Ex^T\Sigma^{-1} x - \mu^T\Sigma^{-1}\mu = E(trace(x^T\Sigma^{-1}x) - trace(\mu^T\Sigma^{-1}\mu) = trace(\Sigma^{-1}xx^T)
# - trace(\Sigma^{-1}\mu\mu^T) =\\= trace(\Sigma^{-1}(Exx^T - \mu\mu^T)) = trace(\Sigma^{-1}\Sigma) = trace(I) = n$

# $Entropy = \frac{1}{2}(ln((2\pi)^n|\Sigma|) + n) = \frac{1}{2}ln((2\pi e)^n|\Sigma|)$, что и требовалось доказать.

StarcoderdataJupyterScriptsDedupFiltered