Ru1 发表于 2019-4-15 14:27:50

求教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]
查看完整版本: 求教matlab三维等势面画法