SymPy定积分中的ZeroDivisionError;变量积分界

时间:2020-04-16 22:01:30

标签: python julia sympy integral

我正在使用Julia并调用SymPy在其两个变量an上集成一个双变量正态PDF。我想在集成范围内包含第三个变量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))

用常数1代替p:

integrate(a*f(a,n), (n, -oo, a), (a, -oo, oo))

1 个答案:

答案 0 :(得分:1)

定义sigma和rho后,我得到:

julia> integrate(a*f(a,n), (n, -oo, p*a), (a, -oo, oo)) |> string
"0.159154943091895*Integral(a*exp(-a^2/(-2*ρ^2*σ^2 + 2*σ^2))*Integral(exp(-n^2/(-2*ρ^2*σ^2 + 2*σ^2))*exp(2*a*n*ρ/(-2*ρ^2*σ^2 + 2*σ^2)), (n, -oo, a*p)), (a, -oo, oo))/(σ^2*sqrt(-(ρ - 1)*(ρ + 1)))"

也许是您的sympy版本,

julia> sympy.__version__
"1.5.1"
相关问题