有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程
FDM解常微分方程
问题描述
\]
这是二阶常微分方程(second-order Ordinary Differential Equation, ODE),考虑最简单的情况即\(S=0\),积分后可得\(\phi=c_1x+c_2\),有两个待定系数,因此要求解该方程必须提供两个边界条件(因为方程中不包含时间项,因此无初始条件),例如
\]
场和边界
我们把上述方程转化为一个场(field)。试想存在一维(因为\(\phi\)仅与一个变量有关)直线,线上有若干等距分布的结点(node),每个结点都有唯一的\(\phi\),那么\(\phi\)和\(x\)的关系满足上述方程。
内部结点满足方程,那么边界上的\(\phi(x_L)\)和\(\phi(x_R)\)呢?事实上,边界应是内部结点的延申,即边界点也应该满足上述方程。这也是为什么我们可以通过两个边界条件求解\(\phi=c_1x+c_2\)的原因,这隐含的假设就是边界点满足常微分方程。
结点上的值
用数值方法求解上述方程等价于求解场内每个结点上的\(\phi\),结点\(i\)的上式表达为
\]
如何从结点值\(\phi_i\)得到导数值?很自然想到用Taylor展开。需要注意的是,Taylor展开隐含的假设是\(\phi\)无限可导。将\(i\)关于周围两点做Taylor展开,即

假设等距,则
\]
\]
其中\(\varepsilon_i\)为离散误差或截断误差(discretization or truncation error),该误差正比于距离的平方,因此我们称上式对导数的逼近有二阶精度。
边界条件
上一部分是对场内部结点的推导。边界上结点的值为边界条件,有以下三种形式:

Dirichlet
\]
Neumann
\]
将结点2关于结点1做Taylor展开,可以得到一阶精度的梯度表达式
\]
将结点3关于结点1做Taylor展开,结合上式可以进一步得到二阶精度
\]
对于非Dirichlet的边界条件,应尽量让边界条件也满足内部结点的控制方程。
对\(\phi_2\)和\(\phi_3\)关于结点1展开可得
\phi_3=\phi_1+(2\Delta x)\frac{d\phi}{dx}\bigg|_{i=1}+...
\]
将边界条件公式(3)代入上式可得
\phi_3=\phi_1+(2\Delta x)J_L+...
\]
将上式整理可得结点1满足的二阶导数项:
\]
上式为结点1满足的控制方程,并用上了梯度边界条件。需要说明的是,不用公式(6)而用公式(4,5)同样可以求解问题,但是前者的精度更高。
Robin
\]
类似地,令边界结点1既满足控制方程又满足边界条件。对上式移项可得
\]
同样代入\(\phi_2\)和\(\phi_3\)的Taylor展开,
\phi_3=\phi_1+(2\Delta x) \left( \frac{\gamma-\alpha \phi_1}{\beta} \right) +...
\]
消去三阶导数项并移项可得
\]
其中
\]
组建矩阵
有了内部结点的离散格式和边界条件,我们便可对每个结点列方程。由于结点\(i\)离散格式中势必会包含其他结点信息,例如对结点\(i\)
\]
将所有结点的方程组合起来,借助矩阵运算求解。
FDM求解泊松方程:二维问题
二维Poisson方程:
\]
如果\(S_{\phi}=0\),则退化为Laplace方程。二阶偏导数项同样使用Taylor展开,只不过针对该问题应使用二维展开。如果使用正交网格结点,则相当于在每一维独自做Taylor展开。

按上图所示,网格结点可分为内部结点和边界结点。
内部结点控制方程
由上文公式(2)可知,两个二阶偏导数项可分别写为
\]
\]
去掉高阶项,可得内部结点控制方程
\]
下边界
Robin边界条件
\]
对于下边界的某个非边角结点\((i,1)\),其中\(i\neq 1, i\neq N\),根据公式(7)来构建既满足边界条件又满足内部结点控制方程的离散格式,即公式(7)
\]
而下边界上\(x\)的二阶偏导数项仍按照公式(9)离散。因此,下边界结点的控制方程由公式(9)和(12)组成。
右边界
Neumann边界条件
\]
使用公式(6)得到\(x\)的二阶偏导数项,即
\]
而\(y\)的二阶偏导数项仍用公式(10)。右下角的结点\((N,1)\)应同时满足Robin和Neumann边界条件,该结点的\(x\)偏导数项应使用公式(13),\(y\)应使用公式(12)
上边界和左边界
Dirichlet边界条件:
\phi(x,H)=\phi_T
\]
有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程的更多相关文章
- Finite Difference Method with Mathematica
Euler's method
- 【小白的CFD之旅】18 控制方程基础
忙碌了一个学期终于放暑假了,小白心情很愉快.然而想起CFD教材上的那些点缀着各种让人眼花缭乱符号的数学公式,整个人就不好了.不过这些事情小白也不好意思去麻烦师兄师姐们,还得靠自己去摸索.正好趁着暑假把 ...
- Git详解之九 Git内部原理
以下内容转载自:http://www.open-open.com/lib/view/open1328070620202.html Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各 ...
- TCP/IP详解 读书笔记:TCP:传输控制协议
TCP的服务 TCP为应用层提供一种面向连接的.可靠的字节流服务. 一个TCP连接中,仅有两方进行彼此通信,所以广播和多播不能用于TCP. TCP通过以下方式提供可靠性: 应用数据被切割为TCP认为最 ...
- QuantStart量化交易文集
Over the last seven years more than 200 quantitative finance articles have been written by members o ...
- GraphicsLab Project 之 Curl Noise
作者:i_dovelemon 日期:2020-04-25 主题:Perlin Noise, Curl Noise, Finite Difference Method 引言 最近在研究流体效果相关的模拟 ...
- 【高斯消元解xor方程】BZOJ1923-[Sdoi2010]外星千足虫
[题目大意] 有n个数或为奇数或为偶数,现在进行m次操作,每次取出部分求和,告诉你这几次操作选取的数和它们和的奇偶性.如果通过这m次操作能得到所有数的奇偶性,则输出进行到第n次时即可求出答案:否则输出 ...
- SGU 106 在区间范围内的线性方程解个数
题意:求解方程ax+by+c=0,在区间x1->x2和y1->y2的解的个数. 看似简单,真心a的不容易啊! 开始跪于第8组数据,原因是没用long long !后来改了,跪于12组,超时 ...
- ffmpeg命令详解(转)
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库l ...
随机推荐
- Solution -「LOCAL」画画图
\(\mathcal{Description}\) OurTeam. 给定一棵 \(n\) 个点的树形随机的带边权树,求所有含奇数条边的路径中位数之和.树形生成方式为随机取不连通两点连边直到全 ...
- Solution -「LOCAL」逃生
\(\mathcal{Description}\) 有 \(n\) 个人掉进了深度为 \(h\) 的坑里,第 \(i\) 个人的肩高为 \(a_i\),臂长为 \(b_i\).设当前坑里人的集合为 ...
- Solution -「CF 1480G」Clusterization Counting
\(\mathcal{Description}\) Link. 给定一个 \(n\) 阶完全图,边权为 \(1\sim\frac{n(n-1)}2\) 的排列.称一种将点集划分为 \(k\) ...
- for循环例子2
代码 点击查看[ForTest2.java]代码 //package com.d; import java.util.Scanner; /** * for循环例子2 * @date: 2022.2.2 ...
- jmeter非gui之shell脚本
非gui运行脚本,如果目录非空,会报不能写的错 可以通过shell脚本来处理: #!/bin/bash filename=`date +'%Y%m%d%H%M%S'` if [ -d /root/te ...
- Renix绑定流详解——网络测试仪实操
一.测试环境 使用测试仪模拟两台主机直接发流,中间有路由器.如下图,测试仪port1端口模拟的主机IP为10.1.1.2,port2端口模拟的主机IP为10.2.1.2 二.预约测试资源 打开Reni ...
- Window常用快捷键
Window常用快捷键 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+A:全选 Ctrl+X:剪切 Ctrl+D:删除 Ctrl+Z:撤销 Ctrl+Y:反撤销 Ctrl+Shift+Esc:调出 ...
- 接口java.util.Map的四个实现类HashMap Hashtable LinkedHashMap TreeMap
java中HashMap,LinkedHashMap,TreeMap,HashTable的区别 :java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMa ...
- html页面引用script出现中文乱码问题
在html的head标签中加入代码: <meta http-equiv="Content-Type" content="text/javascript; chars ...
- 超简单的集成表达式树查询组件,Sy.ExpressionBuilder 使用说明
Sy.ExpressionBuilder是一套依赖于表达式树上的集成的查询组件.设计的初衷没别的,就为了少写代码,让查询业务可以变得更加模式化.目前可以从nuget 获取到该组件. 来到查询,查询实体 ...