工程电磁场C++编程作业 一、用超松弛迭代法求解接地金属槽内电位的分布二、按对称场差分格式求解电位的分布
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工程电磁场实验报告
——C++编程课题
一、用超松弛迭代法求解接地金属槽内电位的分布
二、按对称场差分格式求解电位的分布
一、用超松弛迭代法求解接地金属槽内电位的分布一、实验原理
二、程序框图:
三、实验内容:
1、用超松弛迭代法求解接地金属槽内点位分布
1)内容及要求:
2)实验思路:
由超松弛迭代法,将网格分成5*5列,边界点正好都是网格的节点,对所有的节点进行编号,并记录节点的坐标位置,并用一个二维数组进行表示u1[5][5],此数组表示的是迭代后的值。考虑到迭代前后的数值不一样,再用一个二维数组表示迭代之前的数值u2[5][5]。
运用C++的知识在计算机上将边界值和内节点进行赋值,即将节点离散化。然后开始迭代。迭代开始之前将另一个数组b赋值,用数组a给其赋值,表示迭代之前的值,好用于后面精度的比较。开始进行迭代时,根据超松弛公式将迭代方程编写输入。每次迭代结束后将数组a和数组b对应的值进行比较,即是精度的计算。如果误差大于所规定的误差0.00001,将a的值赋给b,然后继续进行迭代。直到当迭代前后数值误差小于所规定的误差时停止迭代。并比较迭代因子的大小对收敛次数的影响,选取最烧收敛次数的迭代因子作为实验最后的输出结果。
最后输出最适合迭代因子、迭代的次数和迭代后各点的电位值。
3)程序如下:
//********用超松弛迭代法求解接地金属槽内电位的分布********
#include
#include
#include
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<<"迭代前各电位点上的初始值:"< for(i=0;i<5;i++) {for(j=0;j<5;j++){cout< }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);