工程电磁场报告.docx

上传人:b****1 文档编号:10662380 上传时间:2023-05-27 格式:DOCX 页数:15 大小:210.12KB
下载 相关 举报
工程电磁场报告.docx_第1页
第1页 / 共15页
工程电磁场报告.docx_第2页
第2页 / 共15页
工程电磁场报告.docx_第3页
第3页 / 共15页
工程电磁场报告.docx_第4页
第4页 / 共15页
工程电磁场报告.docx_第5页
第5页 / 共15页
工程电磁场报告.docx_第6页
第6页 / 共15页
工程电磁场报告.docx_第7页
第7页 / 共15页
工程电磁场报告.docx_第8页
第8页 / 共15页
工程电磁场报告.docx_第9页
第9页 / 共15页
工程电磁场报告.docx_第10页
第10页 / 共15页
工程电磁场报告.docx_第11页
第11页 / 共15页
工程电磁场报告.docx_第12页
第12页 / 共15页
工程电磁场报告.docx_第13页
第13页 / 共15页
工程电磁场报告.docx_第14页
第14页 / 共15页
工程电磁场报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

工程电磁场报告.docx

《工程电磁场报告.docx》由会员分享,可在线阅读,更多相关《工程电磁场报告.docx(15页珍藏版)》请在冰点文库上搜索。

工程电磁场报告.docx

工程电磁场报告

工程电磁场报告

迭代法求电位分布

 

2010/4/2

0808190246吴鹏

工程电磁场报告

-------迭代法在计算电位中的应用

所谓迭代法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。

迭代法又分为精确迭代和近似迭代。

“二分法”和“牛顿迭代法”属于近似迭代法。

迭代算法是用计算机解决问题的一种基本方法。

它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

在这次实验中是利用迭代法求出在二维场中的电位分布,相对于其他求解方法,虽然精确度存在误差,但是简单易行,充分利用计算机的高效,可以很快的得出大致的电位分布。

实验采用的是C++语言进行辅助。

一、初试牛刀-----计算5×5的电位分布;

这个实验是用于实现超松弛法来求节点电位,考虑到要求的场是二维分布的,所以构造的基本数据为二维数组,套用的迭代公式为:

a[i][j]=b[i][j]+(α/4)*(b[i+1][j]+b[i][j+1]+a[i-1][j]+a[i][j-1]-4*b[i][j]);迭代因子为α,可根据经验公式算出,直接赋值,考虑到计算机的高效性,在此可任取一大于1小于2的数,最后均能得出答案,只是迭代次数有所差异。

该实验的方框图如下

N

Y

Y

实现该功能的源程序如下:

#include

#include

#include

voidmain()

{

doublea[5][5];

doubleb[5][5];

inti=0,j=0;

staticintM=0;

boolN=true;

for(j=1;j<=3;j++)

{

for(i=1;i<=3;i++)

a[i][j]=0;

}

for(j=0;j<=4;j++)

{

a[4][j]=0;

a[0][j]=100;

}

for(i=1;i<=4;i++)

{

a[i][0]=0;

a[i][4]=0;

}

cout<<"各内节点上电位的初始迭代值为:

"<

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

cout<

}

cout<

}

cout<<"\n";

do

{

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

b[i][j]=a[i][j];

}

}

for(i=1;i<=3;i++)

{

for(j=1;j<=3;j++)

{

a[i][j]=b[i][j]+(1.2/4)*(b[i+1][j]+b[i][j+1]+a[i-1][j]+a[i][j-1]-4*b[i][j]);}

}

for(i=1;i<=3;i++){

for(j=1;j<=3;j++)

{

if(fabs(a[i][j]-b[i][j])>0.00001)

{

N=true;

break;

}

else

N=false;

}

}

M++;

}

while(N);

cout<<"经迭代后,各节点电位的近似值为:

"<

for(i=0;i<=4;i++)

{

for(j=0;j<=4;j++)

{

cout<

:

fixed)<

}

cout<

}

cout<

cout<<"迭代次数"<

}

程序很短,但是实现了要求的功能,经运行可得出结果:

电位大概的分布如左图所示,可以看出还是比较符合的。

 

在这个实验中要注意几点:

首先是要选取合适的数据类型,如果采用了int型,会对结果造成很大的影响;

其次是对精度的控制,否则会影响迭代次数和结果;

再次就是迭代公式要熟悉,把它转换为计算机语言。

总之这个实验算是一个练手,为下一步的实验打下基础。

搞清楚这个实验的原理和方法,很容易得出下一个实验的操作过程。

二、实战演练------用迭代法求出对称场中的点位分布。

其实这一个实验和上一个是大同小异,只是要考虑最中间一行的迭代关系,这很重要,否则会出现中间两行没有进行迭代的情况。

作出左边一半后,直接再用C++给另外一半赋予与左侧相对称的值即可。

试验设计的方框图如下图所示:

Y

实验源程序如下:

#include

#include

#include

#include

voidmain()

{

doublea[40][20];//定义数组a,用于存放初始迭代值

doubleb[40][20];//定义数组b,用于和数组a进行比较,以确定是否达到实验进度

doublec[40][40];

inti=0,j=0;

boolM;

staticintN=0;//定义静态变量,记录迭代的次数

ifstreaminfile("test.txt",ios:

:

noreplace);

ofstreamoutfile;

outfile.open("test.txt");

for(i=1;i<40;i++)//为内节点赋初始迭代值

{

for(j=1;j<20;j++)

{

a[i][j]=2.5*(j-1);

}

}

for(i=1;i<40;i++)//为左边界赋初始迭代值

{

a[i][0]=0;

}

for(j=0;j<20;j++)//为上下边界赋值

{

a[0][j]=100;

a[39][j]=0;

}

cout<<"初始迭代值为:

"<

outfile<<"初始迭代值为:

"<

for(i=0;i<40;i++)

{

for(j=0;j<20;j++)

{

outfile<

cout<

}

cout<

outfile<

}

do//开始进行迭代

{

for(i=0;i<40;i++)//先将a数组前一次复制到b数组,便于精度比较

{

for(j=0;j<20;j++)

{

b[i][j]=a[i][j];

}

}

for(i=1;i<=38;i++)

{

for(j=1;j<=18;j++)//套用迭代公式,去迭代因数为1.5

{

a[i][j]=b[i][j]+(1.5/4)*(b[i+1][j]+b[i][j+1]+a[i-1][j]+a[i][j-1]-4*b[i][j]);

}

a[i][19]=0.25*(a[i-1][19]+a[i][18]+b[i+1][19]+a[i][18]);

}

for(i=1;i<=38;i++)//比较是否达到精度要求

{

for(j=1;j<=18;j++)

{

if(fabs(a[i][j]-b[i][j])>0.00001)

{

M=true;

break;

}

else

M=false;

}

N++;//完成一次迭代,迭代次数+1

}

}while(M);

for(i=0;i<=39;i++)//将另外对称部分镜像出来

{

for(j=0;j<=19;j++)

{

c[i][j]=a[i][j];

c[i][39-j]=a[i][j];

}

}

cout<

cout<<"经过的迭代次数为:

"<

outfile<<"经过的迭代次数为:

"<

cout<

cout<<"经过迭代后,各节点电位的近似值为:

"<

outfile<<"经过迭代后,各节点电位的近似值为:

"<

for(i=0;i<=39;i++)

{

for(j=0;j<=39;j++)

{

cout<

:

fixed)<

outfile<

:

fixed)<

}

cout<<'\n';

cout<<'\n';

outfile<

}

infile.close();

outfile.close();

cout<<"实验数据太多,已存放源程序目录下,名为“test.txt”";

cout<<'\n';cout<<'\n';

}

 

将输出数据全部导出到文件中,再利用excel制作表格,可得到比较好的数据分布图,如左图。

可看出数据越多,图表越是精确,基本上可以反映出电位分布情况。

这和用软件模拟的效果很是相似。

实验总结:

经过了这次试验,让我对迭代法有了一个更深入的认识,领略到了计算机带来的方便,对于一些抽象的东西,充分利用计算机,让我们直观的看到了电位分布,这是很便捷的,相信在经过一段时间的学习之后,能更有效地利用现代的手段进行辅助学习。

迭代法的巧妙利用能解决许多问题,它虽然要重复很多次,但计算简便,就相对于精度要求不高的定性分析,是一种很有效的解决方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2