2017-04-10 62 views
0

我能寫出一個MATLAB程序,繪製兩個金屬板之間的1D拉普拉斯鬆弛,以使用Jacobi方法找到平衡電位。在MATLAB中的3D拉普拉斯鬆弛

我會說實話,我不能完全肯定,我明白我做了什麼,但這裏是代碼的相關部分:

N=100; 
V = zeros(N,N); 
V(1,:)=-1; 
V(N,:)=1; 

for n=1:400 
    for i=2:99 
     for j=2:99 
      V(i,j)=(V(i-1,j)+V(i+1,j)+V(i,j+1)+V(i,j-1))*0.25; 
     end 
    end 
end 

,這是它的樣子:

enter image description here

我想知道是否可以使用相同的方法做類似的事情,但在3D中。我想在3D中看到類似的東西,一個3D潛在...盒子。

我使用類似的公式,我在試圖找到「計算物理NJ佐丹奴& H.中西,方程(5.8)。」:

V(i,j,k) = [V(i+1,j,k) + V(i-1,j,k) + V(i,j+1,k) + V(i,j-1,k) + V(i,j,k+1) + V(i,j,k-1)] * (1/6); 

這裏是我一直在嘗試新的代碼去工作:

N=10; % Used smaller number to reduce processing time. 
V = zeros(N,N,N); 
V(:,:,1)=-1; %i am using planes instead of axis as "Insulators" 
V(:,:,N)=1; 

for n=1:100 
    for i=2:99 
     for j=2:99 
      for k=2:99 
       V(i,j,k)=(V(i+1,j,k)+V(i-1,j,k)+V(i,j+1,k)+V(i,j-1,k)+V(i,j,k+1)+V(i,j,k-1))*(1/6); 
      end 
     end 
    end 
end 

,我在V(i,j,k)是線得到一個Index exceeds matrix dimensions.

所以我再次嘗試獲取上面鏈接的2D圖形的3D版本。 *另外,如果有人可以解釋一點(不是MATLAB部分,而是數學部分),我會非常感謝,我在這裏用這個方程式來做什麼,以及這可以用來做什麼?

非常感謝您的幫助。

編輯:我忘了問:你會怎樣繪製這個3D數組?

回答

0

您已定義N但在此過程中未使用它。由於您的值爲i-1j-1,因此您需要從2開始。並且因爲您的值有i+1j+1,您需要以N-1結束。因此,工作代碼如下所示:

N=10; % Used smaller number to reduce processing time. 
V = zeros(N,N,N); 
V(:,:,1)=-1; %i am using planes instead of axis as "Insulators" 
V(:,:,N)=1; 

for n=1:1 
    for i=2:N-1 
     for j=2:N-1 
      for k=2:N-1 
       V(i,j,k)=(V(i+1,j,k)+V(i-1,j,k)+V(i,j+1,k)+V(i,j-1,k)+V(i,j,k+1)+V(i,j,k-1))*(1/6); 
      end 
     end 
    end 
end 

而且,第一for-loop似乎無所事事在這一段代碼,您所提供。