MATLAB 中的 3D 拉普拉斯松弛

3D Laplace Relaxation in MATLAB

我能够编写一个 MATLAB 程序,绘制两个金属板之间的一维拉普拉斯弛豫,以使用雅可比法找到平衡电位。

老实说,我不确定我是否理解我所做的,但这是代码的相关部分:

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

这是它的样子:

我想知道是否可以使用相同的方法在 3D 中做类似的事情。我想在 3D 中可视化类似的东西,一个 3D 潜力...框。

我尝试使用在 "Computational Physics. N. J. Giordano & H. Nakanishi, Eq.(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 数组?

您已定义 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 在您提供的这段代码中似乎什么也没做。