精华内容
下载资源
问答
  • 二阶微分方程matlab代码 this code works on matlab. It is shooting method impementation for solving second order differential equations
  • 该程序通过使用线性插值的 Rayleigh Ritz 方法给出了具有可变系数的二阶微分方程的解
  • matlab关于ode45解二阶微分方程的困惑matlab关于ode45解二阶微分方程的困惑一个二阶微分方程:y''+y'+y=sin(t)初始条件为y(0)=5,y'(0)=6。过程:先降阶为一阶微分方程组y'=zz'=-z-y+sin(t)编制如下函数m文件function...

    matlab关于ode45解二阶微分方程的困惑

    matlab关于ode45解二阶微分方程的困惑

    一个二阶微分方程:

    y''+y'+y=sin(t)

    初始条件为y(0)=5,y'(0)=6。

    过程:

    先降阶为一阶微分方程组

    y'=z

    z'=-z-y+sin(t)

    编制如下函数m文件

    function dy=weifen(t,x)

    dy=zeros(2,1);

    %y=x(1)

    %z=x(2)

    dy(1)=x(2);

    dy(2)=sin(t)-x(2)-x(1);

    *******************

    然后用ode45解方程

    [t,y]=ode45(@weifen,[0 20],[5 6])

    plot(t,y)就可以画出y和y'的图像

    但是我用同样的思路,是不过在函数文件的编制时候将函数的代表意义换一下,结果出来的图形就完全不一样了?

    即我的m文件重新编制为

    function dy=weifen(t,x)

    dy=zeros(2,1);

    %y=x(2)

    %z=x(1)

    dy(1)=x(1);

    dy(2)=sin(t)-x(1)-x(2);

    *******************

    然后同样用ode45解方程,根据函数文件只需将初始条件换一下位置

    [t,y]=ode45(@weifen,[0 20],[6 5])

    plot(t,y)就可以画出y和y'的图像,但是结果完全不一样了,怎么回事?

    难道必须有一定的顺序么?

    展开全文
  • 二阶微分算法

    千次阅读 2019-04-22 11:54:01
    数学基础  ...拉普拉斯算子,二阶微分线性算子,为什么上来就学二阶微分算子,前文说过,与一阶微分相比,二阶微分的边缘定位能力更强,锐化效果更好,所以我们来...

    转自 https://blog.csdn.net/Scrat000/article/details/81866409

    数学基础

           拉普拉斯算子,二阶微分线性算子,为什么上来就学二阶微分算子,前文说过,与一阶微分相比,二阶微分的边缘定位能力更强,锐化效果更好,所以我们来先学习二阶微分算子,使用二阶微分算子的基本方法是定义一种二阶微分的离散形式,然后根据这个形式生成一个滤波模板,与图像卷积。

           各向同性滤波器,图像旋转后响应不变,这就要求滤波模板自身是对称的,如果不对称,结果就是,当原图旋转90°时,原图某一点能检测出细节(突变)的,现在却检测不出来,这就是各向异性的原因。我们更关心的是各向同性滤波模板,对图像的旋转不敏感。

           对于二维图像f(x,y),二阶微分最简单的定义--拉普拉斯算子定义为:


    对于任意阶微分算子都是线性算子,所以二阶微分算子和后面的一阶微分算子都可以用生成模板然后卷积的方式得出结果。

    根据前面对二阶微分的定义有:


    根据上面的定义,与拉普拉斯算子的定义相结合,得到:


    也就是一个点的拉普拉斯的算子计算结果是上下左右的灰度的和减去本身灰度的四倍。同样,可以根据二阶微分的不同定义,所有符号相反,也就是上式所有灰度值全加上负号,就是-1,-1,-1,-1,4。但要注意,符号改变,锐化的时候与原图的加或减应当相对变化。上面是四邻接的拉普拉斯算子,将这个算子旋转45°后与原算子相加,就变成八邻域的算子了,也就是一个像素周围一圈8个像素的和与中间像素8倍的差,作为拉普拉斯计算结果。

           因为要强调图像中突变(细节),所以平滑灰度的区域,无响应,即模板系数的和为0,也是二阶微分必备条件。

           最后的锐化公式:


          g是输出,f为原始图像,c是系数,也就是要加上多少细节的多少。

          由于拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉普拉斯变换是各向同性的二阶导数,定义为:


    用更加形象的图像来解释,假设我们有一张一维图形。下图(a)中灰度值的”跃升”表示边缘的存在.如果使用一阶微分求导我们可以更加清晰的看到边缘”跃升”的存在(这里显示为高峰值)图(b); 如果在边缘部分求二阶导数会出现什么情况?,图(c)所示。(其图片和定义公式来源于http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/imgtrans/laplace_operator/laplace_operator.html)。

      

    (a)                                                                                                          (b)

    (c)

    你会发现在一阶导数的极值位置,二阶导数为0。所以我们也可以用这个特点来作为检测图像边缘的方法。 但是, 二阶导数的0值不仅仅出现在边缘(它们也可能出现在无意义的位置),但是我们可以过滤掉这些点。

    为了更适合于数字图像处理,将该方程表示为离散形式:


    另外,拉普拉斯算子还可以表示成模板的形式,以便更好编程需要。如图1所示。


    图1(a)表示离散拉普拉斯算子的模板,图1(b)表示其扩展模板,图1(c)则分别表示其他两种拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理

    图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到平均运算或积分运算,因此可以对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。拉普拉斯锐化的基本方法可以由下式表示:


    这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息但其缺点是对图像中的某些边缘产生双重响应。



    展开全文
  • 采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格...
  • 二阶微分方程复函数显式解唯一性证明,于力,李峰,用二阶微分方程的统解方法证明,固定框架的可变结构函数确定后,在初始值和结构函数参数值确定的条件下,二阶微分方程显式解的曲
  • 不含积分项的二阶微分方程边值问题,侯麟,,本文对二阶微分方程边值问题,类似于对初值问题的讨论,讨论了不含积分项的二阶微分方程边值问题,即在边值问题 中,将积分项 �
  • 一类二阶微分方程的周期解,赵海坤,,本文基于锥的相关知识,根据上下解的思想,采用单调迭代方法和一类算子不动点理论,证明了给定反序上下解的二阶微分方程的周期解
  • 提出了在使用五孔剪切相机研制二阶微分场时,通过采用两次全场滤波技术可消除夹在二阶微分条纹中的一阶微分条纹,从而使二阶微分条纹具有较高的对比度。
  • 二阶微分方程统解证明,于力,李峰,对于非线性科学,用非线性微分方程近似解描述,和用微分方程统一显式解(简称统解)描述,两者结果令人震惊:Duffing振子没有双井�
  • 二阶微分方程开发的渐近理论。 我们为大x的某类系数获得解的形式。
  • 二阶微分方程数学科学计算 Matlab代码以数字方式解决科学问题 用LU分解和本征分解求解线性方程组 使用矩阵的最小二乘回归 求解一阶和二阶常微分方程的数值方法 二阶Runge-Kutta方法求解微分方程
  • 积木式统一求解二阶微分方程,于力,李峰,搜索中国知网,微分方程包括非线性方程,随机方程,时滞方程,都是基于"构造近似解"方法.共同点是不把结果代入方程检验.基于
  • 通过引入参数函数H(t,s)及h(t,s),利用积分平均技巧,积分变换和广义Riccati变换给出了一类二阶微分方程的振动准则。
  • 二阶微分方程常数解与另类不动点及吸引子,于力,李峰,利用二阶微分方程统解的系统内外关系定律,证明微分方程有常数解。常数解是另类不动点和另类吸引子。无论外部干扰函数跟踪系统频
  • 该文档说明了二阶微分图像锐化的原理。通过阅读冈萨雷斯的数字图像处理第三版的相关章节后,归纳总结得到的。
  • 二阶微分算子-拉普拉斯算子

    千次阅读 2019-08-03 15:04:00
    在前面博客结尾,我们简要谈了一下二阶微分算子;对于图像; 从上面可以看出 一阶微分算子,就是求图像灰度变化曲线的导数,能够突出图像中的对象边缘; 二阶微分算子,求图像灰度变化导数的导数,对图像中...

    在前面博客结尾,我们简要谈了一下二阶微分算子;对于图像;

    从上面可以看出

         一阶微分算子,就是求图像灰度变化曲线的导数,能够突出图像中的对象边缘;
         二阶微分算子,求图像灰度变化导数的导数,对图像中灰度变化强烈的地方很敏感,从而可以突出图像的纹理结构
    下面介绍几个常见二阶微分算子:


    其模板为:


           图(a)表示离散拉普拉斯算子的模板,图(b)表示其扩展模板,图(c)(d)则分别表示其他两种拉普拉斯的实现模板。从模板形式容易看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域,所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图像中的孤立点、孤立线或线端点为目的的场合。同梯度算子一样,拉普拉斯算子也会增强图像中的噪声,有时用拉普拉斯算子进行边缘检测时,可将图像先进行平滑处理。

           图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。图像模糊的实质就是图像受到平均运算或积分运算,因此可以对图像进行逆运算,如微分运算能够突出图像细节,使图像变得更为清晰。由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。拉普拉斯锐化的基本方法可以由下式表示:

    这种简单的锐化方法既可以产生拉普拉斯锐化处理的效果,同时又能保留背景信息,将原始图像叠加到拉普拉斯变换的处理结果中去,可以使图像中的各灰度值得到保留,使灰度突变处的对比度得到增强,最终结果是在保留图像背景的前提下,突现出图像中小的细节信息。

    下面实现简单的图像锐化,并调用函数实现边缘检测;

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    //手动实现拉普拉斯算子图像锐化  
    void sharpenImage1(const Mat &image, Mat &result)
    {
        result.create(image.size(), image.type());//为输出图像分配内容  
                                                  /*拉普拉斯滤波核3*3
                                                  0  -1   0
                                                  -1   5  -1
                                                  0  -1   0  */
                                                  //处理除最外围一圈外的所有像素值  
        for (int i = 1; i<image.rows - 1; i++)
        {
            const uchar * pre = image.ptr<const uchar>(i - 1);//前一行  
            const uchar * cur = image.ptr<const uchar>(i);//当前行,第i行  
            const uchar * next = image.ptr<const uchar>(i + 1);//下一行  
            uchar * output = result.ptr<uchar>(i);//输出图像的第i行  
            int ch = image.channels();//通道个数  
            int startCol = ch;//每一行的开始处理点  
            int endCol = (image.cols - 1)* ch;//每一行的处理结束点  
            for (int j = startCol; j < endCol; j++)
            {
    //输出图像的遍历指针与当前行的指针同步递增, 以每行的每一个像素点的每一个通道值为一个递增量, 因为要考虑到图像的通道数
    //saturate_cast<uchar>保证结果在uchar范围内  
            *output++ = saturate_cast<uchar>(5 * cur[j] - pre[j] - next[j] - cur[j - ch] - cur[j + ch]);
            }
        }
        //将最外围一圈的像素值设为0  
        result.row(0).setTo(Scalar(0));
        result.row(result.rows - 1).setTo(Scalar(0));
        result.col(0).setTo(Scalar(0));
        result.col(result.cols - 1).setTo(Scalar(0));
        /*/或者也可以尝试将最外围一圈设置为原图的像素值
        image.row(0).copyTo(result.row(0));
        image.row(image.rows-1).copyTo(result.row(result.rows-1));
        image.col(0).copyTo(result.col(0));
        image.col(image.cols-1).copyTo(result.col(result.cols-1));*/
    }
    
    //调用OpenCV函数实现拉普拉斯算子图像锐化  
    void sharpenImage2(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
        filter2D(image, result, image.depth(), kernel);
    }
    
    //main函数  
    void main() {
        Mat mat = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\01.jpg");
        Mat result1;
        Mat result2;
        Mat dst, gray;
    
        sharpenImage1(mat, result1);
        sharpenImage2(mat, result2);
    
        //滤波降噪
        GaussianBlur(mat, mat, Size(3, 3), 0, 0, BORDER_DEFAULT);
    
        //转成灰度图
        cvtColor(mat, gray, COLOR_BGR2GRAY);
    
        //运行Sobel算子,得到边缘
        //求x方向梯度
        //Laplacian(src, dst, CV_16S, 3, 1,0,BORDER_DEFAULT);
        Laplacian(mat, dst, CV_16S);//后几个参数有默认值
    
                                    //由于是16位图片,需要将图片转化成为8位图形进行显示 
        convertScaleAbs(dst, dst);
        imshow("调函数检测边缘", dst);
    
        namedWindow("src");
        namedWindow("手动实现");
        namedWindow("opencv实现");
        imshow("src", mat);
        imshow("手动实现", result1);
        imshow("opencv实现", result2);
        waitKey(0);
    }

    简单介绍一下自带函数:

     

    使用拉普拉斯进行图像锐化可参考博文:https://www.cnblogs.com/liu-jun/archive/2012/08/12/2635373.html

    在前面,我们谈到拉普莱斯变化有4个模板,我们一一实现,看看具体的情况

     

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    //调用OpenV函数实现拉普拉斯算子图像锐化 
    /*拉普拉斯滤波核3*3
    0   -1   0
    -1   5  -1
    0   -1   0  */
    void LA(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
        filter2D(image, result, image.depth(), kernel);
    }
    
    /*拉普拉斯滤波核3*3
    0  -1   0
    -1  4  -1
    0  -1   0  */
    void LB(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
        filter2D(image, result, image.depth(), kernel);
    }
    /*拉普拉斯滤波核3*3
    0    1   0
    1   -4   1
    0    1   0  */
    void LC(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << 0, 1, 0, 1, -4, 1, 0, 1, 0);
        filter2D(image, result, image.depth(), kernel);
    }
    
    
    /*拉普拉斯滤波核3*3
    1  1   1
    1 -8   1
    1  1   1  */
    void LD(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << 1, 1, 1, 1, -8, 1, 1, 1, 1);
        filter2D(image, result, image.depth(), kernel);
    }
    
    /*拉普拉斯滤波核3*3
    -1  -1  -1
    -1   8  -1
    -1  -1  -1  */
    void LE(const Mat &image, Mat &result)
    {
        Mat kernel = (Mat_<float>(3, 3) << -1, -1, -1, -1, 8, -1, -1, -1, -1);
        filter2D(image, result, image.depth(), kernel);
    }
    //main函数  
    void main() {
        Mat mat = imread("E:\\VS2015Opencv\\vs2015\\project\\picture\\01.jpg");
        Mat result1, A1, A2, A3;
        Mat result2;
        Mat dst, gray;
    
    
        //滤波降噪
        GaussianBlur(mat, mat, Size(3, 3), 0, 0, BORDER_DEFAULT);
    
         LA(mat, result1);
         LB(mat, A1);
         LC(mat, A2);
         LD(mat, A3);
         LE(mat, result2);
    
        //转成灰度图
        cvtColor(mat, gray, COLOR_BGR2GRAY);
        
        //运行Sobel算子,得到边缘
        //求x方向梯度
        //Laplacian(src, dst, CV_16S, 3, 1,0,BORDER_DEFAULT);
        Laplacian(mat, dst, CV_16S);//后几个参数有默认值
    
                                    //由于是16位图片,需要将图片转化成为8位图形进行显示 
        convertScaleAbs(dst, dst);
        imshow("调函数检测边缘", dst);
        
        namedWindow("src");
        imshow("src", mat);
        imshow("LA", result1);
        imshow("LB", A1);
        imshow("LC", A2);
        imshow("LC", A3);
        imshow("LD", result2);
        waitKey(0);
    }

     

    发现不同的模板,结果也不同。

     

    
    

    转载于:https://www.cnblogs.com/fcfc940503/p/11294874.html

    展开全文
  • 具有Erlang分布随机脉冲的二阶微分系统的稳定性分析
  • 利用matlab的s函数求解二阶微分方程,是基于PD控制理论的学习,程序是正确可以用的。如有疑问可以看相应的博客文章说明
  • 本文建立了非线性二阶微分方程的一个新的振动准则,并改进了文[1]的结果。
  • 研究了带脉冲和时滞的二阶微分方程的稳定性问题。通过构造合适的Lyapunov函数,利用稳定性理论和脉冲控制方法,证明了对于不稳定的时滞二阶微分方程,可以通过加强一定的脉冲控制使其稳定。获得的结果改进和推广了...
  • 具偏差变元的二阶微分方程多个正解及其应用,卢高丽,冯美强,为了研究具偏差变元的二阶微分方程边值问题三个正解的存在性,首先给出了边值问题的格林函数表达式并研究了格林函数的性质。进而
  • matlab开发-二阶微分方程组的一阶刚度。运行20个隐式和半隐式方法的一阶初值刚性ODE。
  • 二阶微分方程数学有限元法 用于FEM的代码Matlab 介绍: 该代码使用有限元方法求解具有不同边界条件(Neumann边界条件,Drichelet边界条件和周期边界条件)的二阶偏微分方程。 有关精确方程,请阅读名为的文档。
  • 使用龙格库塔法求解二阶微分方程。可以设置仿真步长、初值,轻松更改函数
  • 这是我所要用的二阶微分方程,现已通过试验得到数据,想通过该方程拟合数据得到方程中的四个参数,通过查询有说二阶微分方程转化为差分方程或者积分方程,然后MATLAB编程拟合,想知道如何转化为差分方程或者积分方程...
  • 利用等价变分方法研究一类二阶微分方程的周期解问题.通过寻找适当变换,将原来的二阶周期边值问题约化为易于求解的一阶周期边值问题,进而求得周期解.应用实例验证了该方法的有效性.
  • 研究二阶微分方程的非线性n点边值问题{y=f(t,y,y),a
  • 二阶微分方程数学ME373-书 该存储库包含由教授的“ ME 373,机械工程方法”课程的电子教科书。 该课程的目录描述为 解决代表性机械工程问题的解析和数值方法。 课程学习目标是: 在本课程结束时,学生将能够: 用...
  • 一类二阶微分方程解的Julia集的径向分布,陈锦超,李叶舟,本文研究了二阶线性微分方程$f''(z)+A(z)f'(z)+B(z)f(z)=0$的非平凡解$f(z)$的值分布和动力系统性质。当A是具有一个有限亏值的整函数,且B是满�

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,862
精华内容 744
关键字:

二阶微分