-1

我对图像函数 I(x,y) 的二次推导有疑问。第一个推导是: I_x(x,y) = I(x+1,y) - I(x,y)I_y(x,y) = I(x,y+1) - I(x,y)

但是当我再次尝试I_x在 x 方向推导时,我得到了这个: I_xx(x,y) = I(x+2,y) - 2*I(x+1,y) + I(x,y),但正确的答案似乎是这个:I_xx(x,y) = I(x+1,y) + I(x-1,y) -2*I(x,y)。我的错误在哪里?有人可以解释一下吗?

4

1 回答 1

0

您的问题的答案可以在以下示例中看到。在“正确”答案中,x 处的二阶导数以点 x 为中心。在您的答案中,二阶导数以点 x+1 为中心。在许多应用程序中尽可能多地排列衍生产品是件好事。从某种意义上说,您拥有正确的答案以及“正确”的答案。这是一个定义你的对齐和保持一致的问题。给定一个数组(让我们暂时使用基于 1 的数组)

    x(1), x(2), x(3), x(4), x(5), x(6)
x = [3,    2,    1,    8,    9,    4]

一阶导数是

     x'(1), x'(2), x'(3), x'(4), x'(5)
f'(x)  = [3-2,   2-1,   1-8,   8-9,   9-4]

请注意,x' 比 x 少一个元素。如果我们对边界条件做出假设,我们可以绕过这个问题,目前我们不会这样做。

二阶导数是

x'(1)-x'(2), x'(2)-x'(3), x'(3)-x'(4), x'(4)-x'(5)

我们只有 4 个点具有有效的二阶导数。在计算二阶导数的方式中,您简单地将一阶二阶导数设为 x''(1)。通过这种方式,我们得到如下标签:

        x''(1),      x''(2),      x''(3),     x''(4),
x''=[(3-2)-(2-1), (2-1)-(1-8), (1-8)-(8-9), (8-9)-(9-4)]

一般来说,您提出的二阶导数可以写成:

x''(p) = x(p+2)-2*x(p+1)+x(p)

在您的二阶导数中,有效索引取值 1..4 您没有定义 x''(5) 因为这需要 x(5+2)-2*x(5+1)+x(5) 和原始数组只有 6 个元素,因此 x(7) 未定义。

另一种用二阶导数居中并对齐的方法来标记点,使得 n 阶二阶导数以原始数组中的第 n 个点为中心,如下所示:

        x''(2),      x''(3),      x''(4),     x''(5),
x''=[(3-2)-(2-1), (2-1)-(1-8), (1-8)-(8-9), (8-9)-(9-4)]

一般来说,这可以写成:

x''(p) = x(p+1)-2*x(p)+x(p-1)

请注意,此二阶导数有效索引在 2..5 范围内。在这种情况下,未定义 x''(1),因为这需要 x(1+1)-2*x(1)+x(1-1 ) 和原始数组,因为我们有基于 1 的数组在 x(0) 处没有值。

在这两种情况下,形式是相同的。只是您以不同的方式标记点。

奇数导数我们不能以有限差分中的点为中心,而偶数导数我们可以居中以对下游计算进行更直观的对齐。

于 2013-11-08T14:27:44.163 回答