电磁场实验一_有限差分法的matlab实现

合集下载

电磁场实验一_有限差分法的matlab实现

电磁场实验一_有限差分法的matlab实现

电磁场与电磁波实验报告实验项目:_______有限差分法__ ____ 班级:_____ __12电子2 ____ __ 实验日期:__2014年12月23日姓名:___ _ __陈奋裕 __ __ 学号:___ ___1215106003 _____ 组员姓名:___ _ __ __ __ 组员学号:___ ___ _____ 指导教师:_ ____张海 ______一、实验目的及要求1、学习有限差分法的原理与计算步骤;2、学习用有限差分法解静电场中简单的二维静电场边值问题;3、学习用Matlab 语言描述电磁场与电磁波中内容,用matlab 求解问题并用图形表示出了,学习matlab 语言在电磁波与电磁场中的编程思路。

二、实验内容理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识; 实践学习:学习用matlab 语言编写有限差分法计算二维静电场边值问题;三、实验仪器或软件电脑(WIN7)、Matlab7.11四、实验原理 基本思想是把连续的定解区域用有限个离散点构成的网格来代替, 这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。

然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。

简单迭代法: 这一方法的求解过程是,先对场域内的节点赋予迭代初值(0),i j ϕ,这里上标(0)表示0次(初始)近似值。

然后按Laplace 方程(k 1)(k)(k)(k)(k),1,,11,,11[]4i j i j i j i j i j ϕϕϕϕϕ+--++=+++(i,j=1,2,…) 进行反复迭代(k=0,1,2,…)。

若当第N 次迭代以后,所有的内节点的相邻两次迭代值之间的最大误差不超过允许范围,即(N)(N-1),,max|-|<W i j i j ϕϕ这里的W 是预设的允许误差,此时即可终止迭代,并将第N 次迭代结果作为内节点上电位的最终数值解。

matlab有限差分法

matlab有限差分法

matlab有限差分法一、前言Matlab是一种广泛应用于科学计算和工程领域的计算机软件,它具有简单易学、功能强大、易于编程等优点。

有限差分法(Finite Difference Method)是一种常用的数值解法,它将微分方程转化为差分方程,通过对差分方程进行离散化求解,得到微分方程的数值解。

本文将介绍如何使用Matlab实现有限差分法。

二、有限差分法基础1. 有限差分法原理有限差分法是一种通过将微分方程转化为离散形式来求解微分方程的数值方法。

其基本思想是将求解区域进行网格划分,然后在每个网格点上进行逼近。

假设要求解一个二阶常微分方程:$$y''(x)=f(x,y(x),y'(x))$$则可以将其转化为离散形式:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$其中$h$为网格步长,$y_i$表示在$x_i$处的函数值。

2. 一维情况下的有限差分法对于一维情况下的常微分方程:$$\frac{d^2 y}{dx^2}=f(x,y,y')$$可以使用中心差分法进行离散化:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$这个方程可以写成矩阵形式:$$A\vec{y}=\vec{b}$$其中$A$为系数矩阵,$\vec{y}$为函数值向量,$\vec{b}$为右端项向量。

三、Matlab实现有限差分法1. 一维情况下的有限差分法假设要求解的方程为:$$\frac{d^2 y}{dx^2}=-\sin(x)$$首先需要确定求解区域和网格步长。

在本例中,我们将求解区域设为$[0,2\pi]$,网格步长$h=0.01$。

则可以通过以下代码生成网格:```matlabx = 0:0.01:2*pi;```接下来需要构造系数矩阵和右端项向量。

根据上面的公式,系数矩阵应该是一个三对角矩阵,可以通过以下代码生成:```matlabn = length(x)-2;A = spdiags([-ones(n,1), 2*ones(n,1), -ones(n,1)], [-1 0 1], n, n); ```其中`spdiags`函数用于生成一个稀疏矩阵。

有限差分 matlab

有限差分 matlab

有限差分 MATLAB简介有限差分方法(Finite Difference Method)是一种常用的数值计算方法,用于求解偏微分方程或者常微分方程的数值近似解。

MATLAB是一个功能强大的数值计算软件,可以很方便地实现有限差分方法。

本文将介绍有限差分方法在MATLAB中的应用。

首先,我们将简要介绍有限差分方法的原理和基本思想。

然后,我们将通过一个具体的例子来演示如何使用MATLAB进行有限差分计算。

最后,我们将总结本文内容,并提供一些相关资源供读者进一步深入学习。

有限差分方法原理有限差分方法是一种基于离散化思想的数值计算方法。

它通过将求解区域划分为网格点,并利用离散点上函数值之间的差商逼近导数来近似求解微分方程。

对于一维问题,我们可以将求解区域划分为等距离的网格点,记作x0, x1,x2, …, xn。

每个网格点上函数值记作u0, u1, u2, …, un。

我们希望通过已知边界条件和微分方程来求解其他未知函数值。

有限差分法的基本思想是使用差商逼近导数。

例如,对于一阶导数,我们可以使用前向差分、后向差分或者中心差分来逼近。

其中,前向差分定义为:f'(x) ≈ (f(x+h) - f(x)) / h后向差分定义为:f'(x) ≈ (f(x) - f(x-h)) / h中心差分定义为:f'(x) ≈ (f(x+h) - f(x-h)) / (2h)类似地,我们可以使用更高阶的有限差分来逼近更高阶的导数。

对于二维问题,我们可以将求解区域划分为二维网格点,并在每个网格点上计算函数值。

然后,我们可以使用类似的方法来逼近偏导数。

MATLAB实现在MATLAB中,我们可以很方便地使用矩阵运算和向量化操作来实现有限差分方法。

首先,我们需要定义求解区域和网格点。

假设我们要求解一个一维问题,在区间[0, 1]上进行离散化。

我们可以通过指定网格点个数n和步长h来确定网格点坐标:n = 100; % 网格点个数h = 1/n; % 步长x = linspace(0, 1, n+1); % 网格点坐标接下来,我们需要定义边界条件和微分方程。

matlab实现有限差分法计算电场强度(最新)

matlab实现有限差分法计算电场强度(最新)

实验一:有限差分法研究静电场边值问题实验报告人:年级和班级:学号:1. 实验用软件工具: Matlab2. 实验原理:电磁场课本P36-381)差分方程2)差分方程组的解简单迭代法高斯-赛德尔迭代法逐次超松弛法3. 实验步骤:1)简单迭代法程序:hx=41;hy=21;v1=zeros(hy,hx);v1(hy,:)=zeros(1,hx);v1(1,:)=ones(1,hx)*100;v1(:,1)=zeros(hy,1);v1(:,hx)=zeros(hy,1);v1v2=v1;maxt=1;t=0;k=0;while(maxt>1e-5)k=k+1;maxt=0;for i=2:hy-1for j=2:hx-1v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendv1=v2;endv2kclfsubplot(1,2,1),mesh(v2)axis([0,41,0,21,0,100])subplot(1,2,2),contour(v2,15)hold onaxis([-1,42,-1,25])plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r')text(hx/2,0.3,'0V','fontsize',11);text(hx/2-0.5,hy+0.5,'100V','fontsize',11);text(-0.5,hy/2,'0V','fontsize',11);text(hx+0.3,hy/2,'0V','fontsize',11);hold off当W=1e-5, 迭代次数:1401次2)高斯-赛德尔迭代法程序:hx=41;hy=21;v1=ones(hy,hx);v1(hy,:)=zeros(1,hx);v1(1,:)=ones(1,hx)*100;v1(:,1)=zeros(hy,1);v1(:,hx)=zeros(hy,1);v2=v1;maxt=1;t=0;k=0;while(maxt>1e-5)k=k+1;maxt=0;for i=2:hy-1for j=2:hx-1v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1))/4; t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendv1=v2;endv2kclfsubplot(1,2,1),mesh(v2)axis([0,41,0,21,0,100])subplot(1,2,2),contour(v2,15)hold onaxis([-1,42,-1,25])plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r')text(hx/2,0.3,'0V','fontsize',11);text(hx/2-0.5,hy+0.5,'100V','fontsize',11);text(-0.5,hy/2,'0V','fontsize',11);text(hx+0.3,hy/2,'0V','fontsize',11);hold off当W=1e-5, 迭代次数:740次3)逐次超松弛法程序:hx=41;hy=21;v1=zeros(hy,hx);v1(hy,:)=zeros(1,hx);v1(1,:)=ones(1,hx)*100;v1(:,1)=zeros(hy,1);v1(:,hx)=zeros(hy,1);v1v2=v1;maxt=1;t=0;alpha=input('please input the value of alpha(alpha>=1 && alpha<2):');k=0;while(maxt>1e-5)k=k+1;maxt=0;for i=2:hy-1for j=2:hx-1v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*alpha/4; t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendv1=v2;endv2kclfsubplot(1,2,1),mesh(v2)axis([0,41,0,21,0,100])subplot(1,2,2),contour(v2,15)hold onaxis([-1,42,-1,25])plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r')text(hx/2,0.3,'0V','fontsize',11);text(hx/2-0.5,hy+0.5,'100V','fontsize',11);text(-0.5,hy/2,'0V','fontsize',11);text(hx+0.3,hy/2,'0V','fontsize',11);hold off当W=1e-5, alpha取不同值时迭代次数4)画三维曲面图和等位线图(逐次超松弛法最佳迭代次数时)程序:hx=41;hy=21;v1=zeros(hy,hx);v1(hy,:)=zeros(1,hx);v1(1,:)=ones(1,hx)*100;v1(:,1)=zeros(hy,1);v1(:,hx)=zeros(hy,1);v1v2=v1;maxt=1;t=0;alpha=1.8;k=0;while(maxt>1e-5)k=k+1;maxt=0;for i=2:hy-1for j=2:hx-1v2(i,j)=v1(i,j)+(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1)-4*v1(i,j))*alpha/4; t=abs(v2(i,j)-v1(i,j));if(t>maxt) maxt=t;endendendv1=v2;endv2kclfsubplot(1,2,1),mesh(v2)axis([0,41,0,21,0,100])subplot(1,2,2),contour(v2,15)hold onaxis([-1,42,-1,25])plot([1,1,hx,hx,1],[1,hy+1,hy+1,1,1],'r')text(hx/2,0.3,'0V','fontsize',11);text(hx/2-0.5,hy+0.5,'100V','fontsize',11);text(-0.5,hy/2,'0V','fontsize',11);text(hx+0.3,hy/2,'0V','fontsize',11);hold off贴图:4.实验结论(1)matlab软件在使用有限差分法研究静电场边值问题中有着重要的作用,它能够快捷有效并且准确的解决边值问题,是解决计算相对复杂问题的有效工具。

时域有限差分法对平面TE波的MATLAB仿真

时域有限差分法对平面TE波的MATLAB仿真

时域有限差分法对平面TE波的MATLAB仿真摘要时域有限差分法是由有限差分法发展出来的数值计算方法。

自1966年Yee 在其论文中首次提出时域有限差分以来,时域有限差分法在电磁研究领域得到了广泛的应用。

主要有分析辐射条线、微波器件和导行波结构的研究、散射和雷达截面计算、分析周期结构、电子封装和电磁兼容的分析、核电磁脉冲的传播和散射以及在地面的反射及对电缆传输线的干扰、微光学元器件中光的传播和衍射特性等等。

由于电磁场是以场的形态存在的物质,具有独特的研究方法,采取重叠的研究方法是其重要的特点,即只有理论分析、测量、计算机模拟的结果相互佐证,才可以认为是获得了正确可信的结论。

时域有限差分法就是实现直接对电磁工程问题进行计算机模拟的基本方法。

在近年的研究电磁问题中,许多学者对时域脉冲源的传播和响应进行了大量的研究,主要是描述物体在瞬态电磁源作用下的理论。

另外,对于物体的电特性,理论上具有几乎所有的频率成分,但实际上,只有有限的频带内的频率成分在区主要作用。

文中主要谈到了关于高斯制下完全匹配层的差分公式的问题,通过MATLAB 程序对TE波进行了仿真,模拟了高斯制下完全匹配层中磁场分量瞬态分布。

得到了相应的磁场幅值效果图。

关键词:时域有限差分完全匹配层MATLAB 磁场幅值效果图目录摘要 (1)目录 (3)第一章绪论 (4)1.1 课题背景与意义 (4)1.2 时域有限差分法的发展与应用 (4)2.1 Maxwell方程和Yee氏算法 (7)2.2 FDTD的基本差分方程 (9)2.3 时域有限差分法相关技术 (11)2.3.1 数值稳定性问题 (11)2.3.2 数值色散 (12)2.3.3 离散网格的确定 (13)2.4 吸收边界条件 (13)2.4.1 一阶和二阶近似吸收边界条件 (14)2.4.2 二维棱边及角顶点的处理 (17)2.4.3 完全匹配层 (19)2.5 FDTD计算所需时间步的估计 (23)第三章MATLAB的仿真的程序及模拟 (25)3.1 MATLAB程序及相应说明 (25)3.2 出图及结果 (28)3.2.1程序部分 (28)3.2.2 所出的效果图 (29)第四章结论 (31)参考文献 (32)第一章绪论1.1 课题背景与意义20世纪60年代以来,随着计算机技术的发展,一些电磁场的数值计算方法逐步发展起来,并得到广泛应用,其中主要有:属于频域技术的有限元法(FEM)、矩量法(MM)和单矩法等;属于时域技术方面的时域有限差分法(FDTD)、传输线矩阵法(TLM)和时域积分方程法等。

有限差分法matlab程序一维热传导

有限差分法matlab程序一维热传导

有限差分法matlab程序一维热传导一维热传导是一个常见的物理问题,涉及到热量在一个维度上的传递和分布。

在工程和科学领域中,研究和解决一维热传导问题对于优化系统设计和预测热现象非常重要。

本文将介绍如何使用有限差分法在MATLAB中模拟一维热传导过程。

有限差分法是一种常用的数值解法,用于近似求解微分方程。

它将连续的物理问题离散化,将连续的空间和时间划分为离散的网格点,并通过近似替代微分算子来计算离散点上的数值。

在一维热传导问题中,我们可以将传热方程离散化为差分方程,然后通过迭代计算来模拟热传导过程。

我们需要定义问题的边界条件和初始条件。

对于一维热传导问题,我们通常需要给定材料的热扩散系数、初始温度分布和边界条件。

假设我们研究的是一个长为L的细杆,材料的热扩散系数为α,初始温度分布为T(x,0),边界条件为T(0,t)和T(L,t)。

接下来,我们将空间离散化为N个网格点,时间离散化为M个时间步长。

我们可以使用等距网格,将杆的长度L划分为N个小段,每段的长度为Δx=L/N。

同样,时间也被划分为M个小步长,每个步长的长度为Δt。

这样,我们可以得到网格点的坐标x(i)和时间点的坐标t(j),其中i=1,2,...,N,j=1,2,...,M。

在有限差分法中,我们使用差分近似代替偏导数项。

对于一维热传导方程,我们可以使用向前差分近似代替时间导数项,使用中心差分近似代替空间导数项。

这样,我们可以得到差分方程:(T(i,j+1)-T(i,j))/Δt = α*(T(i+1,j)-2*T(i,j)+T(i-1,j))/Δx^2其中,T(i,j)表示在位置x(i)和时间t(j)的温度。

通过对差分方程进行重排和整理,我们可以得到递推公式:T(i,j+1) = T(i,j) + α*Δt*(T(i+1,j)-2*T(i,j)+T(i-1,j))/Δx^2现在,我们可以在MATLAB中实现这个递推公式。

首先,我们需要定义问题的参数和初始条件。

有限差分法解决电场边值问题

有限差分法解决电场边值问题
y=0
ϕ =0
o
x
a
具体要求: 具体要求: (1) 编写一个计算机程序(Matlab):以步距 编写一个计算机程序( 以步距h=a/40的正方形网格离散化场域, 的正方形网格离散化场域, ) 以步距 的正方形网格离散化场域 的数值解。 然后应用有限差分法求电位ϕ的数值解。 (2)求相邻两次迭代值的指定的最大允许误差小于 -5的迭代收敛解和迭代次 求相邻两次迭代值的指定的最大允许误差小于10 求相邻两次迭代值的指定的最大允许误差小于 分别用简单迭代法、高斯-赛德尔迭代法和逐次超松弛法 赛德尔迭代法和逐次超松弛法)。 数(分别用简单迭代法、高斯 赛德尔迭代法和逐次超松弛法)。 (3) 对逐次超松弛法,分别取α为n个不同的值和最佳值α0,求电位ϕ的数值解, 对逐次超松弛法, 的数值解, 个不同的值和最佳值 以此分析加速收敛因子的作用。 以此分析加速收敛因子的作用。从迭代收敛时的迭代次数和最终数值解这两 方面总结自已的看法。 方面总结自已的看法。 (4)用计算机描绘等位线分布。 用计算机描绘等位线分布。 用计算机描绘等位线分布
y
u=0 u=0 u=100 u=0
y y
u=0 u=0 0 u=0 u=100
0
x
hy x i行
行 hx=5 列 hy=3
j列 hx x
y 高斯-赛德尔迭代法 高斯 赛德尔迭代法 1 ϕi(,kj+1) = (ϕi(+k1), j + ϕi(,kj)+1 + ϕi(−k1+1j) + ϕi(,kj+1) ) , −1 4 u=0
简单迭代法
ϕ
( k +1) i, j
1 (k ) k = (ϕ i −1, j + ϕ i(,kj)−1 + ϕ i(+1), j + ϕ i(,kj)+1 ) 4

有限差分法求解偏微分方程MATLAB

有限差分法求解偏微分方程MATLAB

南京理工大学课程考核论文课程名称:高等数值分析论文题目:有限差分法求解偏微分方程*名:**学号: 1成绩:有限差分法求解偏微分方程一、主要内容1.有限差分法求解偏微分方程,偏微分方程如一般形式的一维抛物线型方程:22(,)()u uf x t t xαα∂∂-=∂∂其中为常数具体求解的偏微分方程如下:22001(,0)sin()(0,)(1,)00u u x t x u x x u t u t t π⎧∂∂-=≤≤⎪∂∂⎪⎪⎪=⎨⎪⎪==≥⎪⎪⎩2.推导五种差分格式、截断误差并分析其稳定性;3.编写MATLAB 程序实现五种差分格式对偏微分方程的求解及误差分析;4.结论及完成本次实验报告的感想。

二、推导几种差分格式的过程:有限差分法(finite-difference methods )是一种数值方法通过有限个微分方程近似求导从而寻求微分方程的近似解。

有限差分法的基本思想是把连续的定解区域用有限个离散点构成的网格来代替;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似,积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组,解此方程组就可以得到原问题在离散点上的近似解。

推导差分方程的过程中需要用到的泰勒展开公式如下:()2100000000()()()()()()()......()(())1!2!!n n n f x f x f x f x f x x x x x x x o x x n +'''=+-+-++-+- (2-1)求解区域的网格划分步长参数如下:11k k k kt t x x h τ++-=⎧⎨-=⎩ (2-2) 2.1 古典显格式2.1.1 古典显格式的推导由泰勒展开公式将(,)u x t 对时间展开得 2,(,)(,)()()(())i i k i k k k uu x t u x t t t o t t t∂=+-+-∂ (2-3) 当1k t t +=时有21,112,(,)(,)()()(())(,)()()i k i k i k k k k k i k i k uu x t u x t t t o t t tuu x t o tττ+++∂=+-+-∂∂=+⋅+∂ (2-4)得到对时间的一阶偏导数1,(,)(,)()=()i k i k i k u x t u x t uo t ττ+-∂+∂ (2-5) 由泰勒展开公式将(,)u x t 对位置展开得223,,21(,)(,)()()()()(())2!k i k i k i i k i i u uu x t u x t x x x x o x x x x∂∂=+-+-+-∂∂ (2-6)当11i i x x x x +-==和时,代入式(2-6)得2231,1,1122231,1,1121(,)(,)()()()()(())2!1(,)(,)()()()()(())2!i k i k i k i i i k i i i i i k i k i k i i i k i i i iu uu x t u x t x x x x o x x x x u u u x t u x t x x x x o x x x x ++++----⎧∂∂=+-+-+-⎪⎪∂∂⎨∂∂⎪=+-+-+-⎪∂∂⎩(2-7) 因为1k k x x h +-=,代入上式得2231,,22231,,21(,)(,)()()()2!1(,)(,)()()()2!i k i k i k i k i k i k i k i ku uu x t u x t h h o h x xu u u x t u x t h h o h x x +-⎧∂∂=+⋅+⋅+⎪⎪∂∂⎨∂∂⎪=-⋅+⋅+⎪∂∂⎩ (2-8) 得到对位置的二阶偏导数2211,22(,)2(,)(,)()()i k i k i k i k u x t u x t u x t u o h x h+--+∂=+∂ (2-9) 将式(2-5)、(2-9)代入一般形式的抛物线型偏微分方程得21112(,)(,)(,)2(,)(,)(,)()i k i k i k i k i k i k u x t u x t u x t u x t u x t f x t o h h αττ++---+⎡⎤-=++⎢⎥⎣⎦(2-10)为了方便我们可以将式(2-10)写成11122k kk k k k i i i i i i u u u u u f h ατ++-⎡⎤--+-=⎢⎥⎣⎦(2-11) ()11122k k k k k k i i i i i i u u uu u f h τατ++----+= (2-12)最后得到古典显格式的差分格式为()111(12)k k k k k i i i i i u ra u r u u f ατ++-=-+++ (2-13)2r h τ=其中,古典显格式的差分格式的截断误差是2()o h τ+。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电磁场与电磁波实验报告
实验项目:_______有限差分法__ ____ 班级:_____ __12电子2 ____ __ 实验日期:__2014年12月23日
姓名:___ _ __陈奋裕 __ __ 学号:___ ___1215106003 _____ 组员姓名:___ _ __ __ __ 组员学号:___ ___ _____ 指导教师:_ ____张海 ______
一、实验目的及要求
1、学习有限差分法的原理与计算步骤;
2、学习用有限差分法解静电场中简单的二维静电场边值问题;
3、学习用Matlab 语言描述电磁场与电磁波中内容,用matlab 求解问题并用图形表示出了,学习matlab 语言在电磁波与电磁场中的编程思路。

二、实验内容
理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识; 实践学习:学习用matlab 语言编写有限差分法计算二维静电场边值问题;
三、实验仪器或软件
电脑(WIN7)、Matlab7.11
四、实验原理 基本思想是把连续的定解区域用有限个离散点构成的网格来代替, 这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。

然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。

简单迭代法: 这一方法的求解过程是,先对场域内的节点赋予迭代初值(0)
,i j ϕ,这里上标(0)表示0次(初始)近似值。

然后按Laplace 方程
(k 1)(k)(k)(k)(k),1,,11,,11
[]4
i j i j i j i j i j ϕϕϕϕϕ+--++=+++(i,j=1,2,…) 进行反复迭代(k=0,1,2,…)。

若当第N 次迭代以后,所有的内节点的相邻两次迭代值之间的最大误差不超过允许范围,即
(N)(N-1),,max|-|<W i j i j ϕϕ
这里的W 是预设的允许误差,此时即可终止迭代,并将第N 次迭代结果作为内节点上电位的最终数值解。

五、实验步骤
1.理论学习
2.编写matlab 程序
六、结果分析与问题讨论
1.简单迭代法
程序:
hx=1;%设置x 步长
hy=1;%设置y 步长
hv=10;%等势线条数
Accuracy=10^-3;%精度为0.001
t=0;%迭代次数
x=4/hx+1;%x轴点数
y=4/hy+1;%y轴点数
v0=100;%导体盖电位
v=zeros(x,y);%用零矩阵对网格各节点电位进行初始化
v_pre=zeros(x,y);%用零矩阵对前一时刻网格各节点电位进行初始化
v(y,:)=v0;%对沿盖板各节点赋初始值v0
%设初始迭代值值
for k=2:y-1
v(k,2:x-1)=(k-1)*(v0/(y-1));
end
%开始迭代
while(max(max(abs(v-v_pre)))>Accuracy)
v_pre=v;
t=t+1;
for i=2:x-1
for j=2:y-1
v(i,j)=(v_pre(i-1,j)+v_pre(i,j-1)+v_pre(i+1,j)+v_pre(i,j+1))/4; end
end
end
%输出
fprintf('节点电势值矩阵:\n');
disp(fliplr(flipud(v)));
fprintf('迭迭代次数:%d\n',t);
%绘制等势线
contour(v,hv,'linewidth',2);
axis([0.5 x+0.5 0.5 y+0.5]);
hold on;
plot([1,1,x,x,1],[1,y,y,1,1],'k','linewidth',2);
text((x+1)/2,0.8,'0V','fontsize',11);
text((x+1)/2,y+0.2,'100V','fontsize',11);
text(0.7,(y+1)/2,'0V','fontsize',11);
text(x+0.1,(y+1)/2,'0V','fontsize',11);
title('无限长直金属槽的等势线图','fontsize',16,'color','k');
hold off;
输出结果:
无限长直金属槽的等势线图
0.51 1.52 2.53 3.54 4.55 5.5
0.51
1.5
2
2.5
3
3.5
4
4.5
5
5.5
可见点数太少,等势线不够平滑。

重新设置步长
hx=0.1;%设置x 步长
hy=0.1;%设置y 步长
可得下图:
无限长直金属槽的等势线图0V
100V
0V 0V
相对可以得出比较准确的等势线图。

当然,这里也可以通过插值的方法实现。

2.算法比较
以允许误差为0.001为准,将场域16等分。

输出如下:
可见迭代次数为28次。

发现迭代次数明显减少了。

相关文档
最新文档