构造与函数或其他数组成比例的数组间距

Dil*_*rix 5 python algorithm numeric numerical-methods

我有一个函数(f:黑线),它在一个特定的小区域(衍生f':蓝线和二阶导数f'':红线)中急剧变化.我想以数字方式集成这个函数,如果我均匀地分配点(在对数空间中),我会在急剧变化的区域(图中附近)2E15中出现相当大的误差.

如何构造一个数组间距,以便在二阶导数较大的区域(即与二阶导数成比例的采样频率)中进行非常好的采样?

我碰巧使用python,但我对一般算法很感兴趣.


编辑:
1)能够仍然控制采样点的数量(至少大致)是很好的.
2)我已经考虑过构造一个像二阶导数一样的概率分布函数并从中随机抽取 - 但我认为这会提供较差的收敛性,而且一般来说,似乎更确定的方法应该是可行的.

在此输入图像描述

Ale*_*lex 2

假设f''是 a NumPy array,您可以执行以下操作

# Scale these deltas as you see fit
deltas = 1/f''
domain = deltas.cumsum()
Run Code Online (Sandbox Code Playgroud)

为了仅考虑数量级波动,可以调整如下......

deltas = 1/(-np.log10(1/f''))
Run Code Online (Sandbox Code Playgroud)