• 泊松方程类比二维热传导方程

制作的原理是泊松方程类比二维热传导方程,首先列出方程:

∂u/∂t=a^2(∂^2 u/∂x^2+∂^2 u/∂y^2)+f(x,y,t)

在这个方程中f(x,y,t)是热源,参数a^2是一个常数。已知热传导方程随时间演变,会演变成一个温度与时间无关,趋于稳定的状态。自然条件下,热源也会演变成一个与时间无关的函数。

在matlab上程序如下:

clear,clc,close all

dx=0.05;

Lx=1;

x=0:dx:Lx;

dy=0.05;

Ly=2;

y=0:dy:Ly;

A1=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);

A2=-2*eye(length(y))+diag(ones(1,length(y)-1),1)+diag(ones(1,length(y)-1),-1);

dt=0.0001;

t=0:dt:1;

[Y,X]=meshgrid(y,x);%十分重要不同y构成行向量,不同x构成列向量

U0=exp(-10*((X-1/2).^2+(Y-1/2).^2));

U=U0;

a=1;

for n=1:length(t)-1

U=U+a^2*(1/dx^2*A1*U+1/dy^2*U*A2)*dt;

if mod(n,100)==1

surf(X,Y,U)

axis([x(1) x(end) y(1) y(end) 0 1])

getframe;

end

End

在上述程序中设置边界为零,运行后得到图像:

根据上面的方法,同理求静电场的拉普拉斯方程。

与时间无关时,方程为:

∂^2 u/∂x^2+∂^2 u/∂y^2)=−1/a^2f(x,y)

此时将 将a^2类比ε,f(x,y)类比ρ(x,y)

得到泊松方程(∂^2u/∂x^2+∂^2u/∂y^2)=−ρ(x,y)/ε

  • 拉普拉斯方程

上文中我们得到了泊松方程,由泊松方程推导出 拉普拉斯方程表达式。即:

当ρ(x,y)=0时

(∂^2u/∂x^2+∂^2u/∂y^2)=0,为拉普拉斯方程

当ρ(x,y)≠0时

(∂^2u/∂x^2+∂^2u/∂y^2)=−ρ(x,y)/ε,为泊松方程

在matlab上运行程序如下:

clear,clc,close all

dx=0.02;

Lx=1;

x=0:dx:Lx;

dy=0.02;

Ly=1;

y=0:dy:Ly;

m1=sin(pi*x/Lx);m2=sin(pi*x/Lx);m3=0*y';m4=0*y';

A1=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);

A2=-2*eye(length(y))+diag(ones(1,length(y)-1),1)+diag(ones(1,length(y)-1),-1);

dt=0.0001;

t=0:dt:1;

[Y,X]=meshgrid(y,x);%十分重要不同y构成行向量,不同x构成列向量

U0=exp(-10*((X-1/2).^2+(Y-1/2).^2));

U=U0;

e0=1;

rou=0;

for n=1:length(t)-1

U=U+e0^2*(1/dx^2*A1*U+1/dy^2*U*A2+rou)*dt;

U(:,1)=m1;

U(:,end)=m2;

U(1,:)=m3;

U(end,:)=m4;

if mod(n,100)==1

surf(X,Y,U)

axis([x(1) x(end) y(1) y(end) -1 3])

getframe;

end

end

figure

[Ex,Ey]=gradient(-U,dx,dy);%求电场强度

contour(X,Y,U);%画等势线

hold on

quiver(X,Y,Ex,Ey);%画矢量

图像会由静电场边界演变成与时间无关的静电场的结果。

在程序中,电场强度的计算采用的是梯度的计算方法。

以上是拉普拉斯方程。

在计算泊松方程时我们加入了两个点电荷,一个正电荷和一个负电荷。

在matlab中运行程序如下:

clear,clc,close all

dx=0.02;

Lx=1;

x=0:dx:Lx;

dy=0.02;

Ly=1;

y=0:dy:Ly;

m1=sin(pi*x/Lx);m2=sin(pi*x/Lx);m3=0*y';m4=0*y';

A1=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);

A2=-2*eye(length(y))+diag(ones(1,length(y)-1),1)+diag(ones(1,length(y)-1),-1);

dt=0.0001;

t=0:dt:1;

[Y,X]=meshgrid(y,x);%十分重要不同y构成行向量,不同x构成列向量

U0=exp(-10*((X-1/2).^2+(Y-1/2).^2));

U=U0;

e0=1;

D=0.1;

rou=exp(-((X-1/2).^2+(Y-1/2).^2)/D^2);

for n=1:length(t)-1

U=U+(e0^2*(1/dx^2*A1*U+1/dy^2*U*A2)+rou)*dt;

U(:,1)=m1;

U(:,end)=m2;

U(1,:)=m3;

U(end,:)=m4;

if mod(n,100)==1

surf(X,Y,U)

axis([x(1) x(end) y(1) y(end) -1 3])

getframe;

end

end

figure

[Ex,Ey]=gradient(-U,dx,dx);%求电场强度

contour(X,Y,U);%画等势线

hold on

quiver(X,Y,Ex,Ey);%画矢量

axis equal

得到图像:

  • 第一类边界条件
  1. 矩形边界
  1. 圆形边界

圆形边界一般可得到圆面上的电势分布情况:u(x^2+y^2=R^2)=μ(θ)

但在matlab中运用的是离散化的处理方法,无法直接赋值到圆形边界上。因此,我们引入一个矩形边界,框住圆形边界,将圆形与框架中的四个空白部分赋值为:u(x^2+y^2≥R^2)=μ(θ)

clear,clc,close all

dx=0.02;

R=1;

x=-R:dx:R;

y=-R:dx:R;

A1=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);

A2=-2*eye(length(y))+diag(ones(1,length(y)-1),1)+diag(ones(1,length(y)-1),-1);

dt=0.0001;

t=0:dt:1;

[X,Y]=meshgrid(x,y);

U0=exp(-10*((X-1/2).^2+(Y-1/2).^2));

U=U0;

e0=1;

D=1;

% rou=10*exp(-((X-1/2).^2+(Y).^2)/D^2)-10*exp(-((X+1/2).^2+(Y).^2)/D^2);

rou=0;

theta=angle(X+1i*Y);

G=X.^2+Y.^2>=R.^2;

for n=1:length(t)-1

U=U+(e0^2*(1/dx^2*A1*U+1/dx^2*U*A2)+rou)*dt;

U(G)=sin(theta(G));

if mod(n,100)==1

surf(X,Y,U)

axis([x(1) x(end) y(1) y(end) -1 3])

axis equal

getframe;

end

end

%G1=X.^2+Y.^2>R^2;

U(G1)=NaN;

[Ex,Ey]=gradient(-U,dx,dx);

contour(X,Y,U)

hold on

quiver(X,Y,Ex,Ey)

plot(cos(0:pi/50:2*pi),sin(0:pi/50:2*pi))

hold off

运行前部分后得到图像:

(在图像中我们对四个空白区域赋值为同一个结果,因此有等势线。)

但我们的最终目的是去除圆外的四个空白区域,也就是程序中注释的部分:

G1=X.^2+Y.^2>R^2;

U(G1)=NaN;


(也就是在矩阵中不作为一个数,因此不会出现在图像中。)

程序中我们设置了10倍的正电荷和10倍的负电荷

rou=10*exp(-((X-1/2).^2+(Y).^2)/D^2)-10*exp(-((X+1/2).^2+(Y).^2)/D^2);

删去电荷后便得到了拉普拉斯方程。。

  • 第二类边界条件
  1. 拉普拉斯方程

第二类边界条件需界定有解条件,即对原定封闭体积做积分,由于计算的是二维空间图像,因此积分为面积分

由高斯公式,将体积分变为面积分

梯度*向量为方向导数

整个面积分为0

以上便是它的有解条件

clear,clc,close all

dx=0.02;

Lx=1;

x=0:dx:Lx;

dy=0.02;

Ly=1;

y=0:dy:Ly;

m1=sin(pi*x/Lx);m2=-sin(pi*x/Lx);m3=0*y';m4=0*y';

A1=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);

A2=-2*eye(length(y))+diag(ones(1,length(y)-1),1)+diag(ones(1,length(y)-1),-1);

dt=0.0001;

t=0:dt:1;

[Y,X]=meshgrid(y,x);%十分重要不同y构成行向量,不同x构成列向量

U0=exp(-10*((X-1/2).^2+(Y-1/2).^2));

U=U0;

e0=1;

for n=1:length(t)-1

U=U+e0^2*(1/dx^2*A1*U+1/dy^2*U*A2)*dt;

U(1,:)=m1*dy+U(2,:);

U(end,:)=m2*dy+U(end-1,:);

U(:,1)=m3*dx+U(:,2);

U(:,end)=m4*dx+U(:,end-1);

if mod(n,100)==1

surf(X,Y,U)

axis([x(1) x(end) y(1) y(end) -1 3])

getframe;

end

end

figure

[Ex,Ey]=gradient(-U,dx,dx);%求电场强度

contour(X,Y,U);%画等势线

hold on

quiver(X,Y,Ex,Ey);%画矢量

在matlab上运行得到图像:

发现电势未趋于稳定,而是一直升高,即没有解。

但热传导方程随时间演变要趋于0,在程序中我们只有输入的热量(边界只有正)因此不能得到静电场的结果。

因此将边界条件改为负号

m1=sin(pi*x/Lx);m2=-sin(pi*x/Lx);m3=0*y';m4=0*y';

这样之后才得到我们想要 的结果

  1. 泊松方程

对泊松方程做体积分

有解条件很苛刻

视频讲解

MATLAB教程——全站最适合理工类专业(求解拉普拉斯和泊松方程程序讲解)

拉普拉斯方程和泊松方程的MATLAB可视化相关推荐

  1. matlab求解拉普拉斯方程,急求用matlab编写解拉普拉斯方程的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这么处理狄拉克边界条件,我的精确解和数值解的误差很大部只哪错了 附程序 % examp1a2.m clear all clc N=5;M=5;n=N*M; ...

  2. matlab求拉普拉斯方程,急求用matlab编写解拉普拉斯方程的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这么处理狄拉克边界条件,我的精确解和数值解的误差很大部只哪错了 附程序 % examp1a2.m clear all clc N=5;M=5;n=N*M; ...

  3. 泊松方程与拉普拉斯方程数值解

    泊松方程与拉普拉斯方程数值解 posted on 2019-01-24 22:01 luoganttcc 阅读(...) 评论(...) 编辑 收藏

  4. MATLAB可视化大学物理学光盘,MATLAB可视化大学物理学

    本书物理和程序并重,即讲解了物理学的基本知识,公式的推导,还给出了很多实例的计算机程序. ¥69.00定价:¥69.00 本书物理和程序并重,即讲解了物理学的基本知识,公式的推导,还给出了很多实例的计 ...

  5. matlab行星运动轨迹仿真动画,利用Matlab可视化功能实现微分方程求解行星运动轨迹...

    利用Matlab可视化功能实现微分方程求解行星运动轨迹 1.背景 在物理学璀璨的发展史上,物理学家花了很长时间研究我们头顶浩瀚的星空,试图探究星星的运行模式,以及地球自身的运动模式.其中不乏像亚里士多 ...

  6. matlab可视化界面怎么修改,matlab可视化界面

    第16章 GUIDE工具建立GUI界面 MATLAB可视化界面的设计,一般有两种... 创建 Matlab GUI 界面通常有两种方式: 1,使用 .m 文件直接动态添加控件 2. 使用 GUIDE ...

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

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

  8. 拉普拉斯方程与复微分

    对于 z=x+iyz=x+iy,有 f(z)=u+ivf(z)=u+iv,则 f(⋅)f(\cdot) 是复可微的,当且仅当它的偏导数满足所谓的柯西-黎曼方程, ∂u∂x=∂v∂y∂u∂y=−∂v∂x ...

  9. GMM / MoG 聚类 Matlab 可视化 实现

    GMM / MoG 聚类 Matlab 可视化 实现 GMM介绍 EM进行参数求解 GMM动态可视化 GMM的Matlab动态可视化代码 参考书籍:<计算机视觉 模型.学习和推理> GMM ...

最新文章

  1. Tomcat工作原理
  2. 这个结构体对齐输出有意思
  3. PC介绍之PCIE、总线、内存、电源
  4. git 查看分支_系统掌握Git之—探索.git
  5. 计算机二级宏相关例题,计算机等级考试二级Access练习题
  6. jni问题总结:jni error (app bug): accessed stale local reference
  7. vgg16 清华镜像_Python models.vgg16方法代码示例
  8. catia今天突然打不开了_catia打不开的解答
  9. 电脑死机是什么原因及解决方法
  10. Linux学习(一)虚拟机安装linux资源,linux目录结构,购买阿里云服务器远程登陆linux,下载安装并使用Xshell与Xftp
  11. CSS实现的带头像的彩色垂直菜单源码
  12. 【@Scheduled定时任务】
  13. 使用 JS-SDK 与 FLOW 交互
  14. 从0到1搭建电商营销数据分析平台(一)
  15. 如何评价双CPU的电脑?好用吗?
  16. 读书笔记-FLASK-留言板
  17. 了解一下mmap函数
  18. 寒假训练六.五(栈)2020.01.06(6题)
  19. 嵌入式常问问题和知识
  20. 安卓实现天天动听音乐播放歌词悬浮哦(转)

热门文章

  1. 如何判断JS中变量的类型
  2. 2022CCPC广州 CM
  3. 如何查看本地服务器名称
  4. 程序员:写作能收获什么?
  5. OutLook的临时文件存放位置/打开邮件附件修改并保存附件没有更改
  6. redis主从配置及主从切换
  7. Android——一个简单的记账本APP
  8. 永恒之蓝 ms17_010漏洞
  9. IPv6 内网穿透(一)
  10. USACO 2015 January Contest Bronze——奶牛的旅行路线