我想使用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)
答案 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)