电磁场与电磁波赛德尔法求电位编程何梦2016_第1页
电磁场与电磁波赛德尔法求电位编程何梦2016_第2页
电磁场与电磁波赛德尔法求电位编程何梦2016_第3页
电磁场与电磁波赛德尔法求电位编程何梦2016_第4页
电磁场与电磁波赛德尔法求电位编程何梦2016_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上 电磁场与电磁波赛德尔法求电位编程班级:通信工程141班 姓名: 何 梦 学号: 一 实验题目横截面如图所示的导体长槽,上方有一块与槽相互绝缘的导体盖板,截面尺寸为a*b,槽体的电位为零,盖板的电位为100v。用高斯赛德尔迭代法编程求解。(如图1)要求:步长=1,x,y方向的网格线为m=16,n=10,迭代精度为a=10-6.计算:迭代次数N与电位分布。yb 1000 00 0 a x 图1二迭代解程序框图(如图2所示)启动赋边界节点已知电位值赋予场域内各节点电位初始值累计迭代次数N=0N=N+1按超松弛法进行一次迭代,求电位所有内点相邻二次迭代值的最大误差是否小于精

2、度a输出N和电位结束 图2 三,程序算法1. 赋初值:分别用四个for循环来给矩形的四边赋值,然后再用一个for循环给中间未知值的地方赋值,这样可以改变中间值,从而减少计算次数。2. 迭代法:在用for循环来实行一次次的迭代,并同时用while语句来控制循环何时停止。3. 输出结果:用for循环将最终计算结果一个个输出。四编译结果(如图3所示)附录: #include<stdio.h> #include<math.h>void main()double a1117,x;int p,q,h0,l0,h1,l1,h10,l16;for( h0=0,l0=0;l0<17

3、;l0+) ah0l0=100; /这里是先给四周赋初值for( h1=1,l0=0;h1<11;h1+) ah1l0=0;for( h10=10,l1=1;l1<17;l1+) ah10l1=0;for( h1=1,l16=16;h1<11;h1+) ah1l16=0; for( h1=1;h1<10;h1+) for( l1=1;l1<16;l1+) ah1l1=25; /这里是给中间赋初值,可以通过改变这里的值,从而减小运算int num,sum=0;do num=0; for(h1=1;h1<10;h1+) for(l1=1;l1<16;l1+

4、) x=(ah1-1l1+ah1l1-1+ah11+l1+ah1+1l1)/4; /这是将中间的每个值用公式求出来 if(fabs(x-ah1l1)<1e-6) num=num+1; /判断每个值是否在精度要求的范围内ah1l1=x; sum=sum+1; /计算循环次数while(num<135); /当每个值满足精度范围时,就不用循环 for(p=0;p<11;p+)for( q=0;q<17;q+)printf("%f ",apq); /输出数组的值printf("n");printf("迭代次数=%d"

5、,sum); /输出循环次数MATLAB代码t=1:1:17;a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17=textread('D:);d=a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17;plot(t,d,'*b'); 生成文件Calculator.txt'代码#include<math.h>#include"iostream"#include<fstream>using nam

6、espace std;void main()fstream outfile("D:/Calculator.txt", ios:out);double a1117, x;int p, q, h0, l0, h1, l1, h10, l16;for (h0 = 0, l0 = 0; l0<17; l0+)ah0l0 = 100; /这里是先给四周赋初值for (h1 = 1, l0 = 0; h1<11; h1+)ah1l0 = 0;for (h10 = 10, l1 = 1; l1<17; l1+)ah10l1 = 0;for (h1 = 1, l16 =

7、16; h1<11; h1+)ah1l16 = 0;for (h1 = 1; h1<10; h1+)for (l1 = 1; l1<16; l1+)ah1l1 = 25; /这里是给中间赋初值,可以通过改变这里的值,从而减小运算int num, sum = 0;donum = 0;for (h1 = 1; h1<10; h1+)for (l1 = 1; l1<16; l1+)x = (ah1 - 1l1 + ah1l1 - 1 + ah11 + l1 + ah1 + 1l1) / 4; /这是将中间的每个值用公式求出来if (fabs(x - ah1l1)<1e-6) num = num + 1; /判断每个值是否在精度要求的范围内ah1l1 = x;sum = sum + 1; /计算循环次数 while (num<135); /当每个值满足精度范围时,就不用循环for (p = 0; p<11; p+)for (q = 0; q<17; q+)out

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论