精华内容
下载资源
问答
  • 针对标准粒子滤波算法难以解决的粒子退化问题和样本贫化现象,提出了基于权值优选的改进二阶中心差分粒子滤波算法。该算法主要从以下两方面进行改进:首先采用二阶中心差分滤波方法通过协方差矩阵的平方根来产生重要...
  • 更复杂些的滤波算子一般是先利用高斯滤波来平滑,...1 一阶导数连续函数,其微分可表达为 ,或(1.1)对于离散情况(图像),其导数必须用差分方差来近似,有,前向差分 forwarddifferencing(1.2) ,中心差分 central...

    更复杂些的滤波算子一般是先利用高斯滤波来平滑,然后计算其1阶和2阶微分。由于它们滤除高频和低频,因此称为带通滤波器(band-pass

    filters)。

    在介绍具体的带通滤波器前,先介绍必备的图像微分知识。

    1 一阶导数

    连续函数,其微分可表达为a4c26d1e5885305701be709a3d33442f.png ,或a4c26d1e5885305701be709a3d33442f.png (1.1)

    对于离散情况(图像),其导数必须用差分方差来近似,有

    a4c26d1e5885305701be709a3d33442f.png,前向差分 forward

    differencing (1.2)

    a4c26d1e5885305701be709a3d33442f.png ,中心差分 central

    differencing (1.3)

    1)前向差分的Matlab实现

    function dimg = mipforwarddiff(img,direction)

    % MIPFORWARDDIFF Finite difference calculations

    %

    % DIMG = MIPFORWARDDIFF(IMG,DIRECTION)

    %

    % Calculates the forward-difference for a given direction

    % IMG : input image

    % DIRECTION : 'dx' or 'dy'

    % DIMG : resultant image

    %

    % See also MIPCENTRALDIFF MIPBACKWARDDIFF MIPSECONDDERIV

    % MIPSECONDPARTIALDERIV

    % Omer Demirkaya, Musa Asyali, Prasana Shaoo, ... 9/1/06

    % Medical Image Processing Toolbox

    imgPad = padarray(img,[1 1],'symmetric','both');%将原图像的边界扩展

    [row,col] = size(imgPad);

    dimg = zeros(row,col);

    switch (direction)

    case 'dx',

    dimg(:,1:col-1) = imgPad(:,2:col)-imgPad(:,1:col-1);%x方向差分计算,

    case 'dy',

    dimg(1:row-1,:) = imgPad(2:row,:)-imgPad(1:row-1,:);

    otherwise, disp('Direction is unknown');

    end;

    dimg = dimg(2:end-1,2:end-1);

    01

    function dimg = mipforwarddiff(img,direction)

    02

    %

    MIPFORWARDDIFF Finite difference calculations

    03

    %

    04

    % DIMG =

    MIPFORWARDDIFF(IMG,DIRECTION)

    05

    %

    06

    % Calculates the

    forward-difference for a given

    direction

    07

    % IMG : input image

    08

    % DIRECTION : 'dx' or 'dy'

    09

    % DIMG : resultant image

    10

    %

    11

    % See also

    MIPCENTRALDIFF MIPBACKWARDDIFF MIPSECONDDERIV

    12

    % MIPSECONDPARTIALDERIV

    13

    14

    % Omer Demirkaya,

    Musa Asyali, Prasana Shaoo, ... 9/1/06

    15

    % Medical Image

    Processing Toolbox

    16

    17

    imgPad = padarray(img,[1 1],'symmetric','both');%将原图像的边界扩展

    18

    [row,col] = size(imgPad);

    19

    dimg = zeros(row,col);

    20

    switch

    (direction)

    21

    case

    'dx',

    22

    dimg(:,1:col-1)

    = imgPad(:,2:col)-imgPad(:,1:col-1);%x方向差分计算,

    23

    case

    'dy',

    24

    dimg(1:row-1,:)

    = imgPad(2:row,:)-imgPad(1:row-1,:);

    25

    otherwise, disp('Direction is unknown');

    26

    end;

    27

    dimg = dimg(2:end-1,2:end-1);

    2)中心差分的Matlab实现

    function dimg = mipcentraldiff(img,direction)

    % MIPCENTRALDIFF Finite difference calculations

    %

    % DIMG = MIPCENTRALDIFF(IMG,DIRECTION)

    %

    % Calculates the central-difference for a given direction

    % IMG : input image

    % DIRECTION : 'dx' or 'dy'

    % DIMG : resultant image

    %

    % See also MIPFORWARDDIFF MIPBACKWARDDIFF MIPSECONDDERIV

    % MIPSECONDPARTIALDERIV

    % Omer Demirkaya, Musa Asyali, Prasana Shaoo, ... 9/1/06

    % Medical Image Processing Toolbox

    img = padarray(img,[1 1],'symmetric','both');

    [row,col] = size(img);

    dimg = zeros(row,col);

    switch (direction)

    case 'dx',

    dimg(:,2:col-1) = (img(:,3:col)-img(:,1:col-2))/2;

    case 'dy',

    dimg(2:row-1,:) = (img(3:row,:)-img(1:row-2,:))/2;

    otherwise,

    disp('Direction is unknown');

    end

    dimg = dimg(2:end-1,2:end-1);

    1

    实例:技术图像x方向导数

    I = imread('coins.png'); figure; imshow(I);

    Id = mipforwarddiff(I,'dx'); figure, imshow(Id);

    1

    I = imread('coins.png'); figure;

    imshow(I);

    2

    Id = mipforwarddiff(I,'dx'); figure,

    imshow(Id);

    a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

    原图像 x方向1阶导数

    2 图像梯度(Image Gradient)

    图像I的梯度定义为a4c26d1e5885305701be709a3d33442f.png ,其幅值为a4c26d1e5885305701be709a3d33442f.png 。出于计算性能考虑,幅值也可用a4c26d1e5885305701be709a3d33442f.png 来近似。

    Matlab函数

    1)gradient:梯度计算

    2)quiver:以箭头形状绘制梯度。注意放大下面最右侧图可看到箭头,由于这里计算横竖两个方向的梯度,因此箭头方向都是水平或垂直的。

    实例:仍采用上面的原始图像

    I = double(imread('coins.png'));

    [dx,dy]=gradient(I);

    magnitudeI=sqrt(dx.^2+dy.^2);

    figure;imagesc(magnitudeI);colormap(gray);%梯度幅值

    hold on;quiver(dx,dy);%叠加梯度方向

    1

    I = double(imread('coins.png'));

    2

    [dx,dy]=gradient(I);

    3

    magnitudeI=sqrt(dx.^2+dy.^2);

    4

    figure;imagesc(magnitudeI);colormap(gray);%梯度幅值

    5

    hold on;quiver(dx,dy);%叠加梯度方向

    a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

    梯度幅值 梯度幅值+梯度方向

    3 二阶导数

    对于一维函数,其二阶导数a4c26d1e5885305701be709a3d33442f.png ,即a4c26d1e5885305701be709a3d33442f.png 。它的差分函数为

    a4c26d1e5885305701be709a3d33442f.png (3.1)

    3.1 普拉斯算子(laplacian operator)

    3.1.2 概念

    拉普拉斯算子是n维欧式空间的一个二阶微分算子。它定义为两个梯度向量算子的内积

    a4c26d1e5885305701be709a3d33442f.png (3.2)

    其在二维空间上的公式为: a4c26d1e5885305701be709a3d33442f.png (3.3)

    对于1维离散情况,其二阶导数变为二阶差分

    1)首先,其一阶差分为a4c26d1e5885305701be709a3d33442f.png

    2)因此,二阶差分为

    a4c26d1e5885305701be709a3d33442f.png

    3)因此,1维拉普拉斯运算可以通过1维卷积核a4c26d1e5885305701be709a3d33442f.png 实现

    对于2维离散情况(图像),拉普拉斯算子是2个维上二阶差分的和(见式3.3),其公式为:

    a4c26d1e5885305701be709a3d33442f.png (3.4)

    上式对应的卷积核为

    a4c26d1e5885305701be709a3d33442f.png

    常用的拉普拉斯核有:

    a4c26d1e5885305701be709a3d33442f.png

    3.1.2 应用

    拉普拉斯算子会突出像素值快速变化的区域,因此常用于边缘检测。

    Matlab里有两个函数

    1)del2

    计算公式:a4c26d1e5885305701be709a3d33442f.pnga4c26d1e5885305701be709a3d33442f.png

    2)fspecial:图像处理中一般利用Matlab函数fspecial

    h = fspecial('laplacian', alpha) returns a 3-by-3 filter

    approximating the shape of the two-dimensional Laplacian

    operator.

    The parameter alpha controls the shape of the Laplacian and must be

    in the range 0.0 to 1.0. The default value for alpha is 0.2.

    展开全文
  • 在本文中,我们考虑了拟线性双曲型偏微分方程初值问题(IVP)数值解的特征数值方法,以及差分方案中央时间中心空间(CTCS),Crank-Nicolson方案,ω方案和一维齐次波动方程初值和边值问题数值解的特征方法。...
  • 有限差分法 有限差分方法(FDM)是计算机数值模拟最早采用的方法,至今仍被广泛运用。 该方法将求解域划分为...对于有限差分格式,从格式的精度来划分,有一阶格式、二阶格式和高阶格式。从差分的空间形式来考虑,可分为

    有限差分法
    有限差分方法(FDM)是计算机数值模拟最早采用的方法,至今仍被广泛运用。
    该方法将求解域划分为差分网格,用有限个网格节点代替连续的求解域。有限差分法以Taylor级数展开等方法,把控制方程中的导数用网格节点上的函数值的差商代替进行离散,从而建立以网格节点上的值为未知数的代数方程组。该方法是一种直接将微分问题变为代数问题的近似数值解法,数学概念直观,表达简单,是发展较早且比较成熟的数值方法。

    分类
    对于有限差分格式,从格式的精度来划分,有一阶格式、二阶格式和高阶格式。从差分的空间形式来考虑,可分为中心格式和逆风格式。考虑时间因子的影响,差分格式还可以分为显格式、隐格式、显隐交替格式等。目前常见的差分格式,主要是上述几种形式的组合,不同的组合构成不同的差分格式。差分方法主要适用于有结构网格,网格的步长一般根据实际情况和条件来决定。

    构造差分的方法
    构造差分的方法有多种形式,目前主要采用的是泰勒级数展开方法。其基本的差分表达式主要有三种形式:一阶向前差分、一阶向后差分、一阶中心差分和二阶中心差分等,其中前两种格式为一阶计算精度,后两种格式为二阶计算精度。通过对时间和空间这几种不同差分格式的组合,可以组合成不同的差分计算格式。

    泰勒级数
    在这里插入图片描述
    在这里插入图片描述

    Python中调用sympy模块求解差分

    from sympy import diff
    from sympy import symbols
    import sympy
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t  #函数
    t = symbols("t")
    print(func(16))
    print(diff(func(t),t))  #对函数进行求导
    print(diff(func(t),t).subs(t,16))
    

    运行上述程序结果:

    392.073691403521
    588000000000*(1 - 3*t/200)/(140000 - 2100*t)**2 - 9.8
    29.6736842105263
    

    【注意】:
    函数的写法不能调用sympy以外的模块的函数
    比如这样写就不对:

    from sympy import diff
    from sympy import symbols
    import math
    def func(t):
        return 2000 * math.log(14*10000/(14*10000-2100*t))-9.8*t
    t = symbols("t")
    print(func(16))
    print(diff(func(t),t))
    print(diff(func(t),t).subs(t,16))
    

    结果:

    392.07369140352074
    print(diff(func(t),t))
    return 2000 * math.log(14*10000/(14*10000-2100*t))-9.8*t
    raise TypeError("can't convert expression to float")
    TypeError: can't convert expression to float
    

    错误点在于:sympy的模块的函数不能调用math模块的函数

    一阶向前差分

    在这里插入图片描述
    Python代码:

    import sympy
    from sympy import diff
    from sympy import symbols
    
    #差分的对象
    x = 16
    k = 2  #步长
    x1 = x + k  #向前
    x2 = x - k  #向后
    
    #方程式
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
    
    #一阶向前差分
    def for_difference():
        a_for_diff = (func(x1) - func(x))/k
        for_error = abs(a_for_diff - a_true)/a_true
        print(f'{x}的一阶向前差分值:{a_for_diff}')
        print(f'{x}的一阶向前差分的误差:{for_error*100}%')
    
    if __name__ == '__main__':
        t = symbols("t")
        a_true = diff(func(t), t).subs(t, x)  # 真值
        for_difference()
    

    结果:

    16的一阶向前差分值:30.4738991379398
    16的一阶向前差分的误差:2.69671578943888%
    

    一阶向后差分

    在这里插入图片描述
    Python代码:

    import sympy
    from sympy import diff
    from sympy import symbols
    
    #差分的对象
    x = 16
    k = 2  #步长
    x1 = x + k  #向前
    x2 = x - k  #向后
    
    #方程式
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
    
    #一阶向后差分
    def beh_difference():
        a_beh_diff = (func(x) - func(x2))/k
        beh_error = abs(a_beh_diff - a_true)/a_true
        print(f'{x}的一阶向后差分值:{a_beh_diff}')
        print(f'{x}的一阶向后差分的误差:{beh_error*100}%')
    
    if __name__ == '__main__':
        t = symbols("t")
        a_true = diff(func(t), t).subs(t, x)  # 真值
        beh_difference()
    

    运行结果:

    16的一阶向后差分值:28.9145121806904
    16的一阶向后差分的误差:2.55840166138381%
    

    一阶中心差分

    在这里插入图片描述
    Python代码:

    import sympy
    from sympy import diff
    from sympy import symbols
    
    #差分的对象
    x = 16
    k = 2  #步长
    x1 = x + k  #向前
    x2 = x - k  #向后
    
    #方程式
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
    
    #一阶中心差分
    def cen_difference():
        a_cen_diff = (func(x1)-func(x2))/(k*2)
        cen_error = abs(a_cen_diff - a_true)/a_true
        print(f'{x}的二阶中心差分值:{a_cen_diff}')
        print(f'{x}的二阶中心差分的误差:{cen_error*100}%')
    
    if __name__ == '__main__':
        t = symbols("t")
        a_true = diff(func(t), t).subs(t, x)  # 真值
        cen_difference()
    

    代码运行结果:

    16的二阶中心差分值:29.6942056593151
    16的二阶中心差分的误差:0.0691570640275347%
    

    二阶中心差分

    在这里插入图片描述
    Python代码:

    import sympy
    from sympy import diff
    from sympy import symbols
    
    #差分的对象
    x = 16
    k = 2  #步长
    x1 = x + k  #向前
    x2 = x - k  #向后
    
    #方程式
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
    
    #二阶中心差分
    def two_cen_difference():
        a_cen_diff = (func(x1)+func(x2)-2*func(x))/(k**2)
        cen_error = abs(a_cen_diff - a_true)/a_true
        print(f'{x}的二阶中心差分值:{a_cen_diff}')
        print(f'{x}的二阶中心差分的误差:{cen_error*100}%')
    
    if __name__ == '__main__':
        t = symbols("t")
        a_true = diff(func(t), t , 2).subs(t, x)  # 求2阶导真值
        two_cen_difference()
    

    程序运行结果:

    16的二阶中心差分值:0.779693478624694
    16的二阶中心差分的误差:0.0779896119162236%
    

    迭代直到精确要求——以一阶向前差分为例

    要求初始步长为2,经过多次迭代,一阶向前差分的误差能小于1%
    Python代码如下:

    import sympy
    from sympy import diff
    from sympy import symbols
    
    #方程式
    def func(t):
        return 2000 * sympy.log(14*10000/(14*10000-2100*t))-9.8*t
    
    #一阶向前差分
    def for_difference(x1,x,a_true,k):
        a_for_diff = (func(x1) - func(x))/k
        for_error = abs(a_for_diff - a_true)/a_true
        print(f'{x}的一阶向前差分值:{a_for_diff}')
        print(f'{x}的一阶向前差分的误差:{for_error*100}%')
        return for_error
    
    def Judge_precision(x):
        D = True
        k = 2  # 初始步长
        n = 0
        while D:
            n += 1
            x1 = x + k  # 向前
            t = symbols("t")
            a_true = diff(func(t), t).subs(t, x)
            error = for_difference(x1,x,a_true,k)
            if error <= 0.01:
                D = False
                print(f'迭代第{n}次后,{x}的一阶向前差分的误差为{error}')
            else:
                k = k/2
    
    if __name__ == '__main__':
        x = 16  #差分对象
        Judge_precision(x)
    

    运行结果:

    16的一阶向前差分值:30.4738991379398
    16的一阶向前差分的误差:2.69671578943888%
    16的一阶向前差分值:30.0684298016344
    16的一阶向前差分的误差:1.33028844112341%
    16的一阶向前差分值:29.8697466293837
    16的一阶向前差分的误差:0.660728265039121%
    迭代第3次后,16的一阶向前差分的误差为0.00660728265039121
    
    展开全文
  • matlab编写的中心差分

    热门讨论 2012-05-22 11:02:02
    结构动力学中的中心差分法是基于用有限差分代替位移对时间的求导(对位移一阶求导得到速度,对位移二阶求导得加速度)。  
  • 中心差分格式的数值试验(含MATLAB源码) 考虑二阶常微分方程边值问题: (1) 其中q,f为[a,b]上的连续函数, 为常数 1、考虑问题:考虑二阶常微分方程边值问题 2、网格剖分与差分格式 3、截断误差 将方程(1)...
  • 针对非线性系统模型, 提出一种基于中心差分卡尔曼-概率假设密度滤波的多目标跟踪方法. 该方法采用 Stirling 内插公式对非线性函数作多项式逼近, 利用中心差分卡尔曼滤波和高斯混合概率假设密度滤波对后验多目...
  • 首先,图像是离散的数据,若求其导数就要用差分的方法,常用的差分方法是前向差分(forward differencing)与中心差分(central differencing)。一阶导本质上求的是斜率,二阶导求的是拐点。一阶导连续函数,其微分可...

    首先,图像是离散的数据,若求其导数就要用差分的方法,常用的差分方法是前向差分(forward differencing)与中心差分(central differencing)。一阶导本质上求的是斜率,二阶导求的是拐点。

    一阶导

    连续函数,其微分可表达为

     ,或,                     (1.1)

    对于图像这种离散的数据,其可以表达为:

    ,或,                                       (1.2)

    以Prewitt一阶微分边缘检测算子为例,其利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘,这两个方向的模板就是一阶微分运算。具体如下:

            (1.3)

            (1.4)

    ,或,

                                                              (1.5)

    Prewitt梯度算子法就是先求平均,再求差分来求梯度。水平和垂直梯度模板分别为:

             

    二阶导

    对于一维函数,其二阶导数为:

    ,即           (2.1)

    它的差分函数为:

                                                                                (2.2)

    二阶导部分以Laplacian边缘检测算子为例。Laplace算子是一种各向同性算子,二阶微分算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,通常的分割算法都是把Laplacian算子和平滑算子结合起来生成一个新的模板。拉普拉斯算子也是最简单的各向同性微分算子,具有旋转不变性。

    拉普拉斯算子是n维欧式空间的一个二阶微分算子。它定义为两个梯度向量算子的内积:

                              (2.3)

    其在二维空间上的公式为:

                                                                                                                (2.4)

    1、对于1维离散情况,其二阶导数变为二阶差分:

    1)首先,其一阶差分为:

                                                                    (2.5)

    2)因此,二阶差分为:

             (2.6)

    3)因此,1维拉普拉斯运算可以通过1维卷积核[1,-2, 1]实现

    2、对于2维离散情况(图像),拉普拉斯算子是2个维上二阶差分的和(见式2.4),其公式为:

    其卷积可写为:

    其可拓展为

    参考文章:图像处理-线性滤波-2 图像微分(1、2阶导数和拉普拉斯算子)

    展开全文
  • 几种简单差分格式

    千次阅读 2020-05-05 11:19:43
    以对流方程为例: 一阶迎风 (时间向前空间向前) ...在时间和空间上都用二阶中心差分离散,可以得到蛙跳(leap-frog)格式 将在进行Taylor级数展开 根据对流方程有 代入Taylor展开式得 用中...

    对流方程为例:

    一阶迎风

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{u_{i+1}^{n}-u_{i}^{n}}{\Delta x}(时间向前空间向前)

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{u_{i}^{n}-u_{i-1}^{n}}{\Delta x}(时间向前空间向后)

    二阶迎风

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{-u_{i+2}^{n}+4u_{i+1}^{n}-3u_{i}^{n}}{2\Delta x}

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{3u_{i}^{n}-4u_{i-1}^{n}+u_{i-2}^{n}}{2\Delta x}

    三阶迎风

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{-u_{i+2}^{n}+6u_{i+1}^{n}-3u_{i}^{n}-2u_{i-1}^{n}}{6\Delta x}

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{2u_{i+1}^{n}+3u_{i}^{n}-6u_{i-1}^{n}+u_{i-2}^{n}}{6\Delta x}

    二阶中心

    \frac{u_{i}^{n+1}-u_{i}^{n}}{\Delta t}=-a\frac{u_{i+1}^{n}-u_{i-1}^{n}}{2\Delta x}(无条件不稳定)

    将上式的u_{i}^{n}取成平均值,就得到了Lax-Friedrichs格式

    u_{i}^{n+1}=\frac{u_{i+1}^{n}+u_{i-1}^{n}}{2}-\frac{a\Delta t}{2\Delta x}(u_{i+1}^{n}-u_{i-1}^{n})

    在时间和空间上都用二阶中心差分离散,可以得到蛙跳(leap-frog)格式

    \frac{u_{i}^{n+1}-u_{i}^{n-1}}{2\Delta t}=-a\frac{u_{i+1}^{n}-u_{i-1}^{n}}{2\Delta x}

    u_{i}^{n+1}u_{i}^{n}进行Taylor级数展开

    u_{i}^{n+1}=u_{i}^{n}+\frac{\partial u}{\partial t}\Delta t+\frac{\partial ^{2}u}{\partial ^{2} t}\frac{(\Delta t)^2}{2!}+O(\Delta t)^3

    根据对流方程有

    \frac{\partial u}{\partial t}=-a\frac{\partial u}{\partial x}

    \frac{\partial ^{2}u}{\partial ^{2} t}=-a\frac{\partial}{\partial t}(\frac{\partial u}{\partial x})=a^2\frac{\partial ^{2}u}{\partial ^{2} x}

    代入Taylor展开式得

    u_{i}^{n+1}=u_{i}^{n}+(-a\frac{\partial u}{\partial x})\Delta t+(a^2\frac{\partial ^{2}u}{\partial ^{2} x})\frac{(\Delta t)^2}{2}

    用中心差分离散后,可得到Lax-Wendroff格式

    u_{i}^{n+1}=u_{i}^{n}-a\Delta t\frac{u_{i+1}^{n}-u_{i-1}^{n}}{2\Delta x}+\frac{(a\Delta t)^2}{2}\frac{u_{i+1}^{n}-2u_{i}^{n}+u_{i-1}^{n}}{(\Delta x)^2}

    展开全文
  • 提出了一种以块为中心的特征有限差分法,求解非均匀网格上对流占优的扩散方程。 所得方案在时间上是一阶精确的,在空间上是二阶的。 严格推导了稳定性分析和误差估计。 并获得了未知变量及其一阶导数的数值解。 最后...
  • 图像运算中的一阶导与二阶

    千次阅读 2019-07-04 15:46:40
    首先,图像是离散的数据,若求其导数就要用差分的方法,常用的差分方法是前向差分(forward differencing)与中心差分(central differencing)。一阶导本质上求的是斜率,二阶导求的是拐点。 一阶导 连续函数,其...
  • 薄板振动问题的TRUNC型有限元方法,郭玲,,本文给出了求解薄板振动问题的TRUNC型非协调有限元方法,空间离散采用TRUNC型非协调元,时间方向采用二阶中心差分格式。获得了能量模意
  • 电子散斑干涉技术(ESPI)中,基于偏微分方程(PDE)的滤波模型是一种重要的滤波方法。...九点差分和中心差分格式需要使用均值滤波做进一步的处理,中心差分格式处理速度最快,高阶差分格式次之,九点差分格式则最慢。
  • 在所有有限差分表达式中,系数之和为...为了解决这个矛盾,我们可以采取以下措施:1 使用双精度浮点数运算2 采用精确度至少为的有限差分公式例如,用中心差分法计算 在 处的二阶导数。取不同的 值以及精度为 和 ,手...
  • 图像处理中的一阶偏导和二阶偏导

    千次阅读 2015-02-11 15:40:20
    1. 一阶差分: 2. 二阶偏导数的推导和近似: 3. 上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心二阶偏导数则有: 4. 同理: 5. 进而可推导: 6. 这样我们就可以很好的运用...
  • Opencv--图像处理之一阶和二阶偏导数

    千次阅读 2019-04-02 09:28:40
    1. 一阶差分:   2. 二阶偏导数的推导和近似:   3. 上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心二阶偏导数则有:   4. 同理:   5. 进而可推导:   ...
  • 1. 一阶差分:   2. 二阶偏导数的推导和近似:   3. 上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心二阶偏导数则有:   4. 同理:   5. 进而可推导: ...
  • 一、微分学回顾 极限与导数 极限 :ϵ−δ\epsilon-\deltaϵ−δ语言 连续 导数 :定义 :导数线性逼近 :求导法则:链式,加法,...向前差分,向后差分,中心差分,二阶中心差分 牛顿法与梯度下降法...
  • FDFD一维

    2019-10-03 17:41:33
    一维FDTD程序如下 ... 为了减小误差,采用二阶中心差分,所以看起来是十字状,呈时空交错的 function FDTDonedimensionpipei(L,d,T) %version1.0 终端匹配 %FDTDonedimensionpipe...
  • 2),使用中心差分格式,它具有二阶计算精度;大Pe数情况下(Pe>2Pe>2Pe>2),使用迎风格式计算控制体界面对流输运量并忽略扩散作用。虽然迎风格式只有一阶精度,但可较好的反应流动的输运特征。 混合差分...
  • 偏微分中心差分格式实验报告(含matlab程序)二阶常微分方程的中心差分求解学校:中国石油大学(华东)理学院 姓名:张道德实验目的构造二阶常微分边值问题:其中为上的连续函数,为给定常数的中心差分格式;根据中心差分...
  • 扩散项的离散采用二阶中心差分格式;对于压力-速度耦合利用SIMPLE算法进行处理;计算节点的布置采用同位网格技术,界面流速通过动量插值确定。本文对方腔驱动流、倾斜腔驱动流和圆柱外部绕流问题进行了计算,讨论了...
  • 蛙跳差分格式(非恒定流)

    千次阅读 2019-05-20 09:46:28
    蛙跳格式是一个很常用的差分格式,它在时间和空间上都采用中心差分。假设离散化如下图所示: (2-1) 蛙跳格式是时间和空间上均为二阶精度的,三层一步显式差分格式。因而,为了计算(n+1)层的值,需要(n-1)层和n层的...
  • 中心差分格式具有二阶精度,但它的稳定性很差,也不满足输运特性。考虑到向中心差分格式这种不能包含流动方向信息的格式是不稳定的,我们就需要寻找那些包含流动方向信息的高阶差分格式。下面就介绍这类差分格式:...
  • 差分以(x, y)为中心向四周进行差分 这样就不用分别维护一阶差分二阶差分什么的(如果以(1, 1) 为中心进行差分还要分开维护 而且涉及区间修改根本无法实现嘛) 还有hlq神犇提出了8二维树状数组的方法(太可怕了) ...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

二阶中心差分