使用Quadpy集成时出现问题

时间:2020-03-28 18:43:53

标签: python scipy numerical-integration quad

我想使用SELECT gs.ts, count(t1.started) FROM generate_series('2020-01-03'::timestamp, '2020-01-08'::timestamp, '1 day'::interval) gs (ts) LEFT JOIN tab_1 t1 ON t1.started <= gs.ts AND (t1.ended IS NULL OR t1.ended > gs.ts) GROUP BY gs.ts ORDER BY gs.ts; ,因为我想对2D积分进行2D数值矢量积分。为了了解quadpy的运行速度,我想对其进行测试并将其与quadpy一维矢量积分进行比较。因此,我编写了一个简单的代码:

scipy

没有使用Quadpy的经验,出现以下错误:

import numpy as np
from scipy import integrate
from scipy.special import erf
from scipy.special import j0
import quadpy

q = np.linspace(0.03, 1.0, 500)


def f(t):
    return t * 0.5 * (erf((t - 40) / 3) - 1) * j0(q * t)


y, _ = integrate.quad_vec(f, 0, 50)
y1, _ = quadpy.quad(f, 0, 50)

print(y)
print(y1)

1 个答案:

答案 0 :(得分:1)

您缺少一个multiply.outer

import numpy as np
from scipy import integrate
from scipy.special import erf
from scipy.special import j0
import quadpy

q = np.linspace(0.03, 1.0, 500)


def f(t):
    return t * 0.5 * (erf((t - 40) / 3) - 1) * j0(np.multiply.outer(q, t))


y, _ = integrate.quad_vec(f, 0, 50)
y1, _ = quadpy.quad(f, 0, 50)

print(y - y1)