《电磁场与电磁波演示验证实验》由会员分享,可在线阅读,更多相关《电磁场与电磁波演示验证实验(5页珍藏版)》请在金锄头文库上搜索。
1、基于有限差分法的二维边值问题的数值分析一、实验目的1.掌握简单二维边值问题的分离变量求解方法;2.通过有限差分法的实现来熟悉数值法的求解过程。二、实验内容及步骤具体参数为:盖板电位U=100V,其余三面电位=0,尺寸a=10,b=10;求解矩形槽内电位函数分布1. 在matlab中分析基于分离变量法的解析解:2. 利用简单迭代法求解,与解析法结论对比,分析求解结果的精确度。分析过程至少包括:在网格尺寸为0.1和1两种条件下,两次迭代差值最大为10-10时的分析结论; 结论: 1.当网格尺寸为0.1时,可从上图中观察到电位函数分布基本与解析解一致;2.当网格尺寸为1时,可从上图对比中看出与解析函
2、数有较大误差;3.尺寸取得越小,有限差分法取得的函数解越接近于解析解,可计算量会相应增大3.利用超松弛迭代法分析,选择松弛因子,分析其对收敛速度(即迭代次数)的影响,并确定最优值。分析过程至少包括:在网格尺寸为0.1和1两种条件下,两次迭代差值最大为10-10时,松弛因子随迭代次数的变化,得到对应的最优松弛因子。根据最佳收敛因子公式:=2/(1+sin(pi/(p-1),可求得网格尺寸为1时opt1=1.5279;当网格尺寸为0.1时,opt2=1.9391 结论: 1.当取最佳收敛因子时,迭代次数最小,收敛速度最快. 越靠近最佳收敛因子,收敛速度越快.三附录 1.解析法程序: for k=1
3、:length(n) for i=1:length(X) for j=1:length(Y)s(i,j)=z*sinh(n(k)*pi*Y(j)/a)*sin(n(k)*pi*X(i)/a)/n(k)/sinh(n(k)*pi*b/a); end end phai=phai+s;end %循环求解电位函数解析解2.简单迭代法程序: gridsize=0.1;%网格尺寸nodenumx=a/gridsize;nodenumy=b/gridsize; %离散节点数jingdu=10(-10); %求解精度num=0; %迭代次数初始化%赋初值v1=zeros(nodenumy+1,nodenumx
4、+1);v1(nodenumy+1,:)=ones(1,nodenumx+1)*U;v2=v1;%前后两次迭代值r=zeros(nodenumy-1,nodenumx-1); %迭代差值d=3; %求解精度初始化 可以赋值任意大于精度的值while(djingdu) num=num+1; v1=v2; for I=2:nodenumy for J=2:nodenumx v2(I,J)=(v1(I,J+1)+v1(I+1,J)+v1(I-1,J)+v1(I,J-1)/4;%简单迭代 r(I,J)=abs(v2(I,J)-v1(I,J); end end d=max(max(r);end3超松弛迭
5、代法程序: for i=2:M for j=2:M+1 x(i,j)=j-1; endend y=x; %赋初值flag=1;N= 0 0 0 0 0 0 0 0 0 0 0; %迭代次数赋初值for z=1:11while flag=1 for i=2:M for j=2:M b=0.25*(y(i-1,j)+x(i+1,j)+y(i,j-1)+x(i,j+1); y(i,j)=x(i,j)+a1(z)*(b-x(i,j); end end %循环迭代 if max(abs(x-y)werror flag=0; %跳出循环 end x=y; N(z)=N(z)+1; %迭代次数加1 endflag=1;for i=2:M for j=2:M+1 x(i,j)=j-1; endendy=x; %切记再赋初值end