有限差分法MATLABプログラム
2265 ワード
長直接金属矩形溝、長a=40、幅b=20が設けられ、その側壁と底面電位はいずれもゼロであり、トップカバー電位は100 V(相対値)であり、溝内電位分布を求める.
ガウス反復を用いた解コードは以下の通りである(隣接する2回の反復値の最大許容誤差は0.001).
超緩和法を用いた手順は以下の通りである.
役に立つと思ったらいいですね~質問があったら下にメッセージを残して、できるだけ返事します~
ガウス反復を用いた解コードは以下の通りである(隣接する2回の反復値の最大許容誤差は0.001).
a=zeros(21,41);
a(1,:)=100;
b=zeros(19,39);
c=eye(19,39);
count=1;
d=0;
while(count==1)
m=0;
for i=2:1:20
for j=2:1:40
b(i-1,j-1)=a(i,j);
a(i,j)=0.25*(a(i-1,j)+a(i+1,j)+a(i,j-1)+a(i,j+1));
c(i-1,j-1)=abs(a(i,j)-b(i-1,j-1));
if(c(i-1,j-1)<0.001)
for k=1:1:19
for n=1:1:39
if(c(k,n)<0.00001)
m=m+1;
else
m=0;
break;
end
end
if(m==0)
break;
end
if(m==741)
count=0;
end
end
end
if(count==0)
break;
end
end
if(count==0)
break;
end
end
d=d+1;
end
d
a
超緩和法を用いた手順は以下の通りである.
d=zeros(1,10);
h=0;
for e=1:0.1:1.9
a=zeros(21,41);
a(1,:)=100;
b=zeros(19,39);
c=eye(19,39);
count=1;
g=0;
while(count==1)
m=0;
for i=2:1:20
for j=2:1:40
b(i-1,j-1)=a(i,j);
a(i,j)=a(i,j)+e*0.25*(a(i-1,j)+a(i+1,j)+a(i,j-1)+a(i,j+1)-4*a(i,j));
c(i-1,j-1)=abs(a(i,j)-b(i-1,j-1));
if(c(i-1,j-1)<0.001)
for k=1:1:19
for n=1:1:39
if(c(k,n)<0.001)
m=m+1;
else
m=0;
break;
end
end
if(m==0)
break;
end
if(m==741)
count=0;
end
end
end
if(count==0)
break;
end
end
if(count==0)
break;
end
end
g=g+1;
end
h=h+1;
e
d(1,h)=g;
end
d
役に立つと思ったらいいですね~質問があったら下にメッセージを残して、できるだけ返事します~