新人求助:大学老师要求编程实现差分法求解下题。。求大神指导完善。我不懂编成一个完整的程序。。
设有一个截面为矩形的无限延伸导体槽, 槽的宽为40m , 高为24 m , 槽的盖板(导体) 同两侧面绝缘, 盖板电位等于100 V , 周边电位等于0 , 如图2 所示, 试分析槽内的电位分布.宽为15,高为9的编程如下,现在我要求宽为40,高为24的程序,我把程序直接改数字,输出的图形不完整。有谁能帮我改不,本人知识有限,没接触过这方面的东西,现在老师要求,没办法了
h = 1 ; % 步长
v0 = 100 ; % 导体槽盖电位
hx = 15 * h + 1 ; % 网格横向节点数
hy = 9 *h + 1 ; % 网格纵向节点数
%- - - - - - - - - - - - - - - - - - 设置零级近似值- - - - - - - - -
v1 = zeros (hy , hx) ; % 用零矩阵对网格各节点电位进行初值化
v1 (hy , :) = ones (1 ,hx) * v0 ; % 对沿盖板各节点赋初值100
v1 (2 :hy - 1 ,2 :hx - 1 ) = ones (hy - 2 ,hx - 2 ) * v0 / 2 ; % 对内节点赋一任意初值
v2 = zeros (hy , hx) ; % 初值化结果变量
%- - - - - - - - - - - - - - - - - - 以v1 开始迭代计算v2 - - - - - -
for i = 1 :hy
for j = 1 :hx
if i ==hy
v2 (i , j) = v0 ; % 盖板电位100
elseif i == 1| j == 1| j == hx
v2 (i , j) = 0 ; % 周边电位0
else
v2 (i , j) = (v1 (i , j - 1 ) + v1 (i , j + 1 ) + v1 (i - 1 ,j) + v1 (i + 1 ,j) ) / 4 ;
end
% 拉普拉斯方程
end
end
%- - - - - - - - - - - - - - - 用v2 代替v1 ,以v1 循环迭代计算v2 - - for k = 1 :500 % 循环次数
v1 = v2 ;
for i = 1 :hy
for j = 1 :hx
if i == hy
v2 (i , j) = v0 ; % 盖板电位100
elseif i == 1| j == 1| j == hx
v2 (i , j) = 0 ; % 周边电位0
else
v2 (i , j) = (v1 (i , j - 1 ) + v1 (i , j + 1 ) + v1 (i - 1 ,j) + v1 (i + 1 ,j) ) / 4 ;
end % 拉普拉斯方程
end
end
end
%- - - - - - - - - - - - 结果成图- - - - - - - - - -
subplot (1 ,2 ,1) % 分割图形窗口为1 ×2 个子坐标系,且第1个为当前坐标系
mesh ( v2) % 绘三维曲面图
h1 = mesh ( v2) ;
set ( h1 ,'LineWidth' ,1 ,'EdgeColor' ,' b' )
xlabel('b'),ylabel('h'),zlabel('v')
axis ( [ 0 ,42 ,0 ,25 ,0 ,100 ]) ;
subplot (1 ,2 ,2)
contour ( v2 ,'k-' ) % 绘等值线图
xlabel('b'),ylabel('h')