这是我正在创建的地球物理分析程序。我已经有代码可以完成所有这些,但是我正在寻找灵感和想法(好数据架构和算法(。
我想建模的内容:
- 速度作为深度(z(的函数
- 该模型是由多层(< 10(建立的
- 每一层都可以通过一个从最高层到n的索引,最底层的索引
- 每个层都有速度作为深度的线性函数(梯度A_K和轴截距KTH层的B_K(
- 每一层都有顶部和底部深度(z_k-1和z_k(
- 模型已经完成,两层之间没有空间。两层之间的点直接属于下层
要求:
- 在模型中以任意深度获得速度。这将以1K至10K次的顺序进行,因此应进行优化。
- 访问图层索引的顶部和底部深度,梯度和截距
到目前为止我拥有的东西:
我有工作的python代码,其中每一层都被保存为一个具有Z_K(底部深度(,Z_K-1(顶部深度(的值的Numpy数组,A_K(速度梯度(和B_K(轴截距(。要在一定深度评估模型,我获得了层索引(,使用它来获取图层的参数并将其传递到评估线性速度梯度的函数。
因此,您具有分段线性依赖性,其中Z坐标端的末端不规则,并希望在给定的z处获得函数值。
请注意,对10件的二进制搜索没有意义(3-4轮BS可能比9个简单的比较慢(。
但是您的深度查询有什么精度?请注意,您可以存储1米分辨率和1毫米的表格 - 只有10^7个条目可提供O(1(访问任何预定的速度值
对于有限数量的零件,可以制作长度公式(涉及整数划分(,但结果也许应该较慢。
任意三件件具有边界点2和4.5的示例:
f = f0 + 0.2*int(z/2.0)*(z-2.0) + 0.03*int(z/4.5)*(z-4.5)