基于Python求解偏微分方程的有限差分法

·14·

Computer Era No. 112016

DOI:10.16644/j.cnki.cn33-1094/tp.2016.11.005

基于Python求解偏微分方程的有限差分法*

王登岳,张宏伟

(西安石油大学电子工程学院光电油气测井与检测教育部重点实验室,陕西西安710065)

要:偏微分方程的求解是很多科学技术问题的关键难点。随着计算机性能的不断提高,数值解法能够解复杂的偏

微分方程并将计算结果图形化。相对于昂贵的科学计算软件,Python 是一种免费的面向对象、动态的程序设计语言。有限差分法以其概念清晰,方法简单、直观等特点在偏微分方程的求解中得到了广泛的应用。文章对矩形区域的拉普拉斯方程进行数值求解,采用Numpy 对有限差分法进行计算,运用Matplotlib 绘制等值线,输出迭代次数以及误差。关键词:偏微分方程;Python ;数值解法;有限差分法中图分类号:TP3

文献标志码:A

文章编号:1006-8228(2016)11-14-03

Python programmed finite difference method for solving partial differential equations

Wang Dengyue, Zhang Hongwei

(Xi'an Shiyou University, Electric Engineering College, Key Laboratory of Photo Electricity Gas and Oil Detecting of Ministry of Education, Xi'an,

Shaanxi 710065, China )

Abstract :To solve the partial differential equations (PDE)is a key difficult point in many scientific and technical problems. With the development of computer performance, numeric solution can solve many sophisticated PDE and visualize the numeric results. Rather than the expensive science computing software, Python is a free object-oriented language, dynamic programming language. Finite difference method (FDM)is widely used for its clear, simple and intuitive. Laplace problem in a rectangular area is solved numerically in the article, computed through FDM with the Numpy library, visualized through plotting the contour by the Matplotlib library, and the number of iteration and the error are given.

Key words :partial difference equation ;Python ;numeric solution ;finite difference method

0引言

在数学中,偏微分方程是包含多变量和它们的偏导数在内的微分方程。偏微分方程通常被用来求解声、热、静态电场、动态电场、流体、弹性力学或者量子力学方面的问题[1]。这些现象能够被模式化的偏微分方程描述,正如一维动态系统通常会用常微分方程描述。为了更深入地理解上述各种现象,求解偏微分方程成为理解以及解释上述现象的关键。

序库的开发,Python 同样适合于做科学计算以及绘制高质量的2D 和3D 图像。与科学计算领域的商业软件Matlab 相比,Python 是一门通用的程序设计语言,比Matlab 所采用的脚本语言的应用更广泛,有更多的程序库的支持。

Numpy 是使用Python 进行科学计算的基础包:①它的基本类型是N-维阵列对象;②提供了功能强大的函数;③可以提供C/C++与Fortran 代码的接口;④强大的线性代数计算,傅里叶变换以及随机数计算[2]。SciPy 由一系列的数值计算和特定领域的工作箱构成,常用的工具箱包括信号处理,优化算法以及统计等。

Matplotlib 能够产生不同格式高质量的图片,该软件可以在不同的平台上使用,例如采用Python 脚本,提供python 或者Ipython 的命令行接口(类似于Matlab

1Python 及相关模块简介

Python 是一种面向对象、动态的程序设计语言。具有非常简洁而清晰的语法,适合完成各种高层任务。它既可用来快速开发程序脚本,也可用来开发大规模的软件。随着Numpy,SciPy,Matplotlib 等众多程

收稿日期:2016-8-23

*基金项目:国家自然基金项目(51504194);陕西省科技攻关项目(2016GY-167)

作者简介:王登岳(1989-),男,陕西省渭南市人,硕士在读,主要研究方向:电磁探测技术。

计算机时代2016年第11期

或Mathematica )等等[3]。Matplotlib能够绘制直方图、功率谱图、残差图以及散点图等等。本次我们采用Matplotlib 中的简单的绘图对象Pyplot,Pyplot 提供了一个类Matlab 的接口,可以通过Pyplot 完全控制线型、字体特征和坐标轴特征等。

·15·

为二维平行平面场问题。选定直角坐标系如图1所示,槽内电位函数满足拉普拉斯方程,构成如下的第一类边值问题:

2PDE 解法简介

求解偏微分方程可以通过解析方法求解,解析法包括建立和求解偏微分方程,严格求解偏微分方程的经典方法是分离变量法。解析法的优点是可以求解出表示为已知函数的显式,从而得到精确的结果。但解析法存在严重的缺点,只有在为数不多的坐标系中进行分离变量,对更复杂的模型很难通过解析计算得到。随着计算机性能的日益提升,数值计算在近年来取得来巨大的进步,不仅能够对常规的偏微分进行数值验证,而且也能够对模型复杂的偏微分方程进行计算。常用的数值方法主要包括有限差分法,有限元法以及有限体积法。数值方法适合求解模型比较复杂的偏微分方程[4]。

j (x

=0,0£y£100=0,0£x£100=100,0£y£100) =j (y) =j (x) =0

∂2j ∂2j +=0∂∂,y(x) ŒD

j (000

100) =1

3Python 解PDE 流程

在数值计算方法中,有限差分法是应用最早的一种方法,直到今天,它仍然以简单、直观的特点而应用广泛[5]。不论是常微分方程还是偏微分方程,对初值问题或者边值问题、椭圆型、双曲型或抛物型二阶线性方程,以及高阶或非线性方程,通常都可以采用有限差分法将它们转化为代数方程组,再借助计算机求其数值解。

本文结合一个简单的电场的例子,给出求解偏微分方程的数值解法的过程。一个长直接地金属槽中的电场,其侧壁与底面电位均为0,顶盖电位的相对值为100。对于此槽中间区段的电场分析,可以理想化

图1求解区域

按照有限差分法的计算步骤,上述给出的例子的解题过程如下。

⑴场域离散化:用正方形网格对图示区域进行剖分,步距为1,剖分为100个点。

⑵给出高斯-塞德尔迭代法的差分方程:

n+1j ij,=

nnnn

j i+j +j +j (+1,jij,+1i-1,jij,-1) 其中程序中采用的不是单点迭代计算,而是将所有的点分成如图2所示的矩阵块,图中阴影部分矩阵代表N-2维矩阵,

进行迭代计算。

图2迭代示意图

给定边界条件以及内点的初值,侧壁与底面电位均为0,顶盖电位的相对值为100。

给定迭代解收敛判定指标:当每一点相邻两次迭代值得绝对误差小于可以接收的范围时;迭代次数过

多大于所能接受的范围时。当上述两者任意一个条件满足,则停止迭代,输出计算结果,迭代次数n=5991,误差m=0.001,表明经过5991次后误差已经达到我们所需的精度。

·16·

Computer Era No. 112016

绘制电场分布的等值线图,所得的结果如图3

所示。

图3电势结果图

上述计算的整个过程如图4所示。

4结束语

偏微分方程的求解在科学和工程计算中占据重要地位。虽然Matlab 能够进行大部分PDE 方程求解,但是价格昂贵,对三维的PDE方程组的支持并不完善,而且因其闭源软件属性,对软件的扩展使用必须经过厂商认证之后,厂商才会添加其接口。Python进行科学计算时只需要根据功能选择好相关的库即可,Numpy 模块以及Matplotlib模块中的pyplot子模块便能够解决矩形区域的拉普拉斯方程求解以及将其图形化。现实中的求解问题通常并不是针对规则区域,因此对于不同类型的模型,建模问题还有待进一步研究,并将其他软件中的模型导入作为更深层次研究的重点内容。

图4

计算流程图

参考文献(References):

[1]Partial differential equation. [EB/OL].[2016-08-11].https://en.wikipedia.org/wiki/Partial_differential_equation[2]Numpy.[EB/OL][2016-08-11].http://www.numpy.org/[3]Matplotlib.[EB/OL][2016-08-11].http://matplotlib.org/index.html

[4]王秉中.计算电磁学[M].科学出版社,2002.

[5]倪光正,杨仕友,邱捷.工程电磁场数值计算[M].机械工业出

版社,2010.

(上接第13页)

参考文献(References):

[1]孙伟,鲁骏,李艳灵.一种面向用户的约束角色挖掘优化[J].信阳师范学院学报:自然科学版,2014.27(4):589-592,618[2]ZHANG YUE,JOSHI J B D.Uaq:aframework for user authorization query processing in RBAC extended with hybrid

hierarchy

and

constraints[C]//Proceedings

of

the 13th ACM Symposium on Access Control Models and Technologies.New York:ACMPress,2008:83-92[3]马晓普,李瑞轩,胡劲纬.访问控制中的角色工程[J].小型微型计算机系统,2013.34(6):1301-1306

[4]王婷,陈性元,任志宇.授权管理中的权限衍生计算方法[J].计算机应用,2011,31(5):1291-1294.

[5]王婷,陈性元,张斌,等.基于互斥角色约束的静态职责分离策

略[J].计算机应用,2011,31(7):1884-1886,1890

[6]杨柳,唐卓,李仁发,等.云计算环境中基于用户访问需求的角色查找算法[J].通信学报,2011,32(7):169-175

[7]Zhang Dana, Ramamohanarao K, Ebringer T.Role engineering using graph optimisation[C]//Proc.of the 12th ACM Symposium on Access Control Models and Technologies.Sophia Antipolis:ACMPress,2007:139-144

[8]FU ZHAOHUI,MALIK S.On solving the partial MAX-SAT problem[C]//ProceedingsConference

on

the

of Theory

the and

9th

International

of

Application

Satisfiability Testing-SAT 2006. Seattle:IEEE Press,

2006:252-265


相关文章

  • 20**年-04-23 有限元方法(Fluids)
  • 流固耦合计算力学 有限元方法(有限元方法(计算流体)计算流体) 刘谋斌 [email protected] 北京大学工学院 第一部分:第一部分:数学基础回顾 第二部分:第二部分: 第三部分:第三部分: 第四部分:第四部分: : 第六部分:第六部分:一维问题FEM 分析二维问题FEM 分析非定常问题FE ...

  • 岩质高边坡稳定性评价方法的综述
  • 岩质高边坡稳定性评价方法的综述 〇边坡分类 <公路路基设计规范>中提出, 土质路堑边坡坡高大于20m, 岩质或土石混合路塑边坡坡高大于30m 为高边坡, 路堤边坡坡高大于20m 为高边坡, 坡度超过1:2.5都为斜坡路堤; 一.边坡安全性评价方法研究现状 二十世纪60年代以前, 自然灾害 ...

  • 弹性波动方程数值解的有限元并行算法
  • 2006年 第30卷 中国石油大学学报(自然科学版) V ol. 30 No. 5 第5期 Jour nal of China U niv ersity of Petroleum Oct. 2006 文章编号:1673-5005(2006) 05-0027-04 弹性波动方程数值解的有限元并行算法 ...

  • 偏微分方程在图像处理中的应用
  • 2007年5月安徽教育学院学报May.2007 第25卷第3期JournalofAnhuiInstituteofEducationVol.25No.3 偏微分方程在图像处理中的应用 周 晓1,朱才志2 (1.安徽教育学院教育系,安徽合肥230061,2.中国科学技术大学电子工程与信息科学系,安徽合肥 ...

  • 牛顿迭代法文献综述
  • "牛顿迭代法"最新进展文献综述 牛顿法是一种重要的迭代法,它是逐步线性化的方法的典型代表.牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重 ...

  • 时域有限差分法在势垒贯穿问题中的应用
  • 第27卷第5期2007年9月 云南师范大学学报 JournalofYunnanNormalUniversity V01."No.5 Sep.2007 时域有限差分法在势垒贯穿问题中的应用' 谷桂初,周庆 (云南大学物理系,云南昆明650091) 摘要:时域有限差分(Finite Diffe ...

  • 地震波形和速度模型异质性
  • 地震波形和速度模型异质性:面向全波形微震定位算法 摘要:地震正演模拟是微震定位算法的一个组成部分,但通常有没有一个正确的做法,而有许多可行的做法.由于地震信号的频带受限,不均匀物质的长度规模可显著影响地震波面和波形.地下异质能强以及变化的长度等于或小于主导光源的波长,对用于钻孔微震监测特别重要.在本 ...

  • 流体计算理论基础
  • 流体计算理论基础 1 三大基本方程 1.1 连续性方程 连续性方程也称质量守恒方程,任何流动问题都必须满足质量守恒定律,该定律可表示为:单位时间内流体微元中质量的增加等于同一时间间隔内流入该微元体的净质量,其形式如下: ∂ρ∂(ρu ) ∂(ρv ) ∂(ρw ) +++=0 ∂t ∂x ∂y ∂z ...

  • [有限差分法在微分方程中的应用]课程论文
  • 课 程 论 文 有限差分法在微分方程中的应用 本学期学习了<微分方程数值解>,本书中有限差分法给我留下的印象比较深刻,下边说说自己在方面的一点理解,请老师指正. 1. 有限差分法的基本思想: 当系统的数学模型建立后,我们面对的主要问题就是微分积分方程的求解. 基本思想是用离散的只含有限个 ...

  • 北斗高动态双频相对定位技术
  • 第29卷第3期 2010年6月 飞行器测控学报 Joumal ofSpacecraftTT&CTechnology V01.29No.3 Jun.2010 北斗高动态双频相对定位技术' 万祥,张孟阳 (北京卫星信息工程研究所・北京・100080) 摘要:"北斗"卫星导航定 ...

© 2024 范文中心 | 联系我们 webmaster# onjobs.com.cn