如何开发数值程序来评估我自己的特殊功能?

计算科学 数值分析 特殊功能
2021-12-22 18:48:05

此问题之前已在此处发布到 Math.SE ,并且在此发布时尚未收到任何答案。

在执行计算工作时,我经常遇到一个单变量函数,它是根据积分或微分方程定义的,我想在指定的时间间隔内快速评估(例如,每秒数百万次)到给定的精度(例如,的一部分)。例如,函数 over区间出现在最近的一个项目中。现在碰巧这个积分可以用标准特殊函数(特别是)来评估,但假设我们有一个更复杂的函数,它没有这样的评价是众所周知的。有没有1010

f(α)=k=0eα2k2k+1 dk
α(0,10)Ei(z)erfi(z)我可以应用系统技术来开发自己的数值例程来评估这些函数吗?

我相信肯定有很多技术存在,因为基本上所有常见的特殊功能似乎都存在快速算法。但是,我强调我正在寻找的那种技术不应该依赖于具有某些特定结构的函数(例如像这样的递归关系或像 )。理想情况下,这种技术几乎适用于我遇到的任何(表现良好的)功能。Γ(n+1)=nΓ(n)Γ(z)Γ(1z)=πcsc(πz)

您可以理所当然地认为我确实有一些缓慢的方法来评估所需的函数(例如直接数值积分)到任何精度,并且我愿意使用慢速方法进行大量预处理工作以开发一种快速的方法。

1个回答

一般来说,您可以期望自定义算法对于您需要在各种范围内评估的每个特定特殊功能会更快 - 这就是为什么有这么多不同方法用于特定特殊功能的原因。对于所有可能的功能,通用方法可能不是最快的。

对于函数非常平滑的有限参数范围,您可以考虑以高精度计算值表,然后使用更高阶的插值方法对这些值进行插值。