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

微分方程数值解 专栏收录该内容
3 篇文章 0 订阅

博主在这段时间将不断更新用微分方程数值解的一些理论和算法问题,并以python为工具讲解具体的算法实现。

直通链接: python与有限差分法(二)弦平衡问题(两点边值问题)内容梳理、算法求解与数值分析.
未完待续…

1.微分方程的种类

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

微分方程是描述现实问题的重要模型,主要有初值问题和边值问题两类。理论上来说只要一个物体的状态在变化,它的变化过程都是可以用微分方程描述刻画的,例如气体的扩散、记忆棉受力分析、声波传播、弦的振动等等。生活中的许多问题都可以用微分方程刻画:

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

u x x = f , a < x < b u_{xx}=f ,a<x<b uxx=f,a<x<b
u ( a ) = α , u ( b ) = β u(a)=\alpha,u(b)=\beta u(a)=α,u(b)=β

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

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

  • 椭圆型方程
    u x x + u y y = f ( x , y ) u_{xx}+u_{yy}=f(x,y) uxx+uyy=f(x,y)
  • 抛物型方程
    u t = a u x x u_t=au_{xx} ut=auxx
  • 双曲型方程
    u t t = a 2 u x x u_{tt}=a^2u_{xx} utt=a2uxx
    (注:二阶微分方程中也存在混合问题,在不同区域为不同的方程类型,这里不做讨论)

2.用数值解的目的

对于一个给定的微分方程,只有极少数的情况能直接获得其解析解,要直接通过数学手段求解这些微分方程是很困难的,所以就有了数值方法这一求解手段。

常微分方程的数值解法

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

偏微分方程的数值解法

  • 有限差分法(FDM,finite difference method)。应该是偏微分方程数值解法中理论、思想都最好理解的方法,本质是用差商刻画偏导数。用什么格式的差商刻画直接影响着收敛结果。
  • 有限元法(FEM,finite element method)。理论体系已经基本完善,学习需要一定的理论准备工作。此方法广泛应用在工程领域,是机械产品动、静、热特性分析的重要手段。在国内由冯康前辈开创。
  • 有限体积法
  • 谱方法

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

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

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

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

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

4.将会用到的python库

  • numpy:科学计算的基础包。提供了高效的数组(array)对象
  • SciPy:是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解等问题。
  • pandas:使python成为强大数据分析工具的重要因素之一,提供了精细的索引功能来进行选取数据子集的操作。
  • Matplotlib:最流行的绘制数据图表的python库
  • 8
    点赞
  • 0
    评论
  • 42
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值