收藏 分销(赏)

综合项目工程电磁场报告.doc

上传人:精**** 文档编号:3001040 上传时间:2024-06-12 格式:DOC 页数:13 大小:638.04KB 下载积分:8 金币
下载 相关 举报
综合项目工程电磁场报告.doc_第1页
第1页 / 共13页
综合项目工程电磁场报告.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
工程电磁场报告 工程电磁场报告 2010/4/2 张伟 工程电磁场报告 -------迭代法在计算电位中应用 所谓迭代法,是一种不断用变量旧值递推新值过程,跟迭代法相相应是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精准迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。 迭代算法是用计算机解决问题一种基本办法。它运用计算机运算速度快、适合做重复性操作特点,让计算机对一组指令(或一定环节)进行重复执行,在每次执行这组指令(或这些环节)时,都从变量原值推出它一种新值。在这次实验中是运用迭代法求出在二维场中电位分布,相对于其她求解办法,虽然精准度存在误差,但是简朴易行,充分运用计算机高效,可以不久得出大体电位分布。实验采用是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数,最后均能得出答案,只是迭代次数有所差别。 启动 该实验方框图如下 赋边界已知电位 赋场点初始值 合计迭代次数M=0 迭代次数M+1 运用公式进行迭代 判断与否达到精度规定 N Y 打印出每一种点点位 Y 结束 实现该功能源程序如下: #include<iostream.h> #include<math.h> #include<iomanip.h> void main() { double a[5][5]; double b[5][5]; int i=0,j=0; static int M=0; bool N=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<<"各内节点上电位初始迭代值为:"<<endl;//输出初始迭代值 for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { cout<<a[i][j]<<" "; } cout<<endl; } 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<<"经迭代后,各节点电位近似值为:"<<endl; for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { cout<<setiosflags(ios::fixed)<<setprecision(5)<<a[i][j]<<" "; } cout<<endl; } cout<<endl; cout<<"迭代次数"<<M<<endl<<endl; } 程序很短,但是实现了规定功能,经运营可得出成果: 电位大概分布如左图所示,可以看出还是比较符合。 在这个实验中要注意几点: 一方面是要选用适当数据类型,如果采用了int型,会对成果导致很大影响; 另一方面是对精度控制,否则会影响迭代次数和成果; 再次就是迭代公式要熟悉,把它转换为计算机语言。 总之这个实验算是一种练手,为下一步实验打下基本。弄清晰这个实验原理和办法,很容易得出下一种实验操作过程。 二、 实战演习------用迭代法求出对称场中点位分布。 其实这一种实验和上一种是大同小异,只是要考虑最中间一行迭代关系,这很重要,否则会浮现中间两行没有进行迭代状况。作出左边一半后,直接再用C++给此外一半赋予与左侧相对称值即可。 程序启动 实验设计方框图如下图所示: 赋边界电位值 赋场内各点电位值 合计迭代次数M=0 迭代次数加1 按照公式进行迭代 检查与否达到精度 Y 把此外一半镜像出来,直接赋值 打印出成果 结束 实验源程序如下: #include<iostream.h> #include<math.h> #include<fstream.h> #include<iomanip.h> void main() { double a[40][20];//定义数组a,用于存储初始迭代值 double b[40][20];//定义数组b,用于和数组a进行比较,以拟定与否达到实验进度 double c[40][40]; int i=0,j=0; bool M; static int N=0;//定义静态变量,记录迭代次数 ifstream infile("test.txt",ios::noreplace); ofstream outfile; 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<<"初始迭代值为:"<<endl; outfile<<"初始迭代值为:"<<endl; for(i=0;i<40;i++) { for(j=0;j<20;j++) { outfile<<a[i][j]<<" ";//输出到文献 cout<<a[i][j]<<" "; //输出数组 } cout<<endl; outfile<<endl; } 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<<endl; cout<<"通过迭代次数为:"<<N<<endl; outfile<<"通过迭代次数为:"<<N<<endl; cout<<endl; cout<<"通过迭代后,各节点电位近似值为:"<<endl; outfile<<"通过迭代后,各节点电位近似值为:"<<endl; for(i=0;i<=39;i++) { for(j=0;j<=39;j++) { cout<<setiosflags(ios::fixed)<<setprecision(5)<<c[i][j]<<" "; outfile<<setiosflags(ios::fixed)<<setprecision(5)<<c[i][j]<<" "; } cout<<'\n'; cout<<'\n'; outfile<<endl; } infile.close(); outfile.close(); cout<<"实验数据太多,已存储源程序目录下,名为“test.txt”"; cout<<'\n';cout<<'\n'; } 将输出数据所有导出到文献中,再运用excel制作表格,可得到比较好数据分布图,如左图。可看出数据越多,图表越是精准,基本上可以反映出电位分布状况。这和用软件模仿效果很是相似。 实验总结: 通过了这次实验,让我对迭代法有了一种更进一步结识,领略到了计算机带来以便,对于某些抽象东西,充分运用计算机,让咱们直观看到了电位分布,这是很便捷,相信在通过一段时间学习之后,能更有效地运用当代手段进行辅助学习。 迭代法巧妙运用能解决许多问题,它虽然要重复诸多次,但计算简便,就相对于精度规定不高定性分析,是一种很有效解决办法。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服