有限差分法简介

0.前言

有限差分法是一种数值计算方法,用于求解偏微分方程。其基本思想是将连续的偏微分方程离散化,转化为离散的代数方程组,然后通过求解这个代数方程组来得到数值解。

在有限差分法中,我们将求解区域划分为一系列网格点和区域,然后在每个网格点处近似表示原方程的导数,这样就可以得到一个离散的方程组。具体地说,我们可以使用中心差分法、前向差分法或后向差分法来近似表示导数。然后,我们将这些差分方程组合起来,得到一个方程组,可以使用常见的迭代法等求解方程组。例如一维问题的差分方法如下:

中心差分法:对于函数f(x),在x点处的导数可以用以下公式计算:

f'(x) = (f(x+h) - f(x-h)) / (2h) ,其中h是一个足够小的数,通常取0.001或0.0001等。

前向差分法:对于函数f(x),在x点处的导数可以用以下公式计算:

f'(x) = (f(x+h) - f(x)) / h

后向差分法:对于函数f(x),在x点处的导数可以用以下公式计算:

f'(x) = (f(x) - f(x-h)) / h

01.基本步骤

  1. 写出描述问题的微分方程

  2. 离散化求解区域,将问题转化为有限维

  3. 用差分形式代替偏导数,即改写微分方程为线性方程

  4. 求解线性方程组

  5. 可视化和后处理

02.必须考虑的其它问题

  1. 求解方法是否合理

  2. 求得的近似解精度如何

  3. 求解的收敛速度

03.案例—泊松方程

1.描述问题的微分方程

ps: 拉普拉斯算子作用u,是将u从d维向量空间映射到实数空间

2.离散化求解区域

PS: 中心为(0,0)

ps: 边界的红点处U=0

3.用差分形式代替偏导数,即改写微分方程为线性方程

ps: 该公式也叫中心差商

代入微分方程后得下图

依次遍历所有点,一一代入上式中,例如下图所示,把1节点代入差分方程,一共有五项,分别对应一节点左右前后和自身,得到下图第一个方程。

4.求解线性方程组

本案例中的f理解成体力,注意的是,与有限元把不同的地方是,有限差分法是基于对原求解方程的高度近似(纯数学的方式,差商代替导数),没有事先用到假设插值解的形式,即先求离散点的解,后用假设解函数(由离散点的解插值得到);而有限元是先对原求解方程的解,给出一个假设的插值解函数,再来根据一些原理(基于最小势能原理,虚功原理,加权残值法等)求出离散点的解,最后再用到假设解函数。但是本质上二者都是对微分方程的改造。还有就是差分法不用将外部作用转化为节点处的作用(作用未必是力)

04.代码分享

最后分享一些学习之余收集的代码和资料,有些算法我目前也不太熟悉,等以后有机会再讲解代码,这里有需要的同学可以公众号回复泊松方程即可获取。最后强调下,我写的大部分内容旨在分享方法和思路,通过认识了解这些方法更好的使用相关软件或者为开发打基础,不是每个人都有编程的必要,满足好奇心或者广泛学习都是有意义的,知道自己对什么感兴趣,打算做什么。欢迎大家一起学习交流,我的兴趣爱好是数值计算和机器学习,会持续更新相关笔记,不当之处,欢迎指出。获取更多资料和学习交流欢迎大家关注公众号冬生亦东生,分享旨在本人复习和交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬生亦东生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值