实验内容:
使用有限差分法求解无限长直的金属槽内的电位分布
实验源码:
%控制宽度
Length = 50; %长度
Width = 50; %宽度
Height = 1:1:50;
%控制轴的位置
Var_Xz = 25;
Var_Yz = 10;
Values1 = zeros(Width,Length); %构造一个Width * Length的0矩阵
for m1 = 1 : Length %将金属板盖设置为100V
Values1(Width,m1)=100;
end
m=1;t=0;k=0;
Values2 = Values1;
while(m>0.001)
m=0;
k=k+1; %迭代次数
%看做为网格,就是计算完成一个网格里的所有值与最初始的值对比误差
for i=2:Width-1 %控制行;计算列值
for j=2:Length-1 %控制列;计算行值
Values2(i,j)= (Values1(i,j+1) + Values1(i+1,j) + Values1(i-1,j) + Values1(i,j-1)) / 4;
t=(Values2(i,j) - Values1(i,j)); % v2 与 v1 偏差
if(t>m) %精度比较控制
m=t;
end
end
end
Values1=Values2;
end
%xoy面等势线截面
subplot(2,3,[1,2]);
contour(Values2,40); %矩阵的等高线图
xlabel("x轴");
ylabel("y轴");
title(['1.xoy面等势线截面图','迭代次数:',num2str(k),'次'],'fontsize',10);
%xoy面电势分布
subplot(2,3,3);
face_xoy = surface(Values1);
face_xoy.FaceColor = 'flat';
face_xoy.EdgeColor = 'none';
axis([0,50,0,50]);
xlabel("x轴");
ylabel("y轴");
title("2.xoy面电势分布图",'fontsize',10);
%---------------------------------------------
%yoz面电势分布--当 x = Var_Xz
subplot(2,3,4);
yozValues = repmat(Values1(:,Var_Xz),1,50);
face_yoz = surface(yozValues);
face_yoz.EdgeColor = 'none';
axis([0,50,0,50]);
xlabel("z轴");
ylabel("y轴");
title(["3.yoz面电势分布-x = ",num2str(Var_Xz)],'fontsize',10);
%xoz面电势分布--当 y = Var_Yz
subplot(2,3,5);
xozValues = repmat(Values1(Var_Yz,:).',1,50);
face_xoz = surface(xozValues);
face_xoz.EdgeColor = 'none';
axis([0,50,0,50]);
xlabel("z轴");
ylabel("x轴");
title(["4.xoz面电势分布-y = ",num2str(Var_Yz)],'fontsize',10);
%截取一部分的立方体电势图
subplot(2,3,6);
[X, Y] = meshgrid(0:1:50, 0:1:50);
Z = zeros(size(X));
CO = Z; % blue
CO1 = Z * 50;
%xoy两面
xy1 = surf(X,Y,Z,Values1);hold on;
xy2 = surf(X,Y,Z+50,Values1);hold on;
%xoz两面
xz1 = surf(Y,Z,X,CO);hold on;
xz2 = surf(Y,Z+50,X,CO-10);hold on;
%yoz面
yz1 = surf(Z,Y,X,CO);hold on;
yz2 = surf(Z+50,Y,X,CO);hold on;
xz1.EdgeColor = 'none';
xz2.EdgeColor = 'none';
yz1.EdgeColor = 'none';
yz2.EdgeColor = 'none';
xy1.EdgeColor = 'none';
xy2.EdgeColor = 'none';
xlabel("x轴");
ylabel("y轴");
zlabel("z轴");
axis([0,60,0,60,0,60]);
title("5.带盖金属3D电势分布图");
实验截图
- 有需要的可以一起交流学习、觉得有帮助的话,点个赞再走啦、谢谢啦