标签: differentiation

在MATLAB中计算数值导数的最佳方法是什么?

(注意:这是一个社区Wiki.)

假设我有一组点xi = { x0,x1,x2,... xn }和相应的函数值fi = f(xi)= { f0,f1,f2,...,fn },其中f(x),一般来说,是一个未知的功能.(在某些情况下,我们可能提前知道f(x),但我们想要这样做,因为我们通常提前知道f(x).)什么是近似f的导数的好方法(x)在每个点xi也就是说,如何在每个点xi处估计dfi == d/d x fi == d f(xi)/ d x的值?

不幸的是,MATLAB没有一个非常好的通用数值微分程序.造成这种情况的部分原因可能是因为选择一个好的例程可能很困难!

那有什么样的方法呢?有哪些例程?我们如何为特定问题选择一个好的例行程序?

在选择如何区分MATLAB时,有几个注意事项:

  1. 你有一个象征性的功能或一组点吗?
  2. 你的网格是均匀的还是不均匀的?
  3. 您的域名是定期的吗?你能假设周期性边界条件吗?
  4. 您在寻找什么样的准确度?您是否需要在给定的容差范围内计算导数?
  5. 您的衍生产品是否与您定义的函数在相同的点上进行评估,这对您来说是否重要?
  6. 你需要计算多个衍生品订单吗?

什么是最好的方法?

matlab numerical-methods derivative differentiation

17
推荐指数
1
解决办法
2万
查看次数

Selenium Webdriver和Selenium Ghostdriver有什么区别?

我想知道Selenium Webdriver和Selenium Ghostdriver之间的区别.

我也很困惑为什么使用selenium Ghostdriver?

请给我一个简短的想法.

提前致谢.

java selenium differentiation selenium-webdriver ghostdriver

10
推荐指数
1
解决办法
4953
查看次数

C++中基于类型的模板函数

我想写一个故障安全访问的函数std::map.

在我的代码中的许多地方我想访问一个std::map按键,但是如果密钥不存在,我希望有一种默认值而不是异常(这是很多"无"的代码).

我写了这个基于模板的功能

template <typename T1, typename T2>
T2 mapGetByKey(std::map<T1, T2>& map, T1 key, T2 defaultValue={})
{
    auto it = map.find(key);

    if (it != map.end())
    {
        return it->second;
    }

    return defaultValue;
};
Run Code Online (Sandbox Code Playgroud)

它很棒.但对于std::map<int, const char*>我想要有不同的行为.所以我可以添加这个专业化:

template <typename T1>
const char* mapGetByKey(std::map<T1, const char*>& map, T1 key, const char* defaultValue="")
{
    auto it = map.find(key);

    if (it != map.end())
    {
        return it->second;
    }

    return defaultValue;
};
Run Code Online (Sandbox Code Playgroud)

它也有效.但我认为这只是一个案例的代码.

有没有人知道如何保存行而不设置defaultValue来""进行调用std::map<int, const char*>

有没有办法在编译时区分类型,可能有一些 …

c++ templates specialization differentiation

7
推荐指数
1
解决办法
105
查看次数

什么是可微分编程?

Swift for Tensorflow项目的Swift 中添加了对差分编程的本机支持。Julia 与Zygote类似。

什么是可微分编程?

这些程序可以在整个过程中有所不同

但是,这是什么意思?

  • 人们将如何使用它(例如一个简单的例子)?
  • 以及它与自动微分有何关系(这两者在很多时候似乎混为一谈)?

language-agnostic automatic-differentiation differentiation

7
推荐指数
1
解决办法
656
查看次数

我如何获得函数的衍生物?

如何获得以下功能的衍生物?

g <- expression(x^2)
derivg <- D(g, 'x')
derivg
# 2 * x
g1 <- derivg(2)
# Error: could not find function "derivg"
Run Code Online (Sandbox Code Playgroud)

我想在x = 2处找到导数.

r derivative differentiation

6
推荐指数
1
解决办法
654
查看次数

在 Python 中自动比较 Winmerge

我需要一个助手在 python 中对两个表之间的比较进行编码,目前在 winmerge 中完成。

代码如下

import pandas as pd
Run Code Online (Sandbox Code Playgroud)

上周的表

df1=pd.read_csv(r"C:\Users\ri0a\OneDrive - Department of Environment, Land, Water and Planning\Python practice\pvmodules+_210326.csv")
Run Code Online (Sandbox Code Playgroud)

带有新型号和到期日期的本周表

df2=pd.read_csv(r"C:\Users\ri0a\OneDrive - Department of Environment, Land, Water and Planning\Python practice\pvmodules+_210401.csv")
Run Code Online (Sandbox Code Playgroud)

表头如下

在此处输入图片说明

第三列是 PV_module 证书:到期日期。我想设置一个类似于 excel 逻辑 '=IF (D2<DATEVALUE("19/04/2021"),"Expired","OK 的逻辑。这里的目标是删除到期日期低于的整个行特定日期/今天的日期。

接下来,导入dataframe_diff包

from dataframe_diff import dataframe_diff
Run Code Online (Sandbox Code Playgroud)

执行差异

d1_column,d2_additional=dataframe_diff(df1,df2,key=['PV Module Certificate: Licensee/Certificate Holder Account','Model Number/s'])
Run Code Online (Sandbox Code Playgroud)

使用此包 d2_additional 显示与上周相比,本周是否添加了与型号相关的新行。 在此处输入图片说明

但是,我正在尝试复制以下输出

在此处输入图片说明

涉及的任务是

  1. 如果某个模型(在本例中为一行)包含在上周的表中,但在当前周的表中缺失,我想在它旁边的新列“状态”中分配一个新字段“过期”。/或创建一个新的数据框 d2_expires,仅来自那些丢失的行。
  2. 另一个数据框,其中上周丢失但本周添加的行或产品模型仍然......作为 d2_additional。
  3. 第三个数据帧,其中相同行(相同证书 + 相同型号但不同的新到期日期)的任何更改(例如到期日期)被捕获为 d3_comparison。

请帮助我解决这个问题。

提前致谢。

现在:与

d2_expires = merged_df[merged_df._merge == 'left_only']
Run Code Online (Sandbox Code Playgroud)

d2_additional = merged_df[merged_df._merge == …
Run Code Online (Sandbox Code Playgroud)

python compare numpy dataframe differentiation

6
推荐指数
1
解决办法
164
查看次数

防止衍生产品的重新排序?

最近一篇关于Wolfram博客的文章提供了以下函数,以更传统的方式格式化衍生品.

pdConv[f_] := 
 TraditionalForm[
  f /. Derivative[inds__][g_][vars__] :> 
    Apply[Defer[D[g[vars], ##]] &, 
     Transpose[{{vars}, {inds}}] /. {{var_, 0} :> 
        Sequence[], {var_, 1} :> {var}}]
 ]
Run Code Online (Sandbox Code Playgroud)

一个示例用途,Dt[d[x, a]] // pdConv给出:

在此输入图像描述

如果不打破一般功能pdConv,有人可以改变它来维持给定的变量顺序,产生如下所示的输出吗?(当然这纯粹是出于个人原因,使得人类可以更容易地进行推导)

在此输入图像描述

我怀疑这将是非常重要的 - 除非有人知道一个Global可以暂时覆盖的魔法选项Block.

对于它的价值,这些SO问题可能是相关的:

wolfram-mathematica typesetting differentiation

5
推荐指数
1
解决办法
377
查看次数

OpenCV入侵检测

对于我的项目,我需要处理与OpenCV的图像差异.目标是检测区域中的入侵.

为了更清楚一点,这里有输入和输出:

输入:

  • 参考图像
  • 从大致相同的角度看第二张图像(可能是误差范围)

输出:

  • 检测场景中的新对象.

奖金:

  • 识别那些物体.

对我来说,最困难的部分是消除小差异(光度,相机位置边距误差,树木移动......)

我已经阅读了很多关于OpenCV图像处理(减法,侵蚀,阈值,SIFT,SURF ......)并且有一些好的结果.

我想要的是你认为最好有一个良好检测的步骤列表(人类,汽车......),以及执行每一步的算法.

非常感谢您的帮助.

opencv image-processing differentiation

5
推荐指数
1
解决办法
2780
查看次数

numpy.gradient 的非均匀间距

我不确定在使用 numpy.gradient 时如何指定非均匀间距。

这是 y = x**2 的一些示例代码。

import numpy as np
import matplotlib.pyplot as plt

x = [0.0, 2.0, 4.0, 8.0, 16.0]
y = [0.0, 4.0, 16.0, 64.0, 256.0]
dydx = [0.0, 4.0, 8.0, 16.0, 32.0] # analytical solution

spacing = [0.0, 2.0, 2.0, 4.0, 8.0] #added a zero at the start to get length matching up with y

m = np.gradient(y, spacing)

plt.plot(x, y, 'bo',
         x, dydx, 'r-', #analytical solution
         x, m, 'ro')    #calculated solution
plt.show()
Run Code Online (Sandbox Code Playgroud)

间距数组的长度总是比我想计算梯度的数组少一。添加零以使长度匹配(如在上面的示例代码中)给出了错误的答案,一个点的梯度是无限的。

我无法理解/遵循非均匀间距的 …

python numpy derivative differentiation

5
推荐指数
1
解决办法
2640
查看次数

如何找到我的层中的不可微操作?

我正在尝试创建一个相当复杂的 lambda 层,其中包含 keras 中的许多操作。我实施后,得到了一个ValueError: No gradients provided for any variable.

虽然我仅使用 keras 操作来转换数据(除了我使用 numpy 创建的常量,稍后将其添加到张量中),但我知道一定存在一些不可微分的操作。现在我想知道如何找出它是哪一个,这样我就可以找到解决方法。

我还不想发布任何代码,因为它是竞赛的一部分,我想自己解决这个问题。如果因此难以理解我的问题,请告诉我。不过,我可以列出我正在使用的所有功能:

from tensorflow.keras import backend as K
from tensorflow.python.keras.layers import Lambda

...
def my_lambda_function(x):
    # uses:
    K.batch_dot
    K.cast
    K.clip
    K.concatenate
    K.one_hot
    K.reshape
    K.sum
    K.tile  # only applied to a constant created in numpy

...
# using the function in a model like this:
my_lambda_layer = Lambda(my_lambda_function)
result_tensor = my_lambda_layer(some_input)

Run Code Online (Sandbox Code Playgroud)

我认为 K.one_hot 可能有问题,但在尝试使其可微分之前,我想要一种方法来确定这一点

python differentiation keras tensorflow keras-layer

5
推荐指数
1
解决办法
912
查看次数