拉普拉斯方程(Laplace's equation)又称调和方程、位势方程,是一种偏微分方程,因由法国数学家拉普拉斯首先提出而得名。

两个自变量的拉普拉斯方程具有以下形式:

对于这样一个偏微分方程,我们想要通过计算机求它的数值解:对于一个函数f(x)在x处的一阶导数我们可以用它的中心差分来表示:f'(x)=(f(x+dx/2)-f(x-dx/2))/dx.令dx=1可得f(x)步长为1的一阶导数f'(x)=f(x+0.5)-f(x-0.5).同理f(x)的二阶导数f"(x)可以看作f(x+0.5)-f(x-0.5)的一阶导数,再使用一次中心差分可得f"(x)=f(x+1)-2f(x)+f(x-1)。

对于二元函数F(x,y),F(x,y)对自变量x的二阶偏导为F(x+1,y)-2F(x,y)+F(x-1,y),对自变量y的二阶偏导为F(x,y+1)-2F(x,y)+F(x,y-1)。对拉普拉斯方程可以得到F(x+1,y)-2F(x,y)+F(x-1,y)+F(x,y+1)-2F(x,y)+F(x,y-1)=0,即F(x,y)=(F(x+1,y)+F(x-1,y)+F(x,y+1)+F(x,y-1))/4。在已知边界条件和初始条件的情况下可以迭代求和得到满足精度要求的数值解F(x,y)。

对于以下案例:

将求解区域划分成100X100的网格,定义初始条件和边界条件之后,使用F(x,y)=(F(x+1,y)+F(x-1,y)+F(x,y+1)+F(x,y-1))/4公式进行迭代计算。以下为python代码我让求解过程迭代10000次:

import numpy as np
import matplotlib.pyplot as plt
m=101
n=101
U=np.zeros([m,n])
F=np.zeros([m,n])
#定义边界条件
F[m-1,:]=100
e=0.001
count=0for i in range(10000):count+=1F[:,0]=0F[:,n-1]=0F[0,:]=0F[m-1,:]=100U[1:-1,1:-1]=(F[1:-1,:-2]+F[1:-1,2:]+F[:-2,1:-1]+F[2:,1:-1])/4e=abs(U-F).max() #求助老师我这个值为何总是0F=Ux=np.arange(0,m)
y=np.arange(0,n)
X,Y=np.meshgrid(x,y)
C=plt.contour(X,Y,U)
plt.clabel(C, inline = True, fontsize = 10)

得到如下位场等值线图:

我将相邻两次迭代的结果定义为误差。我将矩阵各元素的最大误差控制在0.001内,MATLAB代码如下:

clc
clear
m=101;
n=101;
U=zeros(m,n);%电势
F=U;
count=0 %计数器
e=0.001; %要求误差精度
while e>=0.001count=count+1;%初始条件F(1,:)=0;F(:,1)=0;F(:,n)=0;F(m,:)=100;U(2:m-1,2:n-1)=(F(2:m-1,1:n-2)+F(2:m-1,3:n)+F(1:m-2,2:n-1)+F(3:n,2:n-1))/4;e=abs(max(max(U-F)));F=U;
endx=0:m-1;
y=0:n-1;
[X,Y]=meshgrid(x,y);
figure
[c,h]=contour(X,Y,U,[0:10:100]);
clabel(c,h)

得到如下图所示的位场图:

二维拉普拉斯方程的数值解法相关推荐

  1. 有限元方法基础-以二维拉普拉斯方程为例(附程序)

    文章目录 前言 问题描述 问题区域 偏微分方程 变分问题(弱形式) 有限元离散 二维线性有限元 : 参考基函数 2D linear finite element : affine mapping 有限 ...

  2. 有限元方法求解二维拉普拉斯方程C++实现

    文章目录 前言 问题 区域 方程 程序设计 几何区域 网格单元 刚度矩阵组装 数值结果 问题区域网格 u 值图像(结果导出借助Matlab画图) 总结 前言 本文利用C++语言实现在二维任意区域(内部 ...

  3. 二维拉普拉斯方程的极坐标形式

    https://www.zhihu.com/question/29096466 目录 参考文章 Cauchy-Riemann方程的极坐标形式(翻译) 拉普拉斯方程极坐标形式是怎么推导出来的 极坐标形式 ...

  4. 二维拉普拉斯方程的基本解

  5. 二维burgers方程_二维Burgers方程的RKDG有限元解法

    二维 Burgers 方程的 RKDG 有限元解法 ∗ 马艳春 1, 张寅虎 2, 冯新龙 1 [摘 要] 摘 要 : 本文应用 RKDG 有限元方法求解具有周期边界条件的二维非粘 性 Burgers ...

  6. 二维Poisson方程五点差分格式及简单求解方法Python实现

    二维Poisson方程简介 给出 二维 PoissonPoissonPoisson 方程 DirichletDirichletDirichlet 边值问题: {−Δu=f(x,y)(x,y)∈Ωu=φ ...

  7. 二维有限元方程matlab,有限元法求解二维Poisson方程的MATLAB实现

    有限元法求解二维 Poisson 方程的 MATLAB 实现 陈 莲a ,郭元辉b ,邹叶童a ( 西华师范大学 a. 数学与信息学院; b. 教育信息技术中心,四川南充 6437009) 摘 要: ...

  8. galerkin有限元法matlab实现,有限元法求解二维Poisson方程的MATLAB实现

    有限元法求解二维Poisson方程的MATLAB实现 陈莲a,郭元辉b,邹叶童a [摘要]文章讨论了圆形区域上的三角形单元剖分.有限元空间,通过变分形式离散得到有限元方程. 用MATLAB编程求得数值 ...

  9. 二维声波方程的有限差分法数值模拟

    二维声波方程的有限差分法数值模拟 文章目录 二维声波方程的有限差分法数值模拟 一.实现效果 二.matlab代码分享 三.python代码分享 一.实现效果 二.matlab代码分享 close al ...

  10. 二维burgers方程_用格子Boltzmann方法研究二维Burgers方程

    用格子 Boltzmann 方法研究二维 Burgers 方程 张伟 ; 李文杰 [期刊名称] <天津城市建设学院学报> [年 ( 卷 ), 期] 2012(018)001 [ 摘 要 ] ...

最新文章

  1. weblogic修改java重启_修改weblogic域的jdk
  2. python读取红外图
  3. 【整理】RPA选择器针对SAP系统的设置
  4. 计算机蠕虫的存在形式,计算机蠕虫
  5. 推箱子游戏的java设计思路_用JAVA实现一个推箱子游戏
  6. 计算机导论大一知识点整理_电网计算机类考试?悄悄告诉你一个复习攻略!
  7. 手工扒网页模板简单流程
  8. 【爬虫】谷歌、必应、百度图片爬取用于深度学习
  9. 中国区块链行业人才缺口将达75万以上
  10. PC端实现浏览器点击分享到QQ好友,空间,微信,微博等
  11. 阿里云ECS共享型、通用型和突发型实例类型有什么区别?如何选择?
  12. 将url地址中的编码转汉字
  13. 被曝欠薪又放长假,600亿科技巨头爆雷了
  14. JMeter官方文档翻译----如何开始JMeter-1
  15. 【UCIe】UCIe DLP/DLLP 介绍
  16. n卡图像锐化最佳设置方法
  17. 小猫爪:PMSM之FOC控制06-电流环
  18. 硬盘录像机协议与技术汇总
  19. 数据分析技能点-离散程度度量
  20. 5个被称为“神技”的Excel小技巧,让你的办公效率提升3倍!

热门文章

  1. MINIST数据集读取
  2. 密度聚类算法python详解_密度聚类python
  3. 大华相机抓图时间及最小时间间隔的测试
  4. 【视频直播篇七】Aliplayer的使用
  5. 嵩天《Python网络爬虫与信息提取》实例4:股票数据定向爬虫
  6. 如何实现某个软件的单独断网/稳定地解决fluent断网计算中止问题/tecplot联网后打开程序出现报错问题
  7. VS Code 运行时会弹出Unins000.Exe目标目录创建文件错误
  8. 各种调制方式OFDM(QPSK,16QAM,64QAM)系统性能仿真
  9. 多人对战中国象棋文档
  10. 深度学习系列18:开源人脸识别库