Python矩阵乘法三维数组

2024-07-07 08:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用数值方法求解偏微分方程,在此过程中,我遇到了一个类似于三维空间维的三重嵌套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]) 

一开始可能看起来很吓人,但很简单。我有一个三维矩阵,代表一个固体块状材料,其中每个点代表当前温度。迭代计算的每个点的下一个温度是考虑到该点旁边的每个点-总共SO6。在一维固体的情况下,解只是一个简单的矩阵乘法。有没有机会用一个简单的矩阵解决方案来表示上面的三回路系统,比如一维情况?在

谨致问候!在


Tags: 方法infor过程时间情况range代表
2条回答

首先,你需要对你的术语更加小心。“矩阵”是一个二维的数字数组。所以你说的是数组。Numpy,或者更好的是Scipy,有一个称为ndarray的数据类型。你需要非常小心地操作它们,因为尽管它们有时被用来表示矩阵,但是有一些操作可以在二维数组上执行,这些操作在数学上对矩阵是不合法的。在

我强烈建议您使用@和not*来执行一维或二维矩阵的乘法,并确保添加代码来检查您所做的操作在数学上是合法的。作为一个简单的例子,Python允许您向nxn矩阵添加一个1xn或nx1向量,即使这在数学上并不正确。它允许这样做的原因是,正如上面提到的,因为Python中没有真正的矩阵类型。在

很可能你可以用一个3-D数组来重新描述你的问题,并通过实验找到你要执行的特定操作。请记住,线性代数的规则在Python中只是随意地应用。在

有了numpy,你可以很容易地做这些矩阵运算

例如3x3矩阵

将numpy作为np导入

T=随机随机(3,3,3)

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

相关问题 更多 >