Matlab编程用迭代有限差分求电势分布
题目要求
Matlab编程用迭代有限差分求电势分布,用程序画出等位线,求出电势以后用mesh()看2.5维分布,用旋转按钮来旋转2.5维立体图
分析: 此处的处理方法为有限差分迭代法,某点的电势 = 它周围四点电势的平均值, 在此思想下,我们可以写出如下程序,大致分析见如下代码及注释:
%设置矩阵大小,x:y = 10:5, 为方便处理边界条件,多加一行一列变为101、51
x_line=101;y_line=51;
% v1和v2分别是一次迭代前的矩阵和迭代后的矩阵,先对它进行初始化
v1=zeros(y_line,x_line);
for j=2:x_line-1
v1(y_line,j)=10;%设置边界条件
end
v2=v1;m=1;t=0;k=0;
%m即误差epsilon
while(m>0.00001)
k=k+1
m=0;
%对矩阵中的元素进行差分迭代
for i=2:y_line-1
for j=2:x_line-1;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=(v2(i,j)-v1(i,j));
if(t>m)
m=t;
end
end
end
v1=v2;
end
subplot(1,2,1),mesh(v2)
axis([0,x_line,0,y_line,0,10])
subplot(1,2,2),contour(v2,32)
%可以认为mesh是2.5维, contour是2维
建议使用matlab中的实时脚本进行编辑,比较方便,可以得到结果为:
「含第二类边界条件的可以看我的另一篇文章:matlab差分迭代解决静电场边界问题(含第二类边界条件)https://blog.csdn.net/Mr_tea_milk/article/details/115328052」