博主在这段时间将不断更新用微分方程数值解的一些理论和算法问题,并以python为工具写一些算法实现。在理论这块课本上已经够详细与专业了,那就写的简单易懂一点吧ƪ(˘⌣˘)ʃ

直通链接:
常微分方程系列:
【微分方程数值解】常微分方程(一)欧拉方法和改进欧拉方法(附python算例,封装类)
偏微分方程系列:
python与有限差分法(二)弦平衡问题(两点边值问题)内容梳理、算法求解与数值分析.
未完待续…

1.微分方程的种类

恩格斯是这样来定义数学的:“数学是研究现实世界的量的关系与空间形式的科学 。”现实世界的东西一定程度上来说可以用数学上的方程来表示。

但在现实世界中,类似x^2 -x +1 =0这样的方程能对应的现实问题基本没有。大多数问题的数学建模是和所研究对象的变化率有关系的,例如弹性棉坐垫的弹力涉及到对位移的变化率,热的传导涉及到对时间的变化率。这个“变化率”在数学里的定义就是导数,所以就有了一类涉及到导数来描述问题的这类方程,这就是微分方程。理论上来说只要一个物体的状态在变化,它的变化过程都是可以用微分方程描述刻画的。

微分方程(model)是描述未知函数及其导数关系的方程。

如果现在建立了一个方程,它本身的状态是没有任何约束和说明的。但是我们知道,大部分研究都应该要有一个初始值:400米赛跑有起跑点和赛道,不是大家从各个地方乱跑400米就完了;研究导弹轨迹有初始坐标,在地上发射和山上发射是不一样的。。。这就是对研究对象的状态做一个事先的“约束与说明”。

又例如由弦的平衡方程导出的两点边值问题可以由下偏微分方程刻画:

uxx=f,a<x<bu_{xx}=f ,a<x<buxx​=f,a<x<b
u(a)=α,u(b)=βu(a)=\alpha,u(b)=\betau(a)=α,u(b)=β

这个方程就给出了u在a处和b处空间的约束。同理,对时间也可以进行约束和说明。

初值问题:约束调节涉及到时间
边值问题:约束条件涉及到边界。根据对边界的约束不同又可以细分为很多种,以后在讲到。

再进一步,若所研究对象同时和多个自变量相关,那么这个对象的变化率自然也有多个,这时候方程涉及到“偏导数”,也就有了偏微分方程:

常微分方程(ODE)是指微分方程的自变量只有一个的方程。
偏微分方程(PDE)相比常微分方程其自变量存在两个或以上,也就是说方程所要求解的是一个多元函数,刻画的是未知函数及其偏导数的关系。

偏微分方程中二阶最为典型常见,有椭圆形、抛物型、双曲型三种,下给出这三种偏微分方程最简形式:

  • 椭圆型方程
    uxx+uyy=f(x,y)u_{xx}+u_{yy}=f(x,y)uxx​+uyy​=f(x,y)
  • 抛物型方程
    ut=auxxu_t=au_{xx}ut​=auxx​
  • 双曲型方程
    utt=a2uxxu_{tt}=a^2u_{xx}utt​=a2uxx​

注1:二阶微分方程中也存在混合问题,在不同区域为不同的方程类型,这里不做讨论
注2:椭圆方程不含时间变量只含空间变量,而抛物和双曲既含时间变量也含空间变量

2.用数值解的目的

假设前面的一切工作:建模、约束都准备好了,但是对于一个给定的微分方程,只有极少数的情况能直接获得其解析解,也就是说要直接通过数学手段求解这些微分方程是很困难的,所以就有了数值方法这一求解手段,这就是计算数学专业所干的。

我们在用数值方法求解微分方程时,由于计算机不能处理连续的数学方程,所以在用计算机处理问题时,必须先将一个无限的连续问题通过一些特殊的方法离散化,使之成有限形式的线性代数方程组,再将这个线性代数方程组交给计算机求解以达到我们的目的。

常微分方程的数值解法

  • 欧拉法。由此思想衍生出后退欧拉法和改进欧拉法
  • 龙格库塔方法。

偏微分方程的数值解法

  • 有限差分法(FDM,finite difference method)。偏微分方程数值解法中理论、思想都最好理解的方法,本质是用差商刻画偏导数。重点在差分格式的选择。系列会在专栏里更新
  • 有限元法(FEM,finite element method)。理论体系已经基本完善,学习需要一定的理论准备工作。此方法广泛应用在工程领域,是机械产品动、静、热特性分析的重要手段。在国内由冯康前辈开创。待更新
  • 有限体积法:和有限元法有些类似。待更新
  • 谱方法。

3.如何衡量一种数值方法的优良?

衡量一个数值方法得到的解好不好,一是要看它和正确解的逼近程度,差太多了自然不行,这个“差的多”在数学里有一套度量的方法;另外一个要看他的运算时间,要是有方法A能一分钟算对,方法B算一天算对,那B当然要拿出去枪毙了。

对数值方法来说可以用【解的对】和【解的快】两个词来衡量其优劣。

“解的对”是数值解方法的前提,如果得到的解不是收敛于真解的,那数值解得到的结果毫无意义,建立在数值解方法理论不出错的前提才能再讨论算法速度。

  • 收敛性讨论:考虑算法在数学理论上是否正确,能否收敛于真解。这种【是否收敛】以及【收敛的好与坏】一般用范数来估计。
  • 稳定性讨论:在出现一个小的“干扰”的情况下,这个小干扰带来的影响是否会扩大?讨论这个小干扰是必要的,因为类似截断、四舍五入这类方法一定会带来小干扰(也就是误差,因为丢掉了一些东西),这个小干扰本身并不大但是一定会产生,并且如果这个干扰还会扩大的话(例如运算涉及到迭代),他就会对结果产生巨大的影响。 稳定性一般在需要迭代的时候要讨论。如果不稳定,那么这个小干扰会随着迭代的过程越来越大。

“解的快”考虑收敛的速度、算法的复杂度。两种方法的结果一样,当然是算的越快的方法越好。

3.1 如何在程序中验证算法的“对”与“快”?主要有以下几种方法。
  • 图像:通过matplotlib绘图看看数值解是否趋于真解。算法理论得到的解是否正确和绘图对比之间是可以相互验证的。
  • 数值表:通过数值解与对应位置真解的差可以刻画收敛速度or收敛阶。同样,算法理论的收敛阶和该数值表是可以相互验证的。
  • 实际算法运行的时长比较
3.2 如何对数值解进行优化?
  • 从数学理论的角度:一般来说提高精度的代价是提高复杂度,可以考虑如何在不损耗太多精度的情况下,降低复杂度(例如非常多次的迭代运算就是复杂度高的体现)。典型例子是后退欧拉法向改进欧拉法的过渡。
  • 从程序的角度:降低代码逻辑层面的运算量

4.将会用到的python库

  • numpy:科学计算的基础包。提供了高效的数组(array)对象
  • SciPy:是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解等问题。
  • pandas:使python成为强大数据分析工具的重要因素之一,提供了精细的索引功能来进行选取数据子集的操作。
  • Matplotlib:最流行的绘制数据图表的python库
  • fealpy :湘潭大学魏华祎老师开发的有限元法开源库。国内的开源有限元程序做的非常少。feon有限元库为python2.7,不知道更新没有。科研且想用python,魏老师的fealpy是最好的选择,工业计算可能还是不合适。

如果这篇文章对你有帮助,欢迎点赞关注~(///)

【微分方程数值解】常\偏微分方程及其常用数值解法概述相关推荐

  1. 偏微分方程的matlab解法微盘,偏微分方程的MATLAB数值解法.pdf

    造最优秀.专业和权威的Matlab 技术交流平台! 偏微分方程的MATLAB 求解精讲 作者:dynamic 时间:2008.12.10 版权:All Rights Reserved By ★★★★★ ...

  2. 常微分方程数值解的c语言程序,常微分方程的数值解法 一阶常微分方程数值解的C语言编程实现.doc...

    常微分方程的数值解法 一阶常微分方程数值解的C语言编程实现 导读:就爱阅读网友为您分享以下"一阶常微分方程数值解的C语言编程实现"资讯,希望对您有所帮助,感谢您对92的支持! 一阶 ...

  3. 偏微分方程数值解法python_基于python求解偏微分方程的有限差分法资料

    基于python求解偏微分方程的有限差分法资料 Computer Era No. 11 2016 0 引言 在数学中, 偏微分方程是包含多变量和它们的偏 导数在内的微分方程.偏微分方程通常被用来求解 ...

  4. 微分方程的数值解法——常微分方程——差分法(1)

    微分方程的数值解法--常微分方程--差分法 差分法思想: 差分就是讲解析解中的差分方程中的微分项用差分来代替,当取得变量步长足够小时可以无限逼近. 两大步骤: 1.建立差分格式 1.对解得存在区域划分 ...

  5. 二阶边值问题的数值解matlab,《二阶常微分方程边值问题的数值解法》-毕业论文.doc...

    w 摘 要 本文主要研究二阶常微分方程边值问题的数值解法.对线性边值问题,我们总结了两类常用的数值方法,即打靶法和有限差分方法,对每种方法都列出了详细的计算步骤和Matlab程序代码,通过具体的算例对 ...

  6. 微分方程数值解法(实际应用)

    微分方程数值解法(实际应用) 假设有这样一种情况,关于人行走的,从A到B地,行走速度越来越慢,速度是关于时间1/(t+A)的函数,现在求当s和时间t的关系: 从微分的角度看,v=s'=1/(t+A) ...

  7. 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...

    <微分方程的数值解法matlab四阶龙格-库塔法课件>由会员分享,可在线阅读,更多相关<微分方程的数值解法matlab四阶龙格-库塔法课件(36页珍藏版)>请在人人文库网上搜索 ...

  8. 微分方程的数值解法——常微分方程——欧拉法与改进欧拉法(2)

    改进欧拉法 与上一篇中实例相比,改进欧拉法多了一步修正过程,正是应为有了该一步修正过程使得数值解法具有更高一级精度. 先看下面两幅图,第一幅是没有改进的欧拉法,第二幅是改进的欧拉法 两者相比误差有很大 ...

  9. 学习日记11--常微分方程数值解法

    8.00 开始学习 常微分方程数值解法--龙格库塔法(RK法) RK法的K的个数就是其精度的阶数,常用的有四阶RK法 y(i+1) = y(i)+h*(K1+2*K2+2*K3+K4)/6       ...

  10. 偏微分方程数值解法python_Python数值计算----------求解简单的偏微分方程

    很多物理现象的都可以用方程来描述,比如热传导与物质扩散可以用扩散方程来描述,流体的流动可以用NS方程描述等等.如果能够将这些偏微分方程求解出来,就可以来对很多物理现象进行仿真,现在工程中的仿真软件都是 ...

最新文章

  1. 冬奥会夺金的背后杀手锏,竟是位 AI 虚拟教练
  2. 溢出漏洞利用小结(基础)
  3. 中国信通院:2019年Q1全球人工智能产业数据报告
  4. 在UWP中自定义半边框样式的输入框
  5. 应用程序无法启动_Windows 10触发启动应用程序警报,以避免系统变慢
  6. 数据分析师 需求分析师_是什么让分析师出色?
  7. [CQOI2017]小Q的棋盘
  8. 矩形法_教程 | 三个案例教会你大师都爱用的矩形造字法!
  9. 【Flink】kafka Response from server for which there are no in-flight requests NETWORK_EXCEPTION
  10. 用Python一键批量将任意结构的CSV文件导入 SQLite_用 Python 使用 Google Colab?岂止是炫酷...
  11. 极客大学架构师训练营 系统架构 淘宝架构 第四次作业
  12. 嵌入式工具 | 嵌入式开发常用几款的代码编辑器
  13. 苹果电脑怎么装windows系统(学习笔记)
  14. 不格式化改U盘文件系统格式
  15. 2018.8.14 李开复重返 TED 演讲稿双语版
  16. 作为零基础的新手,如何自学Java和JavaEE开发技术?
  17. 关于在安卓M上无法申请 SYSTEM_ALERT_WINDOW 权限的解决方案
  18. 程序设计入门C语言 --- 素数和
  19. PS 快速抠图换背景
  20. ubuntu定时执行任务

热门文章

  1. Asp.Net 4.0 新特性,输出更纯净的Html代码 ClientIDMode,ViewStateMode等
  2. UI自动化测试之元素定位
  3. python中win32api_Python win32api.SetCursorPos方法代码示例
  4. 优化 RTD 温度传感系统:挑战
  5. python3菜鸟教程
  6. webstorm汉化怎样切回英文_webstorm 单词快捷翻译设置
  7. Weblogic的下载、安装、使用
  8. Java基础编程题50道题
  9. H5商城在微信APP里支付
  10. PYTHON前端几个框架的比较