求教matlab三维等势面画法
close;clear;clc;m=120;n=120;
Va=zeros(m,n);%计算矩阵
Vb=zeros(m,n);%初始矩阵
Vc=zeros(m,n);%误差矩阵
a=2/(1+sin(pi/(m-1)));%正方形磁场收敛因子
Va(1,1:3*m/4-1)=30;
Va(1,3*m/4:m)=10;
p=ones(m,n);%判断矩阵
p(m,:)=0;
p(:,n)=0;
p(1,:)=0;
p(:,1)=0;
k=0;
while sum(sum(abs(p)))~=0
k=k+1;
Vb=Va;
for i=2:m-1
for j=2:n-1
Va(i,j)=Vb(i,j)+a/4*(Va(i-1,j)+Va(i,j-1)+Vb(i+1,j)+Vb(i,j+1)-4*Vb(i,j));%超松弛迭代
if abs(Va(i,j)-Vb(i,j))<1e-3
p(i,j)=0;
Vc(i,j)=abs(Va(i,j)-Vb(i,j));
end
end
end
end
max=max(max(Vc));
A=Va;
B=flipud(Va);
C=rot90(Va,2);
D=fliplr(Va);
E=;
contour(E,30);
grid on
以上是二维等势线,已经画出。
close;clear;clc;
m=8;n=8;o=8;
Va=zeros(m,n,o);%计算矩阵
Vb=zeros(m,n,o);%初始矩阵
a=2/(1+sin(pi/(m-1)));%正方形磁场收敛因子
Va(4,1:3*m/4-1,1)=30;
Va(4,3*m/4:m,1)=10;
p=ones(m,n,o);%判断矩阵
p(m,:,:)=0;
p(:,n,:)=0;
p(:,:,o)=0;
p(1,:,:)=0;
p(:,1,:)=0;
p(:,:,1)=0;
count=0;
while sum(sum(sum(abs(p))))~=0
count=count+1;
Vb=Va;
for i=2:m-1
for j=2:n-1
for k=2:o-1
Va(i,j,k)=Vb(i,j,k)+a/6*(Va(i-1,j,k)+Va(i,j-1,k)+Va(i,j,k-1)+Vb(i+1,j,k)+Vb(i,j+1,k)+Vb(i,j,k+1)-6*Vb(i,j,k));%超松弛迭代
if abs(Va(i,j,k)-Vb(i,j,k))<1e-3
p(i,j,k)=0;
end
end
end
end
end
三维矩阵Va已经求出,怎么画三维等势面?在线等!!!!!!
页:
[1]