我需要使用 ctypes 函数来减少 python 中 quad 的运行时间。这是我最初的问题original question,但现在我知道我需要遵循什么路径。我需要按照与此处类似问题链接中相同的步骤进行操作。
但是,在我的情况下,将在数值积分中处理的函数是调用另一个 python 函数。像这样:
from sklearn.neighbors import KernelDensity
import numpy as np
funcA = lambda x: np.exp(kde_bad.score_samples([[x]]))
quad(funcA, 0, cut_off)
其中 cut_off 只是我在代码中决定的一个标量,而 kde_bad 是使用 KernelDensity 创建的内核对象。
所以我的问题是我需要如何在 C 中指定函数?相当于:
//testlib.c
double f(int n, double args[n])
{
return args[0] - args[1] * args[2]; //corresponds to x0 - x1 * x2
}
任何输入表示赞赏!