电磁场与电磁波实验报告
实验项目: 有限差分法
一、实验目的及要求
1、学习有限差分法的原理与计算步骤;
2、学习用有限差分法解静电场中简单的二维静电场边值问题;
3、学习用Matlab语言描述电磁场与电磁波中内容,用matlab求解问题并用图形表示出了,学习matlab语言在电磁波与电磁场中的编程思路。
二、实验内容
理论学习:学习静电场中边值问题的数值法中的优先差分法的求解知识; 实践学习:学习用matlab语言编写有限差分法计算二维静电场边值问题;
三、实验仪器或软件
Matlab7.0
电脑
四、实验原理
有限差分法的基本思想
将计算场域划分成网格,把求解场域内连续的场分布用求解网格节点上的离散数值解来代替;即用网格节点的差分方程近似代替场域内的偏微分方程来求解。 简单迭代法
先对场域内的节点赋予初始值始值。然后再按照:
(0)?i,j ,这里上标(0)表示第0次近似值,即初
?
(k?1)i,j1(k)(k)(k)(k)?[?i?1,j??i,j?1??i?1,j??i,j?1] 4进行反复迭代。若当第N次迭代结束后,所有内节点相邻两次迭代值之间的绝对误差小于事先给定的精度,则迭代停止。
(N)(N?1)MAX????W i,ji,j注意:
初始值的赋予是任意的;
赋予初始值后,请按“从左到右、从下到上”的固定顺序依次计算各节点值; 当所有节点都算完一遍后,再用它们的新值代替旧值,即完成一次迭代。
五、实验步骤
复习理论知识; 编写matlab程序;
六、结果分析与问题讨论 1、程序:
clear
X=[0,0,0,0,0;0,25,25,25,0;0,50,50,50,0;0,75,75,75,0;100,100,100,100,100]
Pot=[0,0]; for i=2:4 for j=2:4
PotX(i-1,j-1)=(X(i-1,j)+X(i,j-1)+X(i+1,j)+X(i,j+1))/4 Pot(1)=abs(PotX(i-1,j-1)-X(i,j)); Pot(2)=max(Pot) end end
X(2:4,2:4)=PotX num=1;
while(max(1000.*Pot)>1) Pot(2)=0;
(i,j?1,2,......) (k?0,1,2,......) for i=2:4
for j=2:4
PotX(i-1,j-1)=(X(i-1,j)+X(i,j-1)+X(i+1,j)+X(i,j+1))/4 Pot(1)=abs(PotX(i-1,j-1)-X(i,j)); Pot(2)=max(Pot) end end
X(2:4,2:4)=PotX num=num+1 end
surf([0:4],[0:4],X); shading interp colorbar('horiz')
title('有限差分法计算电位图');
2、运行结果
X =
0 0 0 0 0 0 25 25 25 0 0 50 50 50 0 0 75 75 75 0 100 100 100 100 100
%%第一次迭代 PotX =
18.7500
Pot =
6.2500 6.2500 PotX =
7.1440 9.8230 7.1440 18.7515 25.0023 18.7515 42.8583 52.6801 42.8583
Pot =
1.0e-003 *
0.3815 0.7629
%%第28次迭代 X =
0 0 0 0 0 0 7.1440 9.8230 7.1440 0 0 18.7515 25.0023 18.7515 0 0 42.8583 52.6801 42.8583 0 100.0000 100.0000 100.0000 100.0000 100.0000
num =
28
3、波形图
matlab软件在使用有限差分法研究静电场边值问题中有着重要的作用,它能够快捷有效并且准确的解决边值问题,是解决计算相对复杂问题的有效工具。由于很久没有用过matlab
程序,忘记了matlab的函数使用和初值定义方法等,导致实验的进度十分缓慢。对于编程思路,理清了有限差分法的概念就使之变得容易很多,所以我复习了优先差分法的求解方法,并自己做了一遍题,思路就有了,后期编程就是要知道运用什么函数就可以了。
相关推荐: