神经网络求解二阶常微分方程

最近课题组老师给出一篇文献,文件原文如链接一所示。需要让我使用深度神经网络求解偏微分方程。在相关调研过程中,CSDN上作者Trytobenice分享过相关的程序源码。基于相关程序源码,我将他的一阶常微分方程求解扩充到二阶常微分方程求解。并且按照此方法可以求解高阶常微分方程。

理论分析

对于任意一个微分方程,我们都可以用这个方程表示出

求解目的就是找出这样的一个方程:ψ(x),能够满足以上的G()函数。
对于计算机求解,第一步要将其离散化处理:

人工神经网络若要求解该方程,那就设方程ψ(x)函数如下形式:

将预设的ψ(x)带入原方程中,只需要让G()函数在定义范围内达到最小,那就求解出这个方程了。二次方项是为了将负数对结果的影响消除。

下面再来分析ψ(x)的内容:
在讲解这个解函数之前,需要给出一个补充知识。要求解出常微分方程,仅仅给出常微分方程表达式是不够的,还要给出常微分方程的初始条件和边界条件。这样才能保证解函数的唯一性。

ψ(x)函数中包含两项。第一项是A(x),这一项是为了满足初始条件或者边界条件。第二项F{x,N(x,p)},这一项是神经网络满足偏微分方程的部分,不考虑边界条件。【注:为什么F()项能够不考虑边界条件,文中例子会给出介绍】

继续看F{x,N(x,p)},这一项中包含N(x,p)。这个N()函数就是神经网络函数表达式形式。x表示输入数据,p表示神经网络中的参数。通过BP网络优化神经网络中的参数p,使神经网络能够达到最适,就能得到神经网络的解函数ψ(x)。

设出这个解函数之后,我们下一步要根据解函数表达出微分方程。微分方程中至少包含一个微分项,可能是一阶,也可能是二阶;可能是常微分,也可能是偏微分。论文中给出神经网络N(x,p)输出对输入x的微分公式。公式形式如下:
式中k表示k阶导数,j表示对输入数据 xj(j是下角标) 的偏导。本文仅仅探讨常微分形式。

举例分析

这里给出一个一阶常微分方程表达式,用这个方程分析如何使用神经网络求解。方程入下:

并且给出边界条件,
这个方程有很明确的解析解,解析解如下所示:

对于神经网络求解,我们可以设神经网络解ψ(x)形式为:

在这里,满足边界条件的A(x)直接为1。不需要考虑边界条件的项F{x,N(x,p)}设为x*N(x,p),那么在x=0的情况下,解第二项直接为0,仅仅保留A(x),这样就能解释前部分的【注】。

方法提升

以上分析全部针对论文1的内容,论文1出版年份为1998年,论文2于2019年提出了更进一步的方法,下面我们进一步分析论文2的内容:

论文2设计的神经网络与论文1,解析解设计过程中,直接设神经网络输出的结果为

在这里不考虑边界值,边界值在损失函数上体现。损失函数第一项如论文1相同,第二项体现边界值。损失函数通过以下函数给出:
论文2设计的神经网络结构非常简单,中间只有一个隐藏层,隐藏层中只有10个神经元。

代码结果

在这里展示我使用Tensorflow设计的,求解二阶常微分方程的程序结果。二阶常微分方程式由以下方程给出:

二阶微分方程的初始值:

该微分方程的解析解:

使用设计的程序,仿真出的结果如图所示:

其中,解析解和神经网络解之间的差值用下图可以看出:

可以看到,这个拟合结果还是非常不错的,误差数量级控制在10^-4以下。

有时间会在github上开源代码,到时候下载别忘了给我点一个star。

论文1: Artificial neural networks for solving ordinary and partial differential equations
论文2: Solving differential equations with neural networks: Applications to the calculation of cosmological phase transitions.

神经网络求解二阶常微分方程相关推荐

  1. python解常微分方程龙格库_求解二阶常微分方程的RungeKutta四阶方法

    我试着做一个简谐振子的例子,它将用龙格-库塔四阶法求解.要求解的二阶常微分方程(ODE)和初始条件为: y''+y=0 y(0)=0和y'(0)=1/pi 范围在0到1之间,共有100步.我用u作为辅 ...

  2. matlab编写求解二阶常微分方程,求一个复杂的二阶常微分方程的数值解,不会写代码= =...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如下是我写的计算步骤,稍后解释:(不想看可以跳过~) %main %input some parameters m1=input('please inpu ...

  3. python求解四阶微分方程_用Python求解二阶常微分方程组的RungeKutta四阶解

    本文试图用龙格库塔四阶法数值求解两个常微分方程组. 初始系统: 要解决的系统: 我有非常奇怪的解图... 我有: 正确的图形: 我在我的龙格库塔找不到麻烦.请帮帮我.在 我的代码在这里:dt = 0. ...

  4. 简单典型二阶系统_MIT—微分方程与线性代数笔记2.1 二阶常微分方程

    §2.1 二阶常微分方程 2.1 Second Order Equations 微分方程 MIT公开课<微分方程和线性代数> 2.1 二阶微分方程​v.youku.com 二阶常微分方程的 ...

  5. 二阶常微分方程(ODE)的打靶法(Shooting method),有限差分基础(python)

    第四十九篇 二阶常微分方程的打靶法 边界值问题 当我们试图用自变量的不同值所提供的信息来解二阶或更高阶的常微分方程时,我们必须使用与前面描述的不同的数值方法. 前面提到的初值问题经常涉及到" ...

  6. 用四阶RungeKutta方程解二阶常微分方程,并计算船舶在规则波中的横摇角(附Matlab代码)

    前几天接到师姐分派的任务,让我求解一艘船模的横摇角的时间历程曲线,为后期的减摇控制准备. 1 首先冷静分析一下,原方程如下: 我们要求解的就是theta角和时间t之间的关系曲线,这是一道典型的二阶常微 ...

  7. matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...

    方程求解程序清单 a=-1,b=2,c=-1; w=1; m=2; n=1; h = 0.02; t=0:h:30; s1=dsolve('a*D2y+b*Dy+c*y=sin(w*t)','y(0) ...

  8. 二阶常微分方程的数值解法(中心差分法和有限体积法)

    二阶常微分方程的数值解法(中心差分法和有限体积法) 这里我们介绍中心差分法和有限体积法求解方程. 题目: 用差分法的中心差分格式和有限体积法求解两点边值问题 u′′−α(2x−1)u′−2αu=0,0 ...

  9. 一阶欧拉近似matlab,MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程.doc

    MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程 姓名:樊元君 学号:2012200902 日期:2012.11.06 一.实验目的 掌握改进欧拉法与四阶龙格-库塔求解一阶常微分方程的初值问题 ...

  10. 【神经网络+数学】——(4)神经网络求解二元偏微分问题(二阶偏微分)

    背景 前面几篇博客介绍了神经网络应用到积分.一元N阶微分的原理.方法并实践了可行性,取得了较好的拟合效果,现在针对偏微分方程PDE进行最后的攻关,完成该部分攻关后即基本掌握了神经网络应用到方程求解的原 ...

最新文章

  1. 十进制 转换为 二进制
  2. keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法
  3. cordova 强制竖屏
  4. 03构建之法阅读笔记之三
  5. C#基础-应用程序域
  6. 改了上百遍!记上海交通大学第一篇《Science》
  7. Apache JMeter 压测webservice接口
  8. 信息学奥赛C++语言:乘车费用
  9. 不用再更换整机了,苹果官方可修复iPhone 12系列破裂后盖玻璃
  10. 5G 2.0 的最新动向
  11. quarz设置定时器任务的有效时间段_Quartz动态指定定时时间,每秒钟执行一次
  12. 【梦幻童年win7热门主题】
  13. c语言中元音字母对应的的值,c语言输入一个字符串,统计这个字符串的元音字母...
  14. Flex弹性盒子(一篇带你掌握潮流 Flex 布局)
  15. 几分钟黑掉阿里,被马云500万年薪收编的黑客,现在混得咋样了?
  16. RPC通信协议远程服务调用(25)Java全栈
  17. 如何批量下载天堂图片网上多个精美作品并保存一个目录
  18. 数据科学与大数据技术
  19. jquery svg恐龙蛇颈龙动画
  20. python清空运行界面_如何清除python界面

热门文章

  1. matlab ocx控件,matlabr.ocx控件下载
  2. 2019年南京大学计算机考研复试机试真题
  3. web应用程序的部署
  4. win10+ubuntu配置双系统
  5. MATLAB数值微积分与方程求解
  6. jquery版本共存_多个jQuery版本共存的处理方案
  7. matlab数理统计工具箱,Matlab数理统计工具箱应用简介
  8. 电力系统稳定与控制_风电场柔性直流系统组网型控制关键技术
  9. retainall java_瞬间教你学会使用java中list的retainAll方法
  10. ngod规范_规范-规范文档介绍内容-阿里云