基于有限差分法的二维边值问题的数值分析
一、实验目的
1.掌握简单二维边值问题的分离变量求解方法; 2.通过有限差分法的实现来熟悉数值法的求解过程。
二、实验内容及步骤
ybUax
具体参数为:盖板电位U=100V,其余三面电位=0,尺寸a=10,b=10; 求解矩形槽内电位函数分布
1. 在matlab中分析基于分离变量法的解析解:
1
解析法沿一半宽度处电压随长度的变化25解析法沿一半长度处电压随宽度的变化10090208070电压(V)电压(V)156050403010520100
2. 利用简单迭代法求解,与解析法结论对比,分析求解结果的精确度。分析过
-10
程至少包括:在网格尺寸为0.1和1两种条件下,两次迭代差值最大为10时的分析结论;
0123456长度(m)7891000123456宽度(m)78910
沿一半宽度处电压随长度的变化25网格尺寸=0.190 沿一半长度处电压随宽度的变化100 2080网格尺寸=0.170电压(V)15------网格尺寸=1电压(V)605040301052010------网格尺寸=10 0123456长度(m)789100 0123456宽度(m)78910
结论: 1.当网格尺寸为0.1时,可从上图中观察到电位函数分布基本与解析解
一致;
2.当网格尺寸为1时,可从上图对比中看出与解析函数有较大误差; 3.尺寸取得越小,有限差分法取得的函数解越接近于解析解,可计算量会相应增大
3.利用超松弛迭代法分析,选择松弛因子,分析其对收敛速度(即迭代次数)的影响,并确定最优值。分析过程至少包括:在网格尺寸为0.1和1两种条件下,
2
两次迭代差值最大为10-10时,松弛因子随迭代次数的变化,得到对应的最优松弛因子。
240网格尺寸为1220200180160 迭代次数140120100806040 11.11.21.31.41.5超松弛因子1.61.71.81.92.5x 104 网格尺寸为0.121.5迭代次数10.50 11.11.21.31.41.51.6超松弛因子1.71.81.92
根据最佳收敛因子公式:α=2/(1+sin(pi/(p-1))),可求得网格尺寸为1时αopt1=1.5279;当网格尺寸为0.1时,αopt2=1.9391
结论: 1.当α取最佳收敛因子时,迭代次数最小,收敛速度最快. α越靠近最
佳收敛因子,收敛速度越快.
三.附录
1.解析法程序: for k=1: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 %循环求解电位函数解析解
3
2.简单迭代法程序:
gridsize=0.1;%%网格尺寸
nodenumx=a/gridsize;nodenumy=b/gridsize; %离散节点数 jingdu=10^(-10); %%求解精度 num=0; %%迭代次数初始化
%%%%?赋初值
v1=zeros(nodenumy+1,nodenumx+1);v1(nodenumy+1,:)=ones(1,nodenumx+1)*U;v2=v1;
%%前后两次迭代值
r=zeros(nodenumy-1,nodenumx-1); %迭代差值
d=3; %求解精度初始化 可以赋值任意大于精度的值 while(d>jingdu) 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)); end
3.超松弛迭代法程序:
for i=2:M
for j=2:M+1 x(i,j)=j-1; end end y=x; %赋初值
flag=1;N=[ 0 0 0 0 0 0 0 0 0 0 0]; %迭代次数赋初值 for z=1:11 while 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)) flag=0; %跳出循环 end x=y; N(z)=N(z)+1; %迭代次数加1 end flag=1; 4 for i=2:M for j=2:M+1 x(i,j)=j-1; end end y=x; %切记再赋初值 end 5