实验_用超松弛迭代法求解接地金属槽内电位分布

合集下载

工程电磁场C++编程作业-一、用超松弛迭代法求解接地金属槽内电位的分布二、按对称场差分格式求解电位的分布

工程电磁场C++编程作业-一、用超松弛迭代法求解接地金属槽内电位的分布二、按对称场差分格式求解电位的分布

工程电磁场实验报告——C++编程课题一、用超松弛迭代法求解接地金属槽内电位的分布二、按对称场差分格式求解电位的分布一、用超松弛迭代法求解接地金属槽内电位的分布一、实验原理二、程序框图:三、实验内容:1、用超松弛迭代法求解接地金属槽内点位分布1)内容及要求:2)实验思路:由超松弛迭代法,将网格分成5*5列,边界点正好都是网格的节点,对所有的节点进行编号,并记录节点的坐标位置,并用一个二维数组进行表示u1[5][5],此数组表示的是迭代后的值。

考虑到迭代前后的数值不一样,再用一个二维数组表示迭代之前的数值u2[5][5]。

运用C++的知识在计算机上将边界值和内节点进行赋值,即将节点离散化。

然后开始迭代。

迭代开始之前将另一个数组b赋值,用数组a给其赋值,表示迭代之前的值,好用于后面精度的比较。

开始进行迭代时,根据超松弛公式将迭代方程编写输入。

每次迭代结束后将数组a和数组b对应的值进行比较,即是精度的计算。

如果误差大于所规定的误差0.00001,将a的值赋给b,然后继续进行迭代。

直到当迭代前后数值误差小于所规定的误差时停止迭代。

并比较迭代因子的大小对收敛次数的影响,选取最烧收敛次数的迭代因子作为实验最后的输出结果。

最后输出最适合迭代因子、迭代的次数和迭代后各点的电位值。

3)程序如下://********用超松弛迭代法求解接地金属槽内电位的分布********#include<iostream.h>#include<math.h>#include<iomanip.h>Void main(){double u1[5][5],u2[5][5];int flag=1000,i,j,e,n;double a,d;//a最佳加速收敛因子for(i=0;i<5;i++)for(j=0;j<5;j++){if(i==0)u1[i][j]=100;else u1[i][j]=0;}cout<<"迭代前各电位点上的初始值:"<<endl;for(i=0;i<5;i++){for(j=0;j<5;j++){cout<<u1[i][j]<<" ";//输出迭代初值}cout<<endl;}cout<<"\n";for(d=1;d<2;d+=0.01)//找取迭代次数最少的加速收敛因子{n=0;for(j=0;j<5;j++){u1[0][j]=100;}for(i=1;i<5;i++)for(j=0;j<5;j++){u1[i][j]=0;}do//迭代x次{for(i=0;i<5;i++){for(j=0;j<5;j++){u2[i][j]=u1[i][j];}}for(i=1;i<4;i++)for(j=1;j<4;j++){u1[i][j]=u2[i][j]+(d/4)*(u2[i+1][j]+u2[i][j+1]+u1[i-1][j]+u1[i][j-1]-4*u2[i][j]);}for(i=1;i<4;i++)//判断精度{{for(j=1;j<4;j++){if(fabs(u1[i][j]-u2[i][j])>1e-5){e=1; break; }else e=0; }if(e==1) break; }}n++;//迭代次数}while(e);if(n<flag) {flag=n; a=d; }}cout<<"收敛因子:"<<a<<endl;cout<<endl;cout<<"迭代次数:"<<flag<<endl;cout<<endl;cout<<"各节点上最终电位近似值:"<<endl;for(i=0;i<5;i++){for(j=0;j<5;j++){cout<<setiosflags(ios::fixed)<<setprecision(5)<<setw(8)<<u1[i][j]<<" ";//对齐输出}cout<<endl; }cout<<endl; }4)输出结果:5)总结:最佳收敛因子:1.18此时的最少迭代次数:102、按对称场差分格式求解电位的分布1)内容及要求:2)实验思路:类似与第一题的思路,但只计算一半的区域,对另一半进行对称性计算,减小计算量。

(完整版)6.4超松弛迭代法

(完整版)6.4超松弛迭代法

0.75 x2( ( k 1)
6 0.25x3(k
)
7.5
x (k 1) 3
0.25x2(k1)
6
②取ω=1.25 ,即SOR迭代法:
xx21((kk11))
0.25x1(k) 0.9375x2(k) 7.5 0.9375x1(k1) 0.25x2(k) 0.3125x3(k)
-5.0183105
3.1333027
4.0402646
-5.0966863
4
3.0549316
3.9542236
-5.0114410
2.9570512
4.0074838
-4.9734897
5
3.0343323
3.9713898
-5.0071526
3.0037211
4.0029250
-5.0057135
6
3.0214577
3.9821186
-5.0044703
2.9963276
4.0009262
-4.9982822
7 3.0134110
3.9888241
-5.0027940
3.0000498
4.0002586
-5.0003486
迭代法若要精确到七位小数, Gauss-Seidel迭代法需要34次迭代; 而用SOR迭代法(ω=1.25),只需要14次迭代。
因子ω。
返回引用
opt
(1
2
1 [(BJ )]2 )
(4)
这时,有ρ(Bopt
)=
ω
opt
-
1。
SOR法分类与现状
通常,
(1)当ω>1 时,称为超松弛算法; (2)当ω<1 时,称为亚松弛算法。

超松弛迭代法例题

超松弛迭代法例题

超松弛迭代法例题超松弛迭代法是一种用于求解非线性方程组的迭代法。

在解决非线性方程组时,超松弛迭代法可以通过不断逼近最优解来减小误差,从而得到更精确的解。

下面是一个超松弛迭代法的例题。

假设我们有一个非线性方程组:```a1*x1 + a2*x2 + a3*x3 = bb*x1 + c*x2 + d*x3 = c```其中,a1、a2、a3、b、c、d 是已知的常数,x1、x2、x3 是未知数。

我们想要找到一个解,使得误差最小。

使用超松弛迭代法,我们可以按照以下步骤进行:1. 初始猜测解:随机选择一个初始猜测解 x0,通常是 x0 = 0。

2. 计算误差:计算猜测解与真实解之间的误差 e = (a1*x1 + a2*x2 + a3*x3 - b) / b - c / d。

3. 更新解:使用误差 e 来更新猜测解 x0,得到 x1 = x0 + epsilon*e,其中 epsilon 是一个超参数,用于控制迭代的步长。

4. 重复步骤 2-3:重复进行迭代,直到误差达到预设的最小值或者迭代次数达到预设的最大次数。

下面是超松弛迭代法的实现示例,使用 Python 语言:```pythonimport numpy as npdef ultimo(a, b, c, d, epsilon, max_iterations): x0 = 0e = (a[0]*x0 + a[1]*x0 + a[2]*x0 - b) / b - c / d for i in range(max_iterations):x1 = x0 + epsilon*eif np.linalg.norm(x1 - x0) < 1e-10:breakx0 = x1return x1# 示例:a = [1, 1, 1]b = 2c = 3d = 4epsilon = 0.1max_iterations = 100x0 = 0print(ultimo(a, b, c, d, epsilon, max_iterations)) ```输出结果为:```[0.99999999999999997 0.99999999999999997 1.]```这个示例中,我们使用超松弛迭代法来解决一个非线性方程组,得到的结果非常精确,误差只有 1e-10。

电磁场数值计算上机题报告

电磁场数值计算上机题报告

电磁场数值计算上机题报告第一题计算长直接地金属槽中的电场分布。

金属槽横截面如图1所示,其侧壁与底面电位均为零,顶盖电位相对值为10。

槽内电位函数满足拉普拉斯方程。

计算槽内电位分布。

要求:(1)先用正方形网格粗分,每边取4个网格计算,取不同的松弛因子,比较其收敛速度。

取计算精度为千分之一。

(2)划分网格加倍,计算电位分布,并与上面计算结果比较。

(一)建立问题的数学物理模型首先列出方程及其边界条件 槽内的电位满足二维的拉普拉斯方程:222220x y ϕϕϕ∂∂∇=+=∂∂其中,x y 的范围是:0,0x a y a <<<<边界条件是:0000;10x x ay y aϕϕϕϕ========图1 (二)算法设计及其实现在本题中,因为区域为正方形区域,网格采用正方形网格,每边四个网格,因此,每边要有5个结点, 网格数m=n=4,比较少,不能用课本中的公式计算收敛因子,取收敛因子为 1.4α=,计算的程序的流程为:①选取计算的场域,并划分网格,网格划分如右图2所示:右图表示网格的划分,共16个网格,一共划分了25个结点,每个节点用相应的下标(i,j )来表示,对应的电位为(,)u i j 。

根据题意,边界条件的 处理如下: 图 2(1,)(,1)(,1)0(,)10(21)u j u i u n u k j k n ===⎧⎨=≤≤-⎩其中n 为一行对应的节点数,根据题意,这里n=5② 用(,)u i j 表示节点的电位,设经过第n 次迭代之后的结点电位用(),n i j u 来表示,则超松弛迭代法的差分格式(记,(,)i j u u i j =)为:(1)()()()(1)(1)(),,1,,11,,1,(4)4n n n n n n n i j i j i j i j i j i j i j u u u u u u u α+++++--=++++- 边界条件前面已经给出 ③给各个节点赋初值,对于非边界上的点(对于边界点的值前面已经赋过初值),如下10(,)(1)1u i j j n =--④迭代计算,直到已经满足精度条件为止,这里精度为0.0001,最后输出计算的结果,输出结果见生成的数据文件shuju.txt 中 ⑤计算框图如图3所示图 3 计算框图⑥用fortran90语言编写计算机程序,计算各点的电位,程序清单如下:(三)计算结果及数据分析当网格数目为4(节点数目为5),加速收敛因子为1.4,计算精度为0.0001时,计算出各结点电位如下所示(对不同的收敛因子的比较后面进行)不可能完全对称,只能是近似对称的),这点不难从理论上进行分析得到。

超松弛迭代法求解接地金属槽内电位分布

超松弛迭代法求解接地金属槽内电位分布

实验一用超松弛迭代法求解接地金属槽内电位分布1、实验内容:试用超松弛迭代法求解接地金属槽内电位的分布。

已知:,给定边值如图所示。

给定初值:误差范围:计算迭代次数,分布。

一.实验思路由边界条件用泊松方程的五点差分格式求得中央点的点位。

再以所得点及边界再次利用泊松方程的五点差分格式求出另四个点,依照此方法求出其余点的电位分布。

用最佳收敛因子的经验公式计算收敛因子。

利用超松弛迭代法进行差分方程的求解,当遇到边界是采用边界值或者边界差分格式。

直到所有节点电位满足误差条件。

二.实验设计原理:有限差分法有限差分法(Finite Differential Method)是基于差分原理的一种数值计算法。

其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数?的泊松方程的问题换为求解网格节点上?的差分方程组的问题。

编程时将边值编入到程序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。

迭代时所用公式是和书上一样,为a[i][j]=b[i][j]+w/4*(b[i+1][j]+b[i][j+1]+a[i][j-1]+a[i-1][j]-4*b[i][j]);其中a代表k+1,而b代表k。

三、程序运行界面及结果四.源程序代码#include<iostream>#include<math.h>#include<iomanip>using namespace std;classoverrei //over-relaxation iterative method {private:intm,n;doublex,e;double **p,**q;public:int k;overrei(int m0,int n0,double e0) {inti;e=e0;k=0;m=m0;n=n0;p=new double *[m];for(i=0;i<m;i++)p[i]=new double[n];q=new double *[m];//迭代因子求解for(i=0;i<m;i++)q[i]=new double[n];if(m==n)x=2/(1+sin(3.141592654/(m-1)));elsex=2-3.141592654*sqrt(2)*sqrt(1/((m-1)*(m-1))+1/((n-1)*(n-1))); cout<<"最佳收敛因子:"<<x<<endl;}void Initialization(); //赋边界条件void Cal(); //计算void Diedai(); //迭代函数void Show(); //输出部分};void overrei::Initialization() //赋边界条件{inti,j;for(i=0;i<m;i++) //边界条件for(j=0;j<n;j++){if(i==0){p[i][j]=100;q[i][j]=100;}else{p[i][j]=0;q[i][j]=0;}}cout<<"初始点位:"<<endl;Show();}void overrei::Cal() //计算{inti,j;int c=1;while(1){c=1;for(i=0;i<m;i++){for(j=0;j<n;j++){if((p[i][j]-q[i][j])>e||(q[i][j]-p[i][j])>e) //相邻两次迭代误差是否小于1e-5{c=0;break;}}if(c==0) break;}if(c==1 && k!=0) break;Diedai();}}void overrei::Diedai() //迭代函数{inti,j;double y=x/4;if(k%2){for(i=1;i<m-1;i++)for(j=1;j<n-1;j++){q[i][j]=p[i][j]+y*(q[i-1][j]+q[i][j-1]+p[i+1][j]+p[i][j+1]-4*p[i][j]);}}else{for(i=1;i<m-1;i++)for(j=1;j<n-1;j++){p[i][j]=q[i][j]+y*(p[i-1][j]+p[i][j-1]+q[i+1][j]+q[i][j+1]-4*q[i][j]);}}k++;}void overrei::Show() //输出部分{inti,j;for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<setw(12)<<setprecision(6)<<fixed<<q[i][j]<<ends;}cout<<endl;}}int main(){cout<<" **************************************"<<endl; cout<<" 超松弛迭代法求解接地金属槽内电位的分布"<<endl; cout<<" **************************************"<<endl; overrei A(5,5,1e-5);A.Initialization();A.Cal();cout<<"电位分布:"<<endl;A.Show();cout<<"迭代次数:"<<A.k<<endl;return 0;}实验二按对称场差分格式求解电位的分布一.实验思路只计算一半的区域,对另一半进行对称性计算,减小计算量。

Matlab-求解金属槽槽内电位分布---副本培训讲学

Matlab-求解金属槽槽内电位分布---副本培训讲学

M a t l a b-求解金属槽槽内电位分布---副本Matlab 求解金属槽槽内电位分布摘要运用有限差分法将场域离散为许多小网格,将求解连续函数ϕ的泊松方程的问题换为求解网格节点上ϕ的差分方程组的问题。

用matlab程序计算出槽内电位分布的结果。

通过数值解和精确解的比较来验证有限差分法的可行性。

关键词:有限差分法; Matlab;金属槽槽内电位Solving the metal slots potential with MatlabAbstract:U sing the finite difference method (FDM)field is discreted into many small grid, transform ing the problem solving poisson equation with continuous function ϕ for solving the differential equations of grid node ϕ. We use Matlab program to calculate the potential distribution in slot results. The values got from these two methods are compared, which would be a validation of the feasibility of the Finite Difference Method.1 引言如图1所示,尺寸为a×a的正方形金属导体槽三面接地,上方是一块密实的但与之绝缘的金属盖板,其电位100Vϕ=,求槽内电位的分布情况。

这是二维静态场域的边值问题,在直角坐标系中,接地导体矩形槽中的电位函数p满足拉普拉斯方程2222x yϕϕ∂∂+=∂∂。

Xaa图1 正方形金属槽其边界条件满足第一类边界条件问题0(x,y)0x ϕ== (x,y)0x aϕ==(x,y)0y ϕ== (x,y)100y aϕ==我们由此可求出矩形导体槽内电位的分布数值解.将金属槽内场域D 用正方形网格进行粗略划分,其网格节点分布如图2所示网格间距为h=a/4,各边的节点数为L+1=5.234512345图2 网格划分2 求解2.1数值解求解过程由于本文采用的是超松弛迭代法的差分方程形式,现给出公式(n 1)(n)(n)(n)(n 1)(n 1)2(n),,1,,11,,1,,(4)4i ji ji ji j i ji j i j i jw h f ϕϕϕϕϕϕϕ+++++--=++++--(2.1)进行迭代,因为满足拉普拉斯方程故 f=0。

有限差分法计算金属槽内电位分布

有限差分法计算金属槽内电位分布

班级:物理08-2B 姓名:胡艳学号:08070201010有限差分法计算金属槽内电位分布一、选题依据求解电位分布问题是物理学中最常见的问题之一,采用有限差分法解决此类问题是十分有效的。

差分方程确定之后,一般选用迭代法求解,这是由于方程组系数矩阵中有大量元素为零,并且系数矩阵形成比较简单,有规律和重复。

在迭代过程中常常可以一边形成系数矩阵一边计算,以节省内存,因而迭代法比直接法更常用。

迭代法中又以超松弛迭代法最常用,以下给出超松弛迭代方法的公式。

对于二维场泊松方程等距剖分差分格式公式为()()()()()()()⎪⎪⎭⎫ ⎝⎛Φ--+Φ+-+Φ++Φ++Φ+Φ=+Φj i n j i n j i n j i n j i n ji n ji n ,41,1,111,,14,,1α(2.67)式中α称为加速收敛因子或超松弛因子,它的数值决定超松弛程度,影响迭代解收敛的速度。

α取值范围是1 ≤ α <2 (2.68)加速收敛因子α取值因问题而异,对于第一类边值问题,若一方形场域由正方形网格划分,每边的节点数为(n+1),则加速收敛因子α可按下式计算:nπαs i n12+=(2.69)若一矩形场域由边长为h 的正方形网格划分为mh 和nh ,且m 和n 都很大(一般都要大于15),那么加速收敛因子α为n m 221122+-=πα (2.70)一般情况下,α的最佳值只能是凭经验选取。

对于其他形状的场域,也可用等效矩形面积的处理方法,即得出等效矩形面积后,再用式(2.70)求出最佳的α。

下面我们来看一个计算电位分布的实例。

二、处理过程实例:有一长接地金属槽,横截面积如图2.15所示,其侧壁与底面电位均为零,顶盖电位为100V ,求槽内电位分布。

分析:对于此槽中间区段电位分布,可理想化为二维问题。

选定直角坐标系,槽内电位函数Φ满足拉普拉斯方程,构成一类边值问题。

2222=∂Φ∂+∂Φ∂yxVay a x 1006.0,0=Φ=<<Vay a x y a x ay x 06.00,0,06.00,0=Φ=Φ=Φ≤==≤≤≤=<<按有限差分法计算步骤,解题过程如下。

超松弛迭代法(SOR方法)

超松弛迭代法(SOR方法)

解:SOR迭代公式
x1( k
1)
(1 )x1(k )
4
(10 2x2(k )
4x3(k ) )
x
(k 2
1)
(1 )x2(k )
17
(3
2
x1(
k
1)
10x3(k ) )
x3( k
1)
(1 )x3(k )
9
(7 4x1(k 1)
10
x
(k 2
1)
)
初值 x (0) (0,0,0)T k = 0,1,2,…,
例该4方.4程用组S的OR精法确求解解线x (性*) 方 程(2组,1,1)T
如值只果需x(0取)迭ω取代(0=,04ω21,00x(=42)即1次T1xx,要11.高4便26达x斯11,可207到—xx要达22同4塞求到x样319德精0x精x3尔度130度迭要x,(3k7代求需1) 法要x)迭(和k) 代同1一1100初6次
数值计算方法
超松弛迭代法(SOR方法) 使用迭代法的困难在于难以估计其计算
量。有时迭代过程虽然收敛,但由于收敛速 度缓慢,使计算量变得很大而失去使用价值 。因此,迭代过程的加速具有重要意义。逐 次超松弛迭代(Successive Over relaxatic Method,简称SOR方法)法,可以看作是带参 数的高斯—塞德尔迭代法,实质上是高斯-塞 德尔迭代的一种加速方法。
或 Dx(k1) (1)Dx(k) (b Lx(k1) Ux(k) )
故 (D L)x(k1) (1)D Ux(k) b
显然对任何一个ω值,(D+ωL)非奇异,(因为假设 aii 0,i 1,2,, n )于是超松弛迭代公式为
x(k1) (D L)1 (1)D U x(k) (D L)1b

利用超松弛迭代法求解问题

利用超松弛迭代法求解问题

利用超松弛迭代法求解问题在电场中,利用有限差分法求解场域中各个节点的点位。

其中求解差分方程组的解运用到了超松弛方法。

超松弛方法是高斯—塞德尔迭代法的变形。

它在迭代过程中,为了加速收敛,再把所得结果依次带入进行计算的同时,还使用把每一次迭代的变化量加权后再代入的方法。

运用超松弛迭代法求解下述问题:试用超松弛迭代法求解接地金属槽内的电位的分布。

已知:A=4CM,H=A\4=10CM给定边值:如图示;给定初值:Φ=0误差范围:E=10^-5计算:迭代次数N=?,Φ的分布。

分析:(1)、节点按从下到上,从左到右的顺序排列。

(2)、按高斯—塞德尔迭代公式进行迭代。

(3)、选择加速因子Α,且A在1到2之间。

以下为该题程序段:#INCLUDE <IOSTREAM.H>#INCLUDE<MATH.H>#INCLUDE<IOMANIP.H>BOOL SUCCESS(DOUBLE A[5][5][2], DOUBLE B) 构建函数其中DOUBLE A 代表记录数据前后两次的值。

{INT I,J;FOR (I=1;I<5;I++)FOR (J=1;J<5;J++) 依次对定义数组赋值{IF ( FABS(A[I][J][1]-A[I][J][0]) > B ) 误差在题设范围内则返回值TRUERETURN TRUE;} 否则返回FALSE RETURN FALSE;}INT MAIN(){INT N,I,J;DOUBLE A[5][5][2];DOUBLE B;B=0.00005;DOUBLE S=1.21;WHILE (1){N=0;COUT<<"输入加速因子数值(1<= A < 2 ) "<<ENDL; 输入题设CIN>>S;FOR(I=0;I<5;I++)FOR(J=0;J<5;J++){A[I][J][0]=0;A[I][J][1]=0;}FOR (I=0;I<5;I++){A[I][4][0]=100;A[I][4][1]=100;}WHILE ( N==0 || SUCCESS(A,B)){FOR(I=1;I<4;I++)FOR(J=1;J<4;J++){A[I][J][0]=A[I][J][1];A[I][J][1]=A[I][J][1]+(A[I-1][J][1]+A[I+1][J][1]+A[I][J+1][1]+A[I][J-1][1] [I][J][1]*4)*S/4; 由高斯—塞德尔迭代公式写出相应公式。

项目训练二 求二维金属槽内的点位分布

项目训练二 求二维金属槽内的点位分布
0 1 2 3 4
将这几点的电位用泰勒级数展开,化简,近似可得:
1

0

1 ( ) 2 3 4 4 1
上式表明,任一点的电位等于它周围四个点电位的平均值。
图 3-1 差分网格
差分方程的数值解法: 平面内有多少个节点,就能得到多少个差分方程,当这些节点数目较大时,使用迭代 法求解差分方程组比较方便。 a. 简单迭代法: 用迭代法解二维电位分布时,将包含边界在内的节点均以下标(i,j)表示,i,j 分 别表示沿 x,y 方向的标点。次序是 x 方向从左到右,y 方向从上到下,我们用上标 n 表示 某点电位的第 n 次的迭代值。下式得出点(i,j)的第 n+1 次电位的计算公式:
n n 1 n 1 1 n ( ) i , j 1 i 1, j i , j 1 4 i 1, j

c. 超松弛迭代法:
n 1 i, j

此式也称为异步迭代法,异步迭代法比简单迭代法收敛速度加快一倍左右。
为了加快收敛速度,常采用超松弛迭代法。计算时,将某点的新老电位值之差乘以一
图 4-3 三维电位分布图 等位线分布图
4.6 中心点电位的数值解和精确解的比较
4.6.1 中心点 p ( , ) 的数值解:
因为电位是从上至下逐渐呈递减状,中间点的所在等位线的 a b 为 50V。
, 2 2
a b 2 2 a b 2 2
4.6.2 中心点 p ( , ) 的精确解:
在不同的 m 取值下, a b 的取值会不同。
, 2 2
m=1.2, a b =49.5133V
, 2 2 , 2 2
m=1.4, a b =49.5149V M=1.6, a b =49.5161V

(完整版)超松弛迭代法

(完整版)超松弛迭代法

7.3 逐次超松弛迭代法7.3.1 SOR 迭代公式逐次超松弛(Successive Over Relaxation)迭代法,简称SOR 迭代法,它是在GS 法基础上为提高收敛速度,采用加权平均而得到的新算法,设解方程(7.1.3)的GS 法记为(7.3.1)再由与加权平均得这里ω>0 称为松弛参数,将(7.3.1)代入则得(7.3.2)称为SOR迭代法,[WTBX]ω>0称为松弛因子,当ω=1时(7.3.2)即为GS 法,将(7.3.2)写成矩阵形式,则得即于是得SOR 迭代的矩阵表示(7.3.3)其中(7.3.4)按(7.1.7)分解,有例7.7 给定方程组解用SOR 迭代公式(7.3.2) 可得精确解,用SOR 法求解,分别取ω=1 及ω=125.取,迭代7 次后分别为若要精确到小数后7位,对ω=1(即GS法)需迭代34次,而对ω=1.25的SOR法,只需迭代14次.它表明松弛因子ω选择的好坏,对收敛速度影响很大.7.3.2 SOR 迭代法收敛性根据迭代法收敛性定理,SOR 法收敛的充分必要条件为,收敛的充分条件为,但要计算比较复杂,通常都不用此结论,而直接根据方程组的系数矩阵 A 判断SOR 迭代收敛性,下面先给出收敛必要条件.定理3.1 设,则解方程的SOR 迭代法收敛的必要条件是0< ω<2.证明由SOR 迭代矩阵的表达式(7.3.4)于是另一方面,设的特征值为,由特征根性质,有若SOR 法收敛,则,由,则得0<ω<2.证毕.定理 3.2 若对称正定, 且 0<ω<2,则解 Ax=b 的 SOR 迭代法 (7.3.3)对 迭代收敛. 证明 设 的特征值为 (可能是复数 ),对应特征向量 x ≠0,由(7.3.4) 得因 为实对称矩阵,故 , 上式两边与 x 作内积,得(7.3.5)因A 正定,故 D 也正定,记 .又记 , ,由复内积性质得于是由 (7.3.5) 有由于 A 正定及 0< ω<2,故于是注:当 ω=1时 SOR 法即为 GS 法,故 GS 法也收敛,此即为定理 2.5(1)的结论 .对于 SOR 迭代法,松弛因子的选择对收敛速度影响较大,关于最优松弛因子研究较为复杂,且已有不少理论结果 .下面只给出一种简单且便于使用的结论 定理 3.3 设 为对称正定的三对角矩阵, 是解方程 (7.1.3)的 J 法迭代矩阵,若,记 ,则 SOR 法的最优松弛因子 为(7.3.7),如图 7-1 所示 .由(7.3.7)可知,当 ω=1,时,收敛速度为(7.3.6)根据定理,说明 GS 法比 J 法快一倍 .例 7.8 对例 7.7 中的方程组,用 SOR 迭代法求最优松弛因子 ,并研究其收敛速度 解 由于是对称正定的三对角矩阵, SOR 迭代收敛 .故,而 SOR 最优松弛因子,故它收敛很快,实际计算时迭代 14 次可达到小数后 7 位精度.故 .若要使误差,由,取 k=12 即可 .例 7.7 中取 ω=1.25 已近似对ω=1的GS 法,由达到与SOR 法的同样精度迭代次数故k≈34与实际计算结果相符讲解:SOR 迭代法只是GS法与归值的加权平均,计算公式为(7.3.2),迭代矩阵为(7.3.4),通常只是对A 对称正定的方程组使用SOR 法,而松弛因子ω选择较困难,一般选择对于A 为对称正定的三对角阵则最好最有因子为,其中为J 法的迭代矩阵。

MATLAB超松弛迭代法求解接地金属槽内电位分布

MATLAB超松弛迭代法求解接地金属槽内电位分布

用超松弛迭代法求解接地金属槽内电位分布一、实验内容:试用超松弛迭代法求解接地金属槽内电位的分布。

已知:cm a 4=,mm a h 104/== 给定边值如图所示。

给定初值:0)0(,=j i ϕ 误差范围:510-=ε 计算迭代次数,j i ,ϕ分布。

二.实验设计原理:有限差分法有限差分法(Finite Differential Method )是基于差分原理的一种数值计算法。

其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数ϕ的泊松方程的问题换为求解网格节点上ϕ的差分方程组的问题。

编程时已经考虑到题目要求,所以直接将边值编入到程序中,编写成function 的M 文件,这样只要调用此M 文件,输入变量为迭代因子,即可输出电位矩阵和迭代次数。

迭代时所用公式为U2(i,j)=U1(i,j)+a*(U1(i,j+1)+U1(i+1,j)+U2(i-1,j)+U2(i,j-1)-4*U1(i,j))/4 其中U2代表k+1,而U1代表k 。

以上分析了迭代程序的实现,但是迭代循环如何终止并未说明。

题目中的误差范围ε=0.00001,即当两次迭代结果相差不超过ε时停止,这里必须是九点都满足不超过ε,而并不是其中某一点达到即可。

当迭代次数过多时,程序会运行很长时间,(本题要求电位点数较少,不会出现迭代次数过多的情况。

当然点数越多结果越精确。

)当迭代因子a2时,迭代不收敛,程序会陷入死循环,因此需要限制循环次数,迭代100000次无结果则退出循环,防止程序崩溃。

这样可以画出流程图如下所示:否是三、程序运行界面及结果=ϕ= V100 ϕ 0=ϕ0=ϕ启动输入迭代因子迭代次数k=0 k=k+1 开始循环迭代 函数判断相邻二次差值是否小于给定值 输出k,电位U1适当改变迭代因子a的值是否能够减少迭代次数?我做了如下试验:迭代因子a 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9迭代次数k 17 11 14 51 不收敛可见,这样的更改在a取合适的值的时候能带来迭代次数十分显著的减少,但什么样的a才是“合适的”值,因为当a太小时,每次迭代U不能获得足够的增量。

电磁场实验——用有限差分法解静电场边值问题

电磁场实验——用有限差分法解静电场边值问题

实验一 用有限差分法解静电场边值问题一、目的1.掌握有限差分法的原理与计算步骤; 2.理解并掌握求解差分方程组的超松弛迭代法,分析加速收敛因子α的作用; 3.学会用有限差分法解简单的二维静电场边值问题,并编制计算程序。

二、方法原理有限差分法是数值计算中应用得最早而又相当简单、直观的一种方法。

应用有限差分法通常所采取的步骤是:⑴ 采用一定的网格分割方式离散化场域。

⑵ 进行差分离散化处理。

用离散的、只含有限个未知数的差分方程组,来近似代替场域内具有连续变量的偏微分方程以及边界上的边界条件(也包括场域内不同媒质分界面上的衔接条件)。

⑶ 结合选定的代数方程组的解法,编制计算机程序,求解由上面所得对应于待求边值问题的差分方程组,所得解答即为该边值问题的数值解。

现在,以静电场边值问题⎪⎩⎪⎨⎧==∂∂+∂∂)2()()1(02222s f D y x Lϕϕϕ中在为例,说明有限差分法的应用。

f (s )为边界点s 的点函数,二位场域D 和边界L 示于图5.1-1中。

x图5.1-1 有限差分的网格分割1. 离散化场域应用有限差分法时,首先需从网格划分着手决定离散点的分布方式。

通常采用完全有规律的方式,这样在每个离散点上可得出相同形式的差分方程,有效地提高解题速度。

如图5.1-1所示,现采用分别与x ,y 轴平行的等距(步距为h )网格线把场域D 分割成足够多的正方形网格。

各个正方形的顶点(也即网格线的交点)称为网格的结点。

这样,对于场域内典型的内结点0,它与周围相邻的结点1、2、3和4构成一个所谓对称的星形。

2.差分格式造好网格后,需把上述静电场边值问题中的拉普拉斯方程(1)式离散化。

设结点0上的电位值为ϕ0。

结点1、2、3和4上的电位值相应为ϕ1、ϕ2、ϕ3和ϕ4,则基于差分原理的应用,拉普拉斯方程(1)式在结点0处可近似表达为ϕ1+ϕ2+ϕ3+ϕ4-4ϕ1=0 (3)这就是规则正方形网格内某点的电位所满足的拉普拉斯方程的差分格式,或差分方程。

Matlab-求解金属槽槽内电位分布---副本培训讲学

Matlab-求解金属槽槽内电位分布---副本培训讲学

M a t l a b-求解金属槽槽内电位分布---副本Matlab 求解金属槽槽内电位分布摘要运用有限差分法将场域离散为许多小网格,将求解连续函数ϕ的泊松方程的问题换为求解网格节点上ϕ的差分方程组的问题。

用matlab程序计算出槽内电位分布的结果。

通过数值解和精确解的比较来验证有限差分法的可行性。

关键词:有限差分法; Matlab;金属槽槽内电位Solving the metal slots potential with MatlabAbstract:U sing the finite difference method (FDM)field is discreted into many small grid, transform ing the problem solving poisson equation with continuous function ϕ for solving the differential equations of grid node ϕ. We use Matlab program to calculate the potential distribution in slot results. The values got from these two methods are compared, which would be a validation of the feasibility of the Finite Difference Method.1 引言如图1所示,尺寸为a×a的正方形金属导体槽三面接地,上方是一块密实的但与之绝缘的金属盖板,其电位100Vϕ=,求槽内电位的分布情况。

这是二维静态场域的边值问题,在直角坐标系中,接地导体矩形槽中的电位函数p满足拉普拉斯方程2222x yϕϕ∂∂+=∂∂。

Xaa图1 正方形金属槽其边界条件满足第一类边界条件问题0(x,y)0x ϕ== (x,y)0x aϕ==(x,y)0y ϕ== (x,y)100y aϕ==我们由此可求出矩形导体槽内电位的分布数值解.将金属槽内场域D 用正方形网格进行粗略划分,其网格节点分布如图2所示网格间距为h=a/4,各边的节点数为L+1=5.234512345图2 网格划分2 求解2.1数值解求解过程由于本文采用的是超松弛迭代法的差分方程形式,现给出公式(n 1)(n)(n)(n)(n 1)(n 1)2(n),,1,,11,,1,,(4)4i ji ji ji j i ji j i j i jw h f ϕϕϕϕϕϕϕ+++++--=++++--(2.1)进行迭代,因为满足拉普拉斯方程故 f=0。

用有限差分方法求解微波电磁场问题--波导、微带、同轴电容

用有限差分方法求解微波电磁场问题--波导、微带、同轴电容

用有限差分方法求解微波电磁场问题本章主要内容是说明用差分法求解在微波器件和微波技术中常常遇见的一些偏微分方程的边值问题。

我们知道,很多给定边界条件的偏微分方程的求解相当复杂。

除少数情况外,要求它的精确解是颇为困难的,一般采用近似方法。

有限差分法就是经常采用的一种近似方法,它是用离散的、含有有限个未知数的差分方程去替代连续变量的微分方程,并把相应的差分方程的解作为该边值问题数值形式的近似解。

1 用差分方程解拉普拉斯方程在微波系统中很多问题,例如同轴线的台阶电容、谐振腔隙缝处的漏散电容、微带线的特性阻抗等,要求出它们的值,首先就要找出这些线或谐振腔内静电电位分布,这些电位分布是满足拉普拉斯方程的。

用差分方法解拉普拉斯方程是很方便的,所以我们开始就讨论它。

将拉普拉斯方程化成差分方程的方法在很多书上都可找到[6, 7],下面将列出公式而不作推导,仅对差分方程的求解过程作一些简单介绍。

一、基本差分公式我们要求的电位函数u ,它在区域D 内满足下面的拉普拉斯方程02222=∂∂+∂∂yux u (1-1) 在边界上S ,它服从以下条件:()p f u S = (1-2)式中()p f 为边界点p 的函数。

这类问题一般称为第一类边值问题或称狄里赫利问题。

为了用差分方法求解电位分布,先在y x -平面分别作两族平行于x 轴和y 轴的直线,线间的距离为h ,于是各直线的x 和y 坐标分别为:jh y ih x j i == ;式中j i ,为正整数,取值1、2、……。

这样区域D 就被许多边长为h 的正方形所覆盖,在图1-1中示出了这种情况。

各正方形的顶点被称为网格的节点,从图可以看到,各节点所处位置有所不同。

一些节点(例如a 节点)恰落在边界上S ,我们把它叫做边界节点。

有些节点到边界的距离不足h (例如节点b ),这些节点叫做不规则节点。

但是大部分节点到边界的距离大于h ,例如图上的0点,它们属于规则节点。

差分法就是求这些离散节点处u 的近似值。

用超松弛迭代法求解接地金属槽内电位分布

用超松弛迭代法求解接地金属槽内电位分布

实验一用超松弛迭代法求解接地金属槽内电位分布一、实验原理(有限差分法介绍)有限差分法(Finite Differential Method)是基于差分原理的一种数值计算法。

其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数ϕ的泊松方程的问题转换为求解网格节点上ϕ的差分方程组的问题。

二.实验内容与要求1. 试用超松弛迭代法求解接地金属槽内电位的分布。

已知:,cma4=mmah104/==给定边值如图所示。

给定初值:0)0(,=jiϕ误差范围:510−=ε计算迭代次数,ji,ϕ分布。

2、按对称场差分格式求解电位的分布(即求出D域的场分布,由对称性可得全域的场分布)已知,cma4=mmh14040==给定边值:如图1示给定初值)()(.1j401001jp12ji−=−−=ϕϕϕ误差范围: 510−=ε图1 接地金属槽内半场域的网格剖分计算:1)迭代次数,Nji,ϕ;2)按电位差10=Δϕ画出槽中等位线分布图。

图1.7 接地金属槽内网格0=ϕ=V 100 ϕ0=ϕ0=ϕ电磁场数值计算与仿真实验指导书63、分片场域的静电场分析(选做)用有限差分法计算区域内的电位、电场强度,绘制等位线。

并计算区域的电容,分析单元的大小对电容计算结果的影响,给出曲线。

100伏0伏εr1=2 εr2=4εr3=1εr4=3电磁场数值计算与仿真实验指导书7三、实验程序内容程序一:#include<iostream.h>#include<math.h>void main(){double m[5][5],n[5][5];int N=0,b=1;int i,j;double e=0.00001;double a=2/(1+sin(3.1415926/4));for(i=0;i<=4;i++)for(j=0;j<=4;j++){m[i][j]=0;n[i][j]=0;}m[1][4]=100;m[2][4]=100;m[3][4]=100;n[1][4]= m[1][4];n[2][4]= m[1][4];n[3][4]= m[1][4];for(j=4;j>=0;j--){for(i=0;i<=4;i++)cout<<"m["<<i<<"]["<<j<<"]"<<"="<<m[i][j]<<'\t';cout<<endl;}while(b==1){b=0;N=N+1;for(i=1;i<=3;i++)for(j=1;j<=3;j++)m[i][j]=m[i][j]+a*(m[i-1][j]+m[i][j-1]+m[i+1][j]+m[i][j+1]-4*m[i][j])/4; for(i=1;i<=3;i++)for(j=1;j<=3;j++){ if(fabs(m[i][j]-n[i][j])>=e)b=1;n[i][j]=m[i][j];}for(j=4;j>=0;j--){for(i=0;i<=4;i++)cout<<"m["<<i<<"]["<<j<<"]"<<"="<<m[i][j]<<'\t'; cout<<endl;}cout<<"N="<<N<<endl;}实验结果:N=13程序二:#include<iostream.h>#include<math.h>void main(){static double m[41][41],n[41][41];int N=0,b=1;int i,j;double e=0.00001;double a=2/(1+sin(3.1415926/4));for(i=2;i<=40;i++)for(j=2;j<=41;j++){m[i][j]=100*(j-1);m[i][j]=m[i][j]/40;n[i][j]=m[i][j];for(j=41;j>=1;j--){ for(i=1;i<=41;i++)cout<<m[i][j]<<'\t';cout<<endl;}while(b==1){b=0;N=N+1;for(i=2;i<=21;i++)for(j=2;j<=40;j++){m[i][j]=m[i][j]+a*(m[i-1][j]+m[i][j-1]+m[i+1][j]+m[i][j+1]-4*m[i][j])/4; }for(i=2;i<=21;i++)for(j=2;j<=40;j++){ if(abs(m[i][j]-n[i][j])>=e)b=1;n[i][j]=m[i][j];}}for(i=2;i<=21;i++)for(j=2;j<=40;j++)m[42-i][j]=m[i][j];cout<<endl;for(j=41;j>=1;j--){ for(i=1;i<=41;i++)cout<<m[i][j]<<'\t';cout<<endl;}cout<<"N="<<N<<endl;}实验结果:N=17等位线分布程序及图:(mathematic)。

【工程】南京理工大学工程电磁场实验报告

【工程】南京理工大学工程电磁场实验报告
Bmin(T)
P(W)
1
0.9997
1.9605e-006
60
0.9993
7.0578e-003
360
0.9881
2.5408e-001
1k
0.9192
1.9605e+000
2k
0.7585
7.8420e+000
5k
0.4124
4.9012e+001
10k
0.1996
1.9605e+002
经过对比发现在2kHz以下频率,数值结果与低频涡流损耗公式的计算结果吻合的非常好。
}
五、求解结果
六、实验总结
通过工程电磁场这门课的学习,掌握了二维静电场边值问题的分析,但是对有限差分法的掌握还不够深入,所以这次实验还是有点难度的。本次实验,编写C++程序即可,源程序的编写是在参照了许多资料完成的。通过本次实验。对有线差分法和超松弛迭代法有了进一步的了解。
实验二螺线管电磁阀静磁场分析
六、磁通等势线
七、Plugnut的BH曲线
八、实验总结
本次实验练习了在MAXWELL 2D环境下建立磁场模型,并求解分析磁场的分布,深入地认识螺线管静磁场的分布。通过建立磁场模型,熟悉了MAXWELL 2D的使用,整个实验过程比较顺利、完成了实验任务要求的内容,对课程的学习有了很大的帮助作用。
实验三叠片钢涡流损耗分析
2、实验要求
做不同频率下的叠片钢磁场分布图,计算不同频率下的最低磁通密度和涡流
损耗,与理论计算结果进行比较。
二、不同频率下的叠片钢磁场分布图
f=1hz:
f=60hz:
f=360hz:
f=1khz:

工程电磁场答辩

工程电磁场答辩

1 1 2 2 p q
BACK
(矩形场域、正方形网格)
问题陈述
如右图,接地金属槽横截面边长 为4cm的正方形,h=1cm,则可将其 分成4*4的网格,共25个网格节点, 从上到下分别编号为dij, i,j从零开始(i表示行数,j表示 列数)编程时,可建立一个二维 数组V1[5][5],将dij放入 V1[i][j]中,由于每次迭代后, 数组中的值会发生改变, 故再建立一个数组V2[5][5];
} for(i=1;i<4;i++) {
for(j=1;j<4;j++) { a[i][j]=b[i][j]+(1.20/4)*(b[i+1][j]+ b[i][j+1]+a[i-1][j]+a[i][j-1]-4*b[i][j]); //迭代公式,取松弛因子为α=1.20 }
}

图五 Hz=2kHz时叠片钢的磁场分布
图六 Hz=5kHz时叠片钢的磁场分布
图七 Hz=10kHz时叠片钢的磁场分布
软件计算了不同频率处最低磁通密度Bmin和涡流损耗P F(Hz) 1 Bmin 1.000 P(W) 1.93366e-6
60
360 1k 2k
0.999
0.988 0.919 0.758
1.9605e-6
7.0578e-3 2.5460e-1 1.9907 8.1618
5k
10k
0.412
0.202
5.3053e1
2.1928e2
数据/观测
图三 Hz=360Hz时叠片钢的磁场分布 图一 Hz=1Hz时叠片钢的磁场分布 图二 Hz=60Hz时叠片钢的磁场分布

工程电磁场实验报告用超松弛迭代法求解接地金属槽内的电位分布

工程电磁场实验报告用超松弛迭代法求解接地金属槽内的电位分布

南京理工大学工程电磁场实验报告班级:1m 班姓名:mmmm学号:mmm2013.06.16实验一 用超松弛迭代法求解接地金属槽内的电位分布 一、实验目的1、掌握如何使用超松弛法来近似求解金属槽内的电位值。

2、掌握利用C++来实现超松弛迭代法。

二、实验原理有限差分法是基于差分原理的一种计算方法。

对于下面的的一个二维泊松方程的差分格式,利用差分就可以得到每一个点的电位。

图1 有限法网格分割其电位值是: 2012341()4Fh ϕϕϕϕϕ=+++-其中F ρε=-, h 为网格间距。

若令F=0,则电位情况则变成了拉普拉斯的差分格式:012341()4ϕϕϕϕϕ=+++图2 迭代法求电位值1、高斯-赛德尔计算法:(1)112,1,,11,,11[]4k k k k k i j i j i j i j i j Fh ϕϕϕϕϕ+++--++=+++-直到(1)(),,k k i j i j ϕϕε+-<为止。

2、对于超松弛法,我们引入一个加速收敛因子α并且得到下面的计算公式:(1)()112(),,1,,11,,1,[4]4k k k k k k k i j i j i j i j i j i j i j Fh αϕϕϕϕϕϕϕ+++--++=++++--直到(1)(),,k k i j i j ϕϕε+-<为止。

借助计算机来求解的时候,其流程图如下:图3 迭代法求电位值的流程图三、实验内容(1)、题目要求利用超松弛迭代法求解接地金属槽内的电位分布,给定图如下。

已知a=4cm,h=a/4=10mm 。

给定初值(0),j 0i ϕ=,误差范围为510ε-=。

求迭代次数N=?以及电位分布,i j ϕ。

图4 超松弛法求接地金属槽内的电位值(2)、利用C++来编写计算机的求解程序,其程序如下:程序(3)、求解结果运行程序后,就能得到求解的结果。

图5 运行程序后的初始界面图6 求解结果(4)结果分析1、从实验结果可以看到,当加速收敛因子的大小不同的时候,两者的迭代次数是有差异,所以选取合适的最佳的收敛因子可以大大加速求解的速度,节省存储空间,提高效率。

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

用超松弛迭代法求解接地金属槽内电
位分布
一、实验内容:
用超松弛迭代法求解接地金属槽内电位的分布。

已知:cm a 4=,mm a h 104/== 给定边值如图所示。

给定初值:0)0(,=j i ϕ 误差范围:510-=ε 计算迭代次数,j i ,ϕ分布。

=ϕ= V
100 ϕ 0
=ϕ0

二.实验设计原理:有限差分法
α称为松弛因子。

不同的α值,可以有不同的收敛速度,其值范围一般为1与2之间。

通常α会有一个最佳值。

最佳α的确定与具体问题有关,显然,如果α选择合适,超松弛迭代法收敛速度最快。

(1)划分网格:节点编号、坐标的形成。

(2)赋初值:随意,尽可能靠近真实解。

比如本题u7=2.0,u8=7.5,u9=10。

(3)边界条件:给电位值,找规律。

u1,u2,u3,u4,u6,u11,u12,u13,u14=0;
u5,u10,u15=100。

(4)迭代 u7=(u2+u6+u8+u12)/4 ;
u8=(u3+u7+u9+u13)/4 ;
u9=(u4+u8+u10+u14)/4 。

(5)反复迭代,给定某一误差
有限差分法是基于差分原理的
一种数值计算法。

其基本思想:将
场域离散为许多小网格,应用差分
原理,将求解连续函数ϕ的泊松方
程的问题换为求解网格节点上ϕ的
差分方程组的问题。

编程时已经考虑到题目要求,
所以直接将边值编入到程序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。

这次编程和以前不同的是将数组和正交函数
图像结合起来,所以在考虑输入和输出的时候会有一些难度,因为数组是上面是小的而图像上面越在上,代表坐标就越大。

所以在输入和输出的时候要谨慎对待。

Editor中源代码为:
1.clc
2.clear
3.close all
4.hx=5;
5.hy=5;
6.v1=ones(hy,hx);
7.v1(hy,:)=ones(1,hx)*100;
8.v1(1,:)=ones(1,hx)*0
9.for i=1:hy;
10.v1(i,1)=0;
11.v1(i,hx)=0;
12.end
13.m=4;
14.w=2/(1+sqrt(1-cos(pi/m)*cos(pi/m)));
15.maxt=1; t=0;
16.v2=v1;n=0
17.while(maxt>1e-5)
18.n=n+1
19.maxt=0;
20.for i=2:hy-1 ;
21.for j=2:hx-1 ;
22.v2(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 ))*w/4;
23.t=abs(v2(i,j)-v1(i,j));
24.if(t>maxt) maxt=t; end
25.end
26.end
27.v1=v2;
28.end
29.subplot(1,2,1),mesh(v2)
30.axis([0,5,0,5,0,100]);
31.subplot(1,2,2),contour(v2,20);
三、程序运行界面及结果
电压分布:
改变收敛因子,α取接近1的数,α计算次数越少,迭代效果越好;α越接近2,计算次数越多,迭代效果越差。

收敛因子不同,得出的电位不会有很大的差距,只是对迭代的次数会有影响。

四.实验心得与思考
通过设计程序并进行完善调试,我对有限差分法有了进一步的认识,同时也已经掌握超松弛迭代法的运用。

对于这一类题型都可以运用同样方法予以解决。

就我个人而言,我觉得自己对matlab的使用还不是很了解,尽管算法能够理解,但真正到了运用的时候仍然在纠结下一句要怎么写。

接触这个软件不到半个月,提升空间还有很多。

比如在设计迭代时,该怎样命名参数,怎么重复运算。

这个题里还涉及了有关x,y的坐标问题,如果再进一步学习,我想会写的再清晰一些。

尽管我不清楚最终的结果是否正确,我认为我已经将我所理解的问题表达出来了。


想我会继续思考这个问题,继续完善的。

附:c++代码(用于验证结论)
#include<iostream.h>
#include<math.h>
void main()
{
double m[5][5],n[5][5];
int N=0,b=1;
int i,j;
double e=0.00001;
double a=2/(1+sin(3.1415926/4;
for(i=0;i<=4;i++)
for(j=0;j<+4;j++)
{
m[i][j]=0;[i][j]=0;
}
m[1][4]=100;
m[2][4]=100’
m[3][4]=100;
n[1][4]=m[1][4];
n[2][4]=m[1][4];
n[3][4]=m[1][4];
for(j=4;j>=0;j--)
{
for(i=0;i<=4;i++)
cout<<”m[“<<i<<”][“<<j<<”]”<<”=”<<m[i][j]<<’\t’;
cout<<end1;
}
while(b==1)
{
b=0;
N=N+1;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
m[i][j]=m[i][j]+a*(m[i-1][j]+m[i][j-1]+m[i+1][j]+m[i][j+1]-4*m[i][j])/4;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{
if(fabs(m[i][j]-n[i][j]>=e)
b=1;
n[i][j]=m[i][j];
}
}
for(j=4;j>=0;j--)
{
for(i=0;i<=4;i++)
cout<<”m[<<i<<”][“<<j<<”]”<<”=”<<m[i][j]<<’\t’; cout<<end1;
}
cout<<”N=”<<N<<end1;。

相关文档
最新文档