实验一用超松弛迭代法求解接地金属槽内电位分布.doc
-
资源ID:4004011
资源大小:105.50KB
全文页数:7页
- 资源格式: DOC
下载积分:16金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
实验一用超松弛迭代法求解接地金属槽内电位分布.doc
实验一 用超松弛迭代法求解接地金属槽内电位分布 学院:自动化学院姓名:学号: 一、实验内容:=V100j试用超松弛迭代法求解接地金属槽内电位的分布。已知:,给定边值如图所示。给定初值:误差范围:计算迭代次数,分布。二实验设计原理:有限差分法有限差分法(Finite Differential Method)是基于差分原理的一种数值计算法。其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数的泊松方程的问题换为求解网格节点上的差分方程组的问题。编程时已经考虑到题目要求,所以直接将边值编入到程序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。这次编程和以前不同的是将数组和正交函数图像结合起来,所以在考虑输入和输出的时候会有一些难度,因为数组是上面是小的而图像上面越在上,代表坐标就越大。所以在输入和输出的时候要谨慎对待。迭代时所用公式是和书上一样,为 aij=bij+w/4*(bi+1j+bij+1+aij-1+ai-1j-4*bij);其中a代表k+1,而b代表k。以上分析了迭代程序的实现,但是迭代循环如何终止并未说明。题目中的误差范围=0.00001,即当两次迭代结果相差不超过时停止,这里只得是九点都满足不超过,而并不是其中某一点达到即可。这样可以保证不是陷入死循环,从而输出结果。这样可以画出流程图如下所示:启动 输出开始菜单(边值都已经给定) 输入迭代因子w 迭代次数n=0n+ 开始循环迭代函数判断相邻二次差值是否小于给定值 否 输出n,电位aij终止 是 三、程序运行界面及结果1:开始界面:要求输入迭代因子2:输入迭代因子进行计算:如输入1.18 可以求出结果,得知要进行12次迭代。四源程序代码#include<iostream.h>#include<math.h>int n=0,m=0,k=0,i=0,j=0;float w;float a55,b55;void cjc() /定义函数名while(1)for( j=1;j<4;j+)for( i=1;i<4;i+)aij=bij+w/4*(bi+1j+bij+1+aij-1+ai-1j-4*bij); /函数运算迭代公式n+;for(i=1;i<4;i+)for(j=1;j<4;j+)if(fabs(aij-bij)<0.00001) /保证误差,从而能够确保输出,不必陷入死循环k+;if(k=9)break;elsek=0;for( i=1;i<4;i+)for( j=1;j<4;j+)bij=aij; void main()cout<<" 工程电磁场 逐次超松弛法求解电位 n" cout<<endl;for(int i=0;i<5;i+ ) for (j=0;j<5;j+) bij=aij=0;bij=aij=0; for(int j=0;j<5;j+)bj4=aj4=100;/输入函数边值cout<<"请输入“加速收敛因子(大于等于1小于2):”n"while(1)cin>>w;/输入迭代因子if(w>2|w<1)cout<<"输入错误,请重新输入n"elsebreak;cjc();cout<<"电位分布如下:n"for(j=4;j>=0;j-)for(i=0;i<5;i+)cout<<aij<<" "cout<<endl; /输出结果cout<<"迭代次数为:n"cout<<"n="<<n<<endl;五实验心得与思考通过设计程序并进行完善调试,我对有限差分法有了进一步的认识,同时也已经掌握超松弛迭代法的运用。对于这一类题型都可以运用同样方法予以解决。这次的源程序是针对于特定题目编出的程序,如果边值条件有所改变那么源程序也得改变,显得不是很方便。应该可以编出一种类,既将长和宽以及步距,靠输入其中来进行运算。由于这种编程比较复杂,这次由于时间不充足当然自己能力有限,所以只好编出这种特定的程序,希望以后能够加强学习,充实自己,编出更加理想的程序。