Я использую Julia и вызываю SymPy для интеграции двумерного нормального PDF в две переменные, a
и n
. Есть третья переменная p
, которую я хочу включить в границы интеграции, но SymPy выдает ошибку ZeroDivisionError, когда я пытаюсь это сделать.
Выполнение следующего,
using SymPy
σ = 0.2
ρ = -0.9
f(a,n) = (1/(2*π*(σ^2)*sqrt(1-ρ^2)))*exp(-(1/(2*(1-ρ^2)))*((a^2)/σ^2 + (n^2)/σ^2 -((2*ρ*a*n)/σ^2)))
@vars a n p
integrate(a*f(a,n), (n, -oo, p*a), (a, -oo, oo))
Выход
ERROR: PyError ($(Expr(:escape, :(ccall(#= C:\Users\Anshu\.julia\packages\PyCall\zqDXB\src\pyfncall.jl:43 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'ZeroDivisionError'>
Странно, следующие попытки выполняются без проблем:
Просто интегрируем f, а не a * f:
integrate(f(a,n), (n, -oo, p*a), (a, -oo, oo))
Замена p на постоянную 1:
integrate(a*f(a,n), (n, -oo, a), (a, -oo, oo))