首页 > 解决方案 > Python矩阵乘法3d数组

问题描述

我试图以数字方式解决 PDE,在此过程中,我遇到了类似于 3 空间维度的三重嵌套 for 循环的问题。该构造嵌套在另一个时间循环中,因此您可以想象对于足够大的节点数,计算需要很长时间。代码块看起来像这样

    for jy in range(0,cy-1):
        for jx in range(0,cx-1):
            for jz in range(0,cz-1):
                T[n+1,jx,jy,jz] = T[n,jx,jy,jz] + s*(T[n,jx-1,jy,jz] - 2*T[n,jx,jy,jz] + T[n,jx+1,jy,jz]) + s*(T[n,jx,jy-1,jz] - 2*T[n,jx,jy,jz] + T[n,jx,jy+1,jz]) + s*(T[n,jx,jy,jz-1] - 2*T[n,jx,jy,jz] + T[n,jx,jy,jz+1]) 

起初它可能看起来很吓人,但很容易。我有一个代表固体散装材料的 3 维矩阵,其中每个点代表当前温度。在计算每个点的迭代计算下一个温度时,会考虑到该点旁边的每个点 - 所以总共 6 个。在一维实体的情况下,解决方案只是一个简单的矩阵乘法。有没有机会在一个简单的矩阵解决方案中表示上面的 3 循环系统,比如 1D 案例?

此致!

标签: pythonmatrix

解决方案


使用 numpy,您可以轻松地进行这些类型的矩阵运算,

例如对于 3x3 矩阵

将 numpy 导入为 np

T = np.random.random((3,3,3))

T = T*T - 2*T ... 等等。


推荐阅读