【问题标题】:Scipy laplace scalingScipy 拉普拉斯比例缩放
【发布时间】:2020-10-26 18:27:18
【问题描述】:

我想检查scipy.ndimagelaplace 过滤器的计算,并将其与我自己的方法进行比较,如果有差异。下面是我运行的一段代码

import scipy.ndimage.filters
n = 100
x_range = y_range = np.linspace(-1, 1, n)
X, Y = np.meshgrid(x_range, y_range)

f_fun = X ** 2 + Y ** 2
f_fun_laplace = 4 * np.ones(f_fun.shape)
res_laplace = scipy.ndimage.filters.laplace(f_fun, mode='constant')

我希望变量res_laplace 在整个域上具有4 的常量值(为简单起见,不包括边界),因为这是通过将拉普拉斯运算符应用于我的函数f(x,y) = x^2 + y^2 得到的.

但是,在这种情况下,res_laplace 产生的值是0.00163。所以我的问题是.. 为什么这不等于 4?

【问题讨论】:

  • 不确定您说您有分析解决方案是什么意思?
  • 啊抱歉,我的意思是,对于给定的函数f_fun,我应该看到一个恒定的解 4。但是我看到的值是 0.01666 或类似的值,这取决于n

标签: scipy


【解决方案1】:

在这种特定情况下,答案是您需要将scipy.ndimage.filters.laplace 的输出乘以系数(1/delta_x) ** 2。在哪里delta_x = np.diff(x_range)[0]

我只是假设过滤器会处理这个问题,但事后看来,它当然无法知道 delta_x 的值。 由于我们进行了两次微分,因此我们需要将这个 delta_x 的逆平方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2011-11-18
    • 2011-04-28
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多