什么数学方法适用于插值2d到2d函数?

6

那么我们有一个矩阵,如下所示:

12,32
24,12
...

长度为2xN,另一个

44,32
44,19
...

给定长度为2xN的两个矩阵,其中有一个函数f(x, y)返回z[1]和z[2]。我们所给出的这两个矩阵代表了已知的x、y和z[1]、z[2]值对。在这种情况下,需要使用插值公式来帮助解决问题。


你是否正在寻找类似于二元函数的多项式插值? - amit
但是那个函数必须返回2个变量... - Rella
你可以尝试使用复数来完成它。 - starblue
1个回答

4
如果您解决了一个返回值的问题,您可以通过插值找到两个函数f_1(x,y)f_2(x,y),并将它们组合成函数f(x, y) = [f_1(x,y), f_2(x,y)]。只需选择适合您问题的任何方法来解决插值函数即可。
对于实际的二维插值问题,有很多方法可以处理。如果您需要简单的方法,可以选择线性插值。如果您可以接受分段函数,可以选择贝塞尔曲线或样条。或者,如果数据是均匀的,您可以使用简单的多项式插值(在二维情况下并不完全简单,但足够容易)。

编辑:更多信息和一些链接。

可以使用双线性插值(维基百科)进行分段解决方案。

对于多项式插值,如果您的数据在网格上,可以使用以下算法(我找不到参考资料,这是我记忆中的)。

如果数据点在kl网格上,请将多项式重写如下:

f(x,y) = cx_1(x)*y^(k-1) + cx_2(x)*y^(k-2) + ... + cx_k(x)

在这里,每个系数cx_i(x)也是一个次数为l的多项式。第一步是通过插值网格的每一行或每一列来找到k个次数为l的多项式。完成后,您将有l个系数集(或者说l个多项式)作为cx_i(x)多项式的插值点,如cx_i(x0)cx_i(x1),...,cx_i(xl)(总共给出了l*k个点)。现在,您可以使用上述常数作为插值点来确定这些多项式,这将给出您的结果f(x,y)
贝塞尔曲线或样条曲线也使用相同的方法。唯一的区别是您使用控制点而不是多项式系数。首先获得一组将生成数据点的样条曲线,然后插值这些中间曲线的控制点以获取曲面曲线的控制点。
让我举一个例子来阐明上述算法。假设有以下数据点:
0,0 => 1
0,1 => 2
1,0 => 3
1,1 => 4

我们首先拟合两个多项式:一个用于数据点 (0,0) 和 (0,1),另一个用于 (1,0) 和 (1,1)。
f_0(x) = x + 1
f_1(x) = x + 3

现在,我们反向插值以确定系数。当我们垂直读取这些多项式系数时,我们需要两个多项式。一个在0和1处都评估为1;另一个在0处评估为1,在1处评估为3:
cy_1(y) = 1
cy_2(y) = 2*y + 1

如果将它们组合成f(x,y),我们得到:

f(x,y) = cy_1(y)*x + cy_2(y)
       = 1*x + (2*y + 1)*1
       = x + 2*y + 1

你能解释一下(或提供相关说明),你所提到的方法如何适用于二维信息吗? - amit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接