Ожидание продукта в python sympy

В python sympy у меня есть следующий код

from sympy.stats import P, E, variance, covariance, Normal

mu, sigma = symbols('mu sigma')
epsilon_t = Normal('epsilon_t', 0, sigma)
epsilon_t1 = Normal('epsilon_t+1', 0, sigma)

который определяет две (предположительно независимые) нормальные случайные величины. Теперь я ожидал, что

E(epsilon_t1*epsilon_t)

равен нулю, но когда я запускаю это через sympy, я получаю что-то намного более сложное. Он говорит мне, что это ноль для pi/2 > 2|larg(sigma)| и что-то гораздо более сложное в противном случае. Меня не волнует вторая часть, я просто хочу, чтобы она была нулевой. Как я могу это сделать?


person Daniel    schedule 04.02.2020    source источник


Ответы (1)


Если вы посмотрите на help(arg), вы получите полезную подсказку: arg(x) равно 0, если его x положителен. Поэтому, если вы определите свои параметры как положительные, а не как реальные, arg сможет оценить:

>>> mu, sigma = symbols('mu sigma',positive=True)
>>> epsilon_t = Normal('epsilon_t', 0, sigma)
>>> epsilon_t1 = Normal('epsilon_t+1', 0, sigma)
>>> E(epsilon_t*epsilon_t1)
0
person smichr    schedule 04.02.2020