gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:44:04 26 4
gpt4 key购买 nike

所以我们有一个像这样的矩阵

12,32
24,12
...

长度为 2xN 和另一个

44,32
44,19
...

长度为 2xN 并且有一些函数 f(x, y) 返回 z[1], z[2]。我们得到的 2 个矩阵代表 x、y 和 z[1]、z[2] 的已知值对。在这种情况下有什么帮助的插值公式?

最佳答案

如果解决一个返回值的问题,可以通过插值找到两个函数f_1(x,y)f_2(x,y),并组合您的函数为 f(x, y) = [f_1(x,y), f_2(x,y)]。只需选择适合您问题的任何方法来求解插值函数即可。

对于二维的实际插值问题,有很多方法可以处理。如果您需要简单,则可以使用线性插值。如果您可以使用分段函数,则可以使用贝塞尔曲线或样条曲线。或者,如果数据是均匀的,您可以使用简单的多项式插值(嗯,在 2D 中不是很简单,但足够简单)。

<小时/>

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

使用 Bilinear interpolation (wikipedia) 可以实现分段解决方案.

对于多项式插值,如果你的数据在网格上,你可以使用以下算法(我找不到它的引用,它是从内存中获得的)。

如果数据点位于 k by l 网格上,请按如下方式重写多项式:

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

这里,每个系数cx_i(x)也是一个l次数的多项式。第一步是通过对网格的每一行或每一列进行插值来找到 kl 次多项式。完成此操作后,您将拥有 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

现在,我们在另一个方向上插值来确定系数。当我们垂直读取这些多项式系数时,我们需要两个多项式。 1 在 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

关于math - 什么数学方法适用于 2d 到 2d 函数的插值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com