【问题标题】:Interpolating between Functions [duplicate]在函数之间插值
【发布时间】:2012-08-13 19:13:55
【问题描述】:

可能重复:
Interpolation over an array (or two)

我有一组包含二维函数点的 CSV 文件...换句话说,我有四个 CSV 文件,每个文件都是在不同 y 值下评估函数 f(x, y) 的结果。我需要在这些数据之间进行插值,以便可以为某个 x 和 y 计算任意 f。 CSV 文件具有不同的长度和 x 值。有谁知道用于此任务的 Java 库或算法?线性插值可以,样条插值也可以。

谢谢,
吃肉

【问题讨论】:

  • 所以这些代表了 f(x,y) = (u,v) 的评估?

标签: java math interpolation


【解决方案1】:

好的,首先我假设“CSV”位无关紧要,假设您已将它们读入内存并将它们合并在一起(它们是同一函数的值,对吧?)。现在,您有一组 f(x,y) 值,用于不同的 (x,y) 对,并希望在它们之间进行插值。到目前为止还好吗?

如果您坚持使用线性插值,仍然存在要考虑多少点的问题,这取决于测量中的噪声水平。在最简单的情况下,我们将只使用三个最近的点来识别它们所在的平面,并使用它来找到相关点的值。除了向量加法、减法、叉积和点积之外,此选项既不需要库也不需要算法。

更复杂的解决方案通常需要某种拟合,例如(加权)least squares.

【讨论】:

    【解决方案2】:

    最简单的功能是找到最近的点并使用线性插值。例如选择三个最近点中的两个并对其进行插值。

    或者您可以根据距离进行加权平均。或者你可以选择一个接近点,然后在最近点的“另一边”找到点来改进插值。

    【讨论】:

    • CSV 文件之间的 x 值不同,因此可能存在大量错误。
    • 哦,你是说我应该有效地平均每个相邻 CSV 文件之间的 x 和 y 值并重复直到我有足够的分辨率?
    • 我的工作日结束了,所以我要退出了。明天美国东部标准时间上午 10:00,我将能够回答任何进一步的问题。谢谢。
    • 应该包含多少点取决于拓扑的形状。
    • 如果x的值是唯一的,你可以尝试查找前后的x,并根据距离进行插值。
    【解决方案3】:

    Lagrange interpolation 会简单而准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      • 2017-12-14
      相关资源
      最近更新 更多