【问题标题】:Solving linear equations where each matrix element itself is matrix (2D) and each variables are 1D vectors求解线性方程,其中每个矩阵元素本身都是矩阵 (2D),每个变量都是 1D 向量
【发布时间】:2019-05-26 18:09:22
【问题描述】:

这个问题的简单例子是:

就我而言:

非常感谢任何想法/建议。

【问题讨论】:

  • 所有 2d 的形状都一样吗?它们可以组成一个 3d 数组吗?
  • 是的,所有的矩阵元素都是相同形状的正方形。我正在考虑用这些二维矩阵元素制作一个大方阵,然后将这些 b 元素呈现给单个数组。然后使用 linalg.solve 得到单个 X 向量,然后将其分成每个 X_i。请让我知道,如果这种方法是正确的。或者还有其他更有效的方法。
  • 最简单的方法是将所有矩阵堆叠到一个矩阵中 - 与右侧的 b 向量相同,然后以这种方式求解。

标签: python numpy scipy linear-equation


【解决方案1】:

只要尺寸一致,A 实际上“只是”一个矩阵,即使它是由更小的矩阵构成的。这是一个相对一般的示例,显示了尺寸必须如何变化:

import numpy
import numpy.linalg

l, m, n, k = 2, 3, 4, 5

# if these are known, obviously just define them here.
A11 = numpy.random.random((l, m))
A12 = numpy.random.random((l, n))
A21 = numpy.random.random((k, m))
A22 = numpy.random.random((k, n))
x1 = numpy.random.random((m,))
x2 = numpy.random.random((n,))

A = numpy.bmat([[A11, A12], 
                [A21, A22]])
x = numpy.concatenate([x1, x2])

b = numpy.linalg.solve(A, x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多