精华内容
下载资源
问答
  • 优化算法笔记02:差分近似导数

    千次阅读 2018-10-07 17:15:58
    在优化问题中,有时会用有限差分法近似目标函数的Hessian矩阵,下面介绍这一方法。   如果函数的自变量是一个向量,那么根据函数值的类型,有: 标量的导数是向量,标量的偏导数是标量; 向量的导数是矩阵,...

    在优化问题中,有时会用有限差分法近似求目标函数的Hessian矩阵,下面介绍这一方法。

     

    如果函数的自变量是一个向量,那么根据函数值的类型,有:

    标量的导数是向量,标量的偏导数是标量;

    向量的导数是矩阵,向量的偏导数是向量。

     

    比如,函数 g:R^3 \mapsto R^3

    套一个具体的函数:g(x)=x+3, x=\left ( x_1,x_2,x_3 \right )^T,这个函数求导很简单,导数是一个三阶单位矩阵,本文只是拿它来举例说明。

    此函数可以写成 g(x)=\begin{pmatrix} g_1(x)\\ g_2(x)\\ g_3(x) \end{pmatrix}=\begin{pmatrix} x_1+3\\ x_2+3\\ x_3+3 \end{pmatrix}

    根据偏导数的定义,有\frac{\partial g(x)}{\partial x_1}=\lim _{\alpha\to0}\frac{g(x+\alpha e_1)-g(x)}{\alpha}=\lim_{\alpha\to0}\frac{g(x+\alpha\cdot \begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix})-g(x)}{\alpha}

    如果将\alpha取成一个很小的数,把极限符号拿掉,就实现了用差分近似微分:

    \frac{\partial g(x)}{\partial x_1}\approx \left [ \begin{pmatrix} x_1+\alpha+3\\ x_2+3\\ x_3+3 \end{pmatrix}-\begin{pmatrix} x_1+3\\ x_2+3\\ x_3+3 \end{pmatrix}\right ]\cdot \frac{1}{\alpha}=\begin{pmatrix} 1\\ 0\\ 0 \end{pmatrix}

    同理求另外两个分量的偏导数,就可以得出导数是一个三阶单位阵。

     

    有了这个思想,就可以用MATLAB实现有限差分近似求导。

    % 定义函数
    g=@(x)x+3;
    % 定义自变量向量
    x=[2;3;4];
    % 获取维度
    n=size(x,1);
    % 创建导数矩阵
    H=zeros(n);
    % 取阿尔法为一个很小的数
    alpha=1e-6;
    % 逐列求导数向量
    for k=1:n
        ei=zeros(n,1);
        ei(k)=1;
        H(:,k)=(g(x+alpha*ei)-g(x))/alpha;
    end
    disp(H);

    输出:

    >> test
        1.0000         0         0
             0    1.0000         0
             0         0    1.0000

    近似的结果是正确的。

     

     

    展开全文
  • 在所有有限差分表达式中,系数之和为...为了解决这个矛盾,我们可以采取以下措施:1 使用双精度浮点数运算2 采用精确度至少为的有限差分公式例如,用中心差分法计算 在 处的二阶导数。取不同的 值以及精度为 和 ,手...

    cf1ee881dc0803e814e36ead39217f6e.png

    在所有有限差分表达式中,系数之和为零。对舍入误差的影响可能很大。很小时,的值几乎相等。当它们通过系数相乘再相加,可能会丢失几个有效数字。

    以(1)为例,分子可能会为0。但是我们不能使h太大,因为这样截断错误将变得过大。为了解决这个矛盾,我们可以采取以下措施:

    • 1 使用双精度浮点数运算
    • 2 采用精确度至少为的有限差分公式

    例如,用中心差分法计算 处的二阶导数。取不同的 值以及精度为 ,手算结果见下表

    b79c2d1b5cae57061e512143660c3e2d.png

    精确值为。精度为 时,的最佳值为0.08。由于截断和舍入错误的共同影响,三位有效数字丢失。大于最佳值,主要错误是由截断引起的。小于最佳值,舍入误差变得明显。

    精度为 时,结果精确到四位有效数字。这是因为额外的精度降低了舍入误差。最佳约为0.02。

    Python的双精度计算

    import mathh = 0.02x = 1.0                                                                                   ddf = ( math.exp(-(x+h)) - 2*math.exp(-(x)) + math.exp(-(x-h)) ) / (h*h)print(ddf)

    输出结果:

    95cca804b62009df0e1ce6006a63837e.png

    h的取值对双精度计算影响不大。

    ★★★★往期相关★★★★

    数值微分|向前差分和向后差分

    数值微分|中心差分法(Central Finite Difference Approximations)

    数值微分|多项式的导数计算C++版

    数值微分|多项式的导数计算

    通过案例学Python之定义函数类

    数值积分|第二类反常积分

    数值积分|第一类反常积分

    数值积分|中点法则(Midpoint Rule)

    数值积分|龙贝格公式

    数值积分|自适应辛普森积分公式

    数值积分|自适应梯形积分

    数值积分|牛顿-柯特斯公式

    数值积分|高斯积分

    数值积分|泰勒(Taylor)公式求积分

    数值积分| 辛普森公式

    Python实现辛普森公式

    展开全文
  • 中心差分法详见:数值微分|中心差分法(Central Finite Difference Approximations)区间端点的导数时,不能用中心差分法。...这些表达式称为向前和向后有限差分(forward and backward finite differen...

    9a4e25c1f1fb2995a703d188ccb50aa3.png

    中心差分法详见:

    数值微分|中心差分法(Central Finite Difference Approximations)

    求区间端点的导数时,不能用中心差分法。考虑在个离散点给出函数的情况,由于中心差分在的两侧使用函数的值,因此我们将无法计算导数。显然,需要只在的一侧求值的差分表达式。这些表达式称为向前和向后有限差分(forward and backward finite difference approximations)。

    • 一阶向前和向后差分

    由泰勒公式可得到:

    由(1)可得

    或者

    同理,由(2)可得

    (6)称为求 的一阶向前差分公式。(7)称为求 的一阶向后差分公式。

    由(1)(3)可得求 的一阶向前差分公式:

    一阶向前差分法的系数见下表。

    bb8fdcaf1ea14c175f805f71ef888293.png

    一阶向后差分法的系数见下表。

    d4296bffa175aee26ecd6448a98204e8.png

    • 二阶向前和向后差分

    由(1)(3)消去可得

    或者

    (10)称为求 的二阶向前差分公式。二阶向前差分法的系数见下表。

    0910eb6eacd5502bdf806019413cb970.png

    二阶向后差分法的系数见下表。

    0484878fd2cea232292029bf3ab207f3.png

    ★★★★往期相关★★★★

    数值微分|多项式的导数计算C++版

    数值微分|多项式的导数计算

    通过案例学Python之定义函数类

    数值积分|第二类反常积分

    数值积分|第一类反常积分

    数值积分|中点法则(Midpoint Rule)

    数值积分|龙贝格公式

    数值积分|自适应辛普森积分公式

    数值积分|自适应梯形积分

    数值积分|牛顿-柯特斯公式

    数值积分|高斯积分

    数值积分|泰勒(Taylor)公式求积分

    数值积分| 辛普森公式

    Python实现辛普森公式

    展开全文
  • 我们如何从有限的点集(波形或曲线)得到...一般我们有三种近似法,前向差分、后向差分和中心差分,中心差分误差最小。具体信息见参考资料。下面是三种方法定义的截图。 参考资料 Numerical Differentiation ...

    我们如何从有限的点集(波形或曲线)得到它们的导数?比如电路中的波形。
    在这里插入图片描述
    一般我们有三种近似求法,前向差分、后向差分和中心差分,中心差分误差最小。具体信息见参考资料。下面是三种方法定义的截图。

    在这里插入图片描述

    参考资料

    展开全文
  • 类似的方法可以拓展到解偏微分方程的问题,这里整理有限差分法的相关笔记。计算机无法处理连续介质的无限多点,因此只能通过网格划分的方式,将带求解区域内连续分布的函数进行离散化,这样只用求解有限多的格点即可...
  • 类似的方法可以拓展到解偏微分方程的问题,这里整理有限差分法的相关笔记。计算机无法处理连续介质的无限多点,因此只能通过网格划分的方式,将带求解区域内连续分布的函数进行离散化,这样只用求解有限多的格点即可...
  • 类似的方法可以拓展到解偏微分方程的问题,这里整理有限差分法的相关笔记。计算机无法处理连续介质的无限多点,因此只能通过网格划分的方式,将带求解区域内连续分布的函数进行离散化,这样只用求解有限多的格点即可...
  • 类似的方法可以拓展到解偏微分方程的问题,这里整理有限差分法的相关笔记。计算机无法处理连续介质的无限多点,因此只能通过网格划分的方式,将带求解区域内连续分布的函数进行离散化,这样只用求解有限多的格点即可...
  • 在上一篇文章中我写到了如何用差分法来像y=f(x)这样的一元函数的一阶二阶导数,那如果是像f=f(x,y)这样的二元函数,怎么利用差分它们的偏微分呢? ###代码: %中心差分f(x,y)一阶数值偏导(也叫做有限元...
  • 既然是相反的目的,那么操作应该也是相反的,平滑使用的是图像邻域的加权求和或者是积分运算,而锐化则是使用求导数(梯度)或有限差分来实现。 基于一阶导数的图像增强——梯度算子 对于二维的连续函数,在点(x,y)...
  • 既然是相反的目的,那么操作应该也是相反的,平滑使用的是图像邻域的加权求和或者是积分运算,而锐化则是使用求导数(梯度)或有限差分来实现。 基于一阶导数的图像增强——梯度算子        对于...
  • 1. 有限差分 Taylor Table这是在数值微分中常用的技巧。可以用等距网格中给定几个点的线性组合表示某一点处的微分,乃至高阶微分,并可顺便出该差分方法的精度。 是关于 的函数,在 轴上有 个等距网格,记 我们...
  • 边缘检测

    2019-12-13 14:32:05
    边缘来源 边缘特征 边缘是图像强度函数中快速变化的部分 ...采用离散导数 (有限差分) 噪声影响 噪声会产生许多峰值,被错误认为成边缘。 解决办法:先做平滑处理,再进行边缘检测。 ...
  • 文章目录1. 一般函数的微分/导数:diff2. 解(高阶)常微分方程3. 解(高阶)偏微分方程4. 求解非线性方程组5....转成有限差分格式–> 转成递推方程 -->使用直接递推法求解(效率可能会低一点
  • 1.Canny边缘检测基本原理 (1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。 (2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子... step2:用一阶偏导的有限差分来计算梯度
  • 1.Canny边缘检测基本原理(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。(2)根据对信噪比与定位乘积进行测度,...step2:用一阶偏导的有限差分来计算梯度的幅值和方向;ste...
  • Canny边缘检测基本特征如下: (1) 必须满足两个条件:①能有效地抑制噪声;②必须尽量精确确定边缘的位置。 (2) 根据对信噪比与定位乘积进行测度,得到最...步骤2:用一阶偏导的有限差分进行计算梯度的幅值和方向...
  • 有限差分法是一种成熟而有效的求解常微分方程近似解的方法,这种方法是基于差商代替导数(数值微分)或者积分插值(数值积分),然后构造差分格式,通过差分迭代格式求解原微分方程,获得原微分方程的近似解。 这种方法在...
  • 如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一阶导数有限差分近似。 (1)符号微分 1.常用的微分函数 函数:diff(f) 表达式f对默认自变量...
  • 1.canny算子:采用一阶偏导的有限差分来计算梯度幅值和方向,方向导数达到局部最大则为边缘候选点;  创新点在于试图将边缘像素拼接成轮廓,轮廓的形成即使用滞后性阈值:通过高低两个阈值的设定,高阈值用来控制强...
  • canny算子及边缘提取原理

    千次阅读 2018-04-25 14:19:56
    (2)用一阶偏导的有限差分来计算梯度的幅值和方向(用一对正交的微分滤波器做卷积(如prewitt滤波),得到包含水平和竖直方向上的导数图像H V,然后针对两图上的每个像素,对应的去梯度方向和幅度。方向用v/h并...
  • 力学问题求解的基于密度、速度和能量等变量场的偏微分方程组(PDEs),除了简单的情况,往往很难应用这些PDEs的解析解。因此必须寻求数值解法。...这一系列离散化的常微分方程(ODE)可用传统的有限差分法中的任一种
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    【南京理工大学 1999 一、1(2) 【武汉交通科技大学 1996 一、1( 4)】 4.一个算法应该是( B )。【中山大学 1998 二、1(2)】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和 C. 5. ...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

有限差分求导数