當前位置:編程學習大全網 - 編程軟體 - 用matlab使用超松弛法確定16個網格點的電位,題目如下圖,求詳細代碼

用matlab使用超松弛法確定16個網格點的電位,題目如下圖,求詳細代碼

Matlab 程序如下:

M=6;

N=6; %網格節點數6*6=36個

U1=ones(N,M); %行列二維數組

m=5,n=5; %橫縱向網格數

U1(1,:)=ones(1,M)*50; %條件邊界值

U1(N,:)=ones(1,M)*100;

for i= 1:N

U1(i,1)=0;

U1(i,M)=100;

end

t1=(cos(pi/m)+cos(pi/n))/2;

w=2/(1+sqrt(1-t1*t1));

U2=U1; P=1;T=0; %初始化

k=0

while(P>1e-5) %由v1叠代,算出v2,叠代精度1e-5

k=k+1; %計算叠代次數

P=0;

for i=2:N-1; %行循環

for j=2:M-1; %列循環

U2(i,j)=U1(i,j)+(U1(i,j+1)+U1(i+1,j)+U2(i-1,j)+U2(i,j-1)-4*U1(i,j))*w/4; %差分方程

T=abs(U2(i,j)-U1(i,j));

if (T>P) P=T; end

end

end

U1=U2;

end

subplot(1,2,1),mesh(U2); %三維圖

axis([0,6,0,6,0,100]);

subplot(1,2,2),contour(U2,15); %等電位線

hold on;

x=1:1:M; y=1:1:N

[xx,yy]=meshgrid(x,y); %柵格

[Gx,Gy]=gradient(U2,0.6,0.6); %梯度

quiver(xx,yy,Gx,Gy,-1.0,'r'); %根據梯度畫箭頭

axis([-1.5,M+2.5,-2,13]); %坐標邊框設置

plot([1,1,M,M,1],[1,N,N,1,1],'K'); %畫導體邊框

text(M/2-0.5,N+0.4,'100V','fontsize',6);%上標註

text(M/2,0.3,'50V','fontsize',6);%下標註

text(-0.3,N/2,'0V','fontsize',5);%左標註

text(M+0.1,N/2,'100V','fontsize',5);%右標註

hold off

  • 上一篇:安卓手機有沒有能做3d模型的軟件?
  • 下一篇:為大神祈禱!華中數控系統(車床)加工工藝、樣品分析及車床編程(附)
  • copyright 2024編程學習大全網