python有限差分求解拉普拉斯方程

拉普拉斯方程是一种简单的二阶偏微分方程 , 形式如图 , 本文用python语言 , 有限差分的方法求解一个二维矩形平板上的定态传热问题 。

python有限差分求解拉普拉斯方程


工具/原料python3
matplotlib
numpy
如果你使用anaconda套装 , 那么上面的包应该都已经预装好了
请注意这篇文章的撰写日期为2018年2月
方法/步骤1这是拉普拉斯方程 , T是温度 , x , y分别是坐标 。 在这个传热问题中可以理解为平衡态下传入一个点的热量与传出这个点的热量相等 。

python有限差分求解拉普拉斯方程



2首先解释一下我们的问题 。
一个二维平板 , 上边缘为100摄氏度 , 左右和下边缘是0摄氏度 , 有传热的拉普拉斯方程求解平衡时平板上各点的温度 。
拉普拉斯方程较为简单 , 比较容易上手 , 代码编写比较容易

python有限差分求解拉普拉斯方程



3应该也容易想象 , 最后的结果应该类似于这样(这幅图是我的计算结果)

python有限差分求解拉普拉斯方程



4求解偏微分方程数值解首先需要离散化
离散化包含三个部分
1·求解区域的离散化
2·微分方程的离散化
3·定解条件的离散化

5求解区域的离散化
我们只对格点上的温度进行求解 , 若果把平面划分为0到10的二维格点 , 如图 , 那么我们需要求解的就是绿色的9*9的81个点上的温度值

python有限差分求解拉普拉斯方程



6定解条件就是边缘上的温度

7然后是微分方程的离散化

python有限差分求解拉普拉斯方程



python有限差分求解拉普拉斯方程



python有限差分求解拉普拉斯方程



8【python有限差分求解拉普拉斯方程】有了这些离散化 , 再加上对中间待求的点进行初始化 , 我们就可以开始计算了 , 我们可以将中间的点先初始化为30摄氏度 。 然后由上一部的离散化的方程逐步迭代 , 毕竟结果 。
虽然这种方法逼近速度不快 , 但是简介直接 。

9下面是python代码
首先导入必要的包
import numpy as npimport matplotlib.pyplot as pltimport copy

python有限差分求解拉普拉斯方程



10然后设定参数
#最大循环次数maxIter = 500
#矩形大小lenX = 20lenY = 20delta = 1
#边界条件Ttop = 100Tbot = 0Tleft = 0Tright = 0
#初始猜测值Tguess = 30
#设置颜色插值和颜色映射colorinterpolation = 50colourMap = plt.cm.jet

猜你喜欢