最近做耦合问题又需要用到有限差分,就把这个放在草稿箱里的有限差分整理一遍发出来就当复习了!

1.有限差分法的引入与介绍

如果用一句话来概括有限差分法,那就是利用用网格节点逼近导数并建立代数方程组来求解各个网格上节点的值。在系列一里面我们知道要把一个无限、连续的问题通过区域的划分变成有限、离散的问题。在有限差分里的区域划分是等距的网格。

有限差分:利用用网格节点逼近导数,并建立有限个未知数的代数方程组来求解各个网格上节点的值。

上面这句话很显然就产生了两个问题,如何用网格节点逼近导数?(可以用高数里面学的泰勒展示)逼近哪里的导数?(这里面的区别就产生了向前向后和CN)。解决了上述两个问题,也就产生了不同的差分格式。

1.离散区域并给出差分格式

获得差分格式其实并不是一个很复杂的过程,随便几种差商格式组合、泰勒展开都能得到很多的差分格式,但有限差分最核心的地方并不在于差分格式构造,而是在于分析得到的差分格式靠谱不靠谱。

而这个分析格式是否靠谱,这就像兄弟们找对象,对方能不能逼近自己的理想型,这个叫收敛性,现实的遇到的那个人(数值解)和自己的理想型(方程的真解)越接近当然越好;在一起后遇到小矛盾(对应过来是小扰动或者截断、舍入误差)两个人的处理方式和后续的发展,这个叫稳定性,不管多小的矛盾都要闹成大矛盾,这种就是不稳定的,当然得淘汰掉ಠ_ಠ。

收敛性这个没有什么好说的,在本系列第一篇文章中有说到。至于稳定性,电脑计算小数时四舍五入造成的误差(舍入误差)一定存在,就要考虑他在逐层求解的时候是否会变得越来越大。常用的分析方法有矩阵法和fourier方法。

相容性是在得到一个点的值后,他和初始定义的值能不能相等,这个是相容性,一般是在第四步代数方程组求解完在验证。

以上一起就是有限差分法最核心的理论分析:

2.差分解的唯一性、收敛性计稳定性的讨论

接下来,这一步就是在前面的离散里面得到了一堆离散的关系表达式,如果这个关系表达式是显式的,而第一层(初边值条件)上的每一个离散点是已知的,这样可以用第一层离散点值来直接表示出第二层上所有的离散点的值。依次这样算下去,所有层上的离散点都能被求出来。当网格足够密的时候,也就是离散点足够多的时候,可以将其近似看作求出了UUU在区域内的解。

对隐式差分格式的计算,一般来说是一个三对角矩阵线性代数方程组的求解。这个问题就要从差分理论的战场转移到线性代数求解算法和计算复杂度优化上了:在数学上可以用追赶法和SOR方法来求解优化,在计算机上可以用稀疏矩阵的格式来存储来优化(因为三对角阵的0元素比较多)

这就是理论分析过后进行实际求解并且和计算机结合起来的一步:

3.求解代数方程组

最后一步当然就是通过程序的结果看看他是否和我们当时理论所计算的误差精度、稳定性是否一样啦

4.验证程序结果和理论结果的一致性

2.几个常见的差分格式

2.1 一维问题

1.对求解域做网格剖分

我们将区间[a,b]划分为等距的n个部分,对应的有n+1个节点,取这些节点为:

x0,x1...xi...xnx_0,x_1...x_i...x_nx0​,x1​...xi​...xn​

相邻节点间距为h=b−anh=\frac{b-a}{n}h=nb−a​,记为步长。

2.几种常见的差分格式

差分格式:用离散网格点的组合(这里也就是差分或者差商)代替方程中的偏导数的格式

在一维情况,取等距模板点xix_ixi​、xi−1x_{i-1}xi−1​、xi+1x_{i+1}xi+1​,两点间距都为 hhh,常见的差分格式有:

  • 向前差分格式:即两个离散点的差商是用来代替前面那个点的导数
    ux=xi+1−xihu_{x}=\frac{x_{i+1}-x_{i}}{h}ux​=hxi+1​−xi​​
  • 向后差分格式:即两个离散点的差商是用来代替后面那个点的导数
    ux=xi−xi−1hu_{x}=\frac{x_{i}-x_{i-1}}{h}ux​=hxi​−xi−1​​
  • 中心差分格式 :这时候要三个离散点,最边上两个点的差商来代替中间那个点的导数。
    ux=xi+1−xi−12hu_{x}=\frac{x_{i+1}-x_{i-1}}{2h}ux​=2hxi+1​−xi−1​​
    这时候也能刻画二阶导数,这就是二阶中心差分格式
    uxx=xi+1+xi−1−2xih2u_{xx}=\frac{x_{i+1}+x_{i-1}-2x_{i}}{h^2}uxx​=h2xi+1​+xi−1​−2xi​​

热传导方程中C-N格式(克兰克-尼科尔森方法)必须得拿来介绍一下。因为是在热传导方程中,所研究的对象 uuu 就是描述一个区域内的温度如何随时间变化,所以他含有对时间的偏导数。

CN格式的核心思想简单理解就是在时间层 t=n+1/2t = n+1/2t=n+1/2处的导数用中心差分格式,在xjxjxj用二阶中心差分格式。他的思路来源是:既然(j,n+1)(j,n)两点的差商可以代替t = n和t = n+1处的导数,那么能不能用这两个点的差商来代替中间点t=n+1/2t = n+1/2t=n+1/2的导数呢?当然是可以的,并且代替后,因为t=n+1/2t = n+1/2t=n+1/2这个时刻虽然在现实意义本身是存在的,但是他并没有出现在我们离散的网格点里面,我们就不能把它当作存在来处理,所以就用中心差分格式把这个时刻的导数用(j,n+1)(j,n)两点的差商来表示,这就是CN格式的由来。

同理还可以代替其他点比如t=n+1/12t = n+1/12t=n+1/12处的导数,代替不同点的导数截断误差也会有差别。

注1:在二维情况下,根据不同的目标问题,还可以取更多的模板点来构造差分格式以获得更好的数值解,例如椭圆型问题中取六个点的六点对称格式、激波管问题中引进人工粘性项的Lax-Wendroff格式等。
(待更新)

综上,所以可以看出来有限差分的步骤并不难,理论的基础相比有限元法要简单很多,以后的文章再利用具体的代表算例来求解。

【有限差分法】(一)有限差分法的基本流程与常用格式相关推荐

  1. 苹果应用内支付(iOS IAP)的流程与常用攻击方式

    苹果应用内支付(iOS IAP)的流程与常用攻击方式 Jan 19, 2017 常见支付流程 iap(in app purchase)指苹果应用内支付, 目前主要有两种方式. 1. 客户端直接veri ...

  2. SCI/EI期刊投稿 Reply Letter 常用格式总结

    SCI/EI期刊投稿Reply Letter常用格式总结 整个论文投稿的过程中,会遇到各种问题,需要我们向主编询问或是回复.下面主要总结了responses to the comments,以及催稿信 ...

  3. php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...

    JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换 1. JS的数据类型和访问 1.1. 原始类型JS中的原始数据类型有: number , string , boolean ; 声 ...

  4. html 文件常用格式

    html 文件常用格式 <!DOCTYPE html> <html lang="zh"> <head><meta charset=&quo ...

  5. OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo

    导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...

  6. 常用格式如何互相转换(jpg转png)

    现在因为图片格式的多样性,虽然多出了很多的选择,但是我们一般使用的还是默认的图片格式,有时候会使用到固定的格式,如果不兼容就要转换图片格式,那常用格式如何互相转换呢?以jpg转png为例吧! 1.在电 ...

  7. JAVA日期格式化常用格式对照表

    文章目录 1.常用格式对照示例 2.日期字符对照表 1.常用格式对照示例 格式 示例 yyyy-MM-dd HH:mm:ss.sss 2021-09-09 05:12:12.234 yyyy-MM-d ...

  8. 利用Word 2010对书籍排版进行设置(三)--常用格式设置(1)

    大家好,本座又回来了,这期继续为大家带来带来书籍排版设置的秘籍. 经过前面的设置后,就可以开始进行书籍内容的排版了.在排版过程中经常用到以下几种常用格式的设置. 应用样式的设置 我们都知道,在合适的位 ...

  9. java创建集合_java创建集合的常用格式

    创建集合的常用格式: 导包:import java.util.ArrayList; 创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型: ArrayList 变量名 = ...

  10. 英文SCI/EI期刊投稿Reply Letter常用格式总结(转载)

    整个论文投稿的过程中,会遇到各种问题,需要我们向主编询问或是回复.下面主要总结了responses to the comments,以及催稿信的模板. 1.回复信(Response Letter) 在 ...

最新文章

  1. Python学习中的点点滴滴
  2. Day 4 - PB级规模数据的Elasticsearch分库分表实践
  3. 计算机哪里看到32位还是64位,如何看电脑是32位还是64位?
  4. 通用权限实现的核心设计思想
  5. mac下登录mysql数据库_1.Mac下面按照mysql数据库的步骤:
  6. 关于语音发送/接收 方法和装置发明专利正式发布
  7. 顺义教委携手华平共建视频图像综合管理平台
  8. axis2 默认端口_基于 AXIS2/C 的 C 语言库实现对提供 REST API 的系统进行数据访问...
  9. 【源码】2012年斗地主结构算法公布(斗地主结构算法)
  10. linux系统英伟达gpu驱动卸载_英伟达显卡驱动程序被发现强制捆绑 官方已火速撤回驱动下载链接...
  11. 冠军奖金50万,2020腾讯广告算法大赛广发“英雄帖”
  12. mybatis 多数据源_Spring Boot 整合Mybatis实现多数据源配置及踩过的坑
  13. C# 字段、属性、成员变量
  14. RtlZeroMemory
  15. java开发周报变日报_程序员专用的日报、周报、月报、季报自动生成器!
  16. 电脑上有什么类似全能扫描王的软件?这4款扫描app1分钟帮你搞定几十张图片
  17. Python学习随笔:PyCharm的错误检测使用及调整配置减少错误数量
  18. opencv学习手册(三)(线条识别)(更新中
  19. Smart200控制两台V90伺服,绝对定位和速度控制,有屏程序,PN通信。 注释清楚
  20. 品达通用_9. pd-tools-log

热门文章

  1. 多载波瑞利信道matlab,瑞利信道仿真matlab.doc
  2. 单片机原理及应用c语言版课后答案张才华,单片机原理及应用(C语言版)习题答案.doc...
  3. xp系统的无线配置服务器,Windows XP系统下无线网卡配置及安装
  4. Nginx反向代理、静态资源下载
  5. 湖南省益阳市谷歌高清卫星地图下载(百度网盘离线包下载)
  6. java中的移位运算符<<,>>,>>>
  7. 学校题库管理系统需求分析
  8. 推荐阅读投资理财经典55本
  9. java qq 实现消息发送_java如何实现qq发送消息
  10. wacom影拓系列数位板驱动