python偏微分方程数值解 python求偏微分方程_微分方程的数值解法与程序实现 pdf


很多物理现象的都可以用方程来描述,比如热传导与物质扩散可以用扩散方程来描述,流体的流动可以用NS方程描述等等。如果能够将这些偏微分方程求解出来,就可以来对很多物理现象进行仿真,现在工程中的仿真软件都是通过程序数值求解一类偏微分方程。今天我们尝试求解一类偏微分方程,为了简单起见,我们以一个简单的平流方程为例,方程形式如下:


python偏微分方程数值解 python求偏微分方程_python偏微分方程数值解_02

平流方程


求解偏微分方程的数值解法非常多,这里也是采用一种较为直白的方法--------有限差分法,将上述的偏微分方程离散为差分方程,这里采用一种迎风格式的差分方法,首先我们可以看出这个平流方程由两个维度,一个空间维度x,一个时间维度t,我们对这两个维度进行离散:


python偏微分方程数值解 python求偏微分方程_偏微分方程_03

差分网格

差分方程


python偏微分方程数值解 python求偏微分方程_微分方程的数值解法与程序实现 pdf_04


将差分方程简化一下


python偏微分方程数值解 python求偏微分方程_python偏微分方程数值解_05


通过上述的差分方程我们可以通过上一个时间步的结果推进得到下一个时间步的结果:


python偏微分方程数值解 python求偏微分方程_偏微分方程_06


这里我们边界条件是周期边界如下图,周期边界的好处就是我们可以一直看到在我们的求解域内看到波的移动:


python偏微分方程数值解 python求偏微分方程_偏微分方程_07


方程的初始条件我们给空间维度上一个指数函数的波形:


python偏微分方程数值解 python求偏微分方程_matlab偏微分方程数值解误差_08


下面我们通过一段简单(其实挺长的,但是很容易理解)的Python代码对上述差分方程进行求解:


"""


python偏微分方程数值解 python求偏微分方程_偏微分方程_09


运行程序大家就可以看到一个波在来回移动。这里以一个简单平流方程为例,然后构造了其迎风格式的差分方程,然后用我们可爱的python语言进行求解,这里再次说明了计算机语言是一个工具,有了这个工具我们可以用它来做我们想做的事,对我来言Python做科学计算非常的Nice。