【问题标题】:3D Laplace Relaxation in MATLABMATLAB 中的 3D 拉普拉斯松弛
【发布时间】:2017-04-10 00:41:16
【问题描述】:

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

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

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 潜力...框。

我尝试使用我在“计算物理学。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 数组?

【问题讨论】:

    标签: matlab numerical-methods


    【解决方案1】:

    您已经定义了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 在您提供的这段代码中似乎没有做任何事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多