小编Sha*_*utt的帖子

实现这种二维数值积分的计算速度更快的方法是什么?

我对进行二维数值积分感兴趣。现在我正在使用scipy.integrate.dblquad但它非常慢。请参阅下面的代码。我的需要是用完全不同的参数评估这个积分 100 次。因此我想让处理尽可能快速和高效。代码是:

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

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

start = time.time()

def f(q, z, t):
    return t * 0.5 * (erf((t - z) / 3) - 1) * j0(q * t) * (1 / (np.sqrt(2 * np.pi) * 2)) * np.exp(
        -0.5 * ((z - 40) / 2) ** 2)


y = np.empty([len(q)])
for n in range(len(q)):
    y[n] = integrate.dblquad(lambda …
Run Code Online (Sandbox Code Playgroud)

python integration numpy scipy numerical-integration

5
推荐指数
1
解决办法
2322
查看次数

如何提高积分速度?

我有一个想要集成的函数:

def f(z, t, q):
    return t * 0.5 * (erf((t - z) / 3) - 1) * j0(q * t) * np.exp(-0.5 * ((z - 40) / 2) ** 2)
Run Code Online (Sandbox Code Playgroud)

我以这个函数为例来理解和展示不同集成方法之间的区别。根据通过该平台上的各种答案以及文档中获得的早期知识,我尝试了不同的方法来提高该功能的集成速度。我将在这里简要解释和比较它们:

1. 仅使用 python 和 scipy.quad:(需要 202.76 秒)

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

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

start = time.time()

def f(q, z, t):
    return t * 0.5 * (erf((t - z) / 3) …
Run Code Online (Sandbox Code Playgroud)

python performance numpy integrate scipy

5
推荐指数
1
解决办法
985
查看次数